weiter
Code: Alles auswählen
; Darstellung eines "6 aus 49" Lotto-Scheins
; Konstanten für die Fenster- und Layoutgröße
#WindowWidth = 600
#WindowHeight = 500
#GridColumns = 7
#GridRows = 7
#CellSize = 60 ; Größe jedes Quadrats (60x60 Pixel)
#GridStartX = 50 ; X-Startposition des Gitters
#GridStartY = 50 ; Y-Startposition des Gitters
; Farben definieren
#ColorBackground = $FFFFFF ; Weiß
#ColorGrid = $DDDDDD ; Hellgrau für Gitter
#ColorText = $000000 ; Schwarz für Text
#ColorSelected = $FFCC00 ; Gelb für ausgewählte Felder
; Array zur Speicherung der ausgewählten Felder
Dim selectedNumbers(49)
; Fenster öffnen
If OpenWindow(0, 100, 100, #WindowWidth, #WindowHeight, "Lotto Schein 6 aus 49", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; Canvas Gadget erstellen, um die Zeichnung zu ermöglichen
CanvasGadget(0, 10, 10, #WindowWidth - 20, #WindowHeight - 20)
; Prozedur zum Zeichnen des Lotto Scheins
Procedure DrawLottoGrid()
If StartDrawing(CanvasOutput(0))
; Hintergrund zeichnen
Box(0, 0, #WindowWidth - 20, #WindowHeight - 20, #ColorBackground)
; Lotto-Felder zeichnen
For row = 0 To #GridRows - 1
For col = 0 To #GridColumns - 1
x = #GridStartX + col * #CellSize
y = #GridStartY + row * #CellSize
number = row * #GridColumns + col + 1
; Überprüfen, ob die Zahl ausgewählt ist
If selectedNumbers(number)
Box(x, y, #CellSize, #CellSize, #ColorSelected)
Else
Box(x, y, #CellSize, #CellSize, #ColorGrid)
EndIf
; Zahlen in die Felder schreiben
DrawText(x + #CellSize/2 - TextWidth(Str(number))/2, y + #CellSize/2 - TextHeight(Str(number))/2, Str(number), #ColorText)
; Wenn alle 49 Zahlen gezeichnet sind, Schleifen abbrechen
If number >= 49
Break 2
EndIf
Next col
Next row
StopDrawing()
EndIf
EndProcedure
; Initiales Zeichnen des Lotto Scheins
DrawLottoGrid()
; Ereignisschleife für die Benutzerinteraktion
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
If EventGadget() = 0 And EventType() = #PB_EventType_LeftClick
; Mausposition ermitteln
MouseX = GetGadgetAttribute(0, #PB_Canvas_MouseX)
MouseY = GetGadgetAttribute(0, #PB_Canvas_MouseY)
; Überprüfen, ob der Klick innerhalb des Gitters liegt
If MouseX >= #GridStartX And MouseY >= #GridStartY And MouseX < (#GridStartX + #GridColumns * #CellSize) And MouseY < (#GridStartY + #GridRows * #CellSize)
col = (MouseX - #GridStartX) / #CellSize
row = (MouseY - #GridStartY) / #CellSize
number = row * #GridColumns + col + 1
; Status der ausgewählten Zahl umschalten
If selectedNumbers(number)
selectedNumbers(number) = 0
Else
selectedNumbers(number) = 1
EndIf
; Lotto-Schein neu zeichnen
DrawLottoGrid()
EndIf
Case #PB_Event_CloseWindow
Break
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
End
Lieben DANK für Hilfe