Darstellung eines "6 aus 49" Lotto-Scheins

Anfängerfragen zum Programmieren mit PureBasic.
maupa
Beiträge: 105
Registriert: 12.12.2004 12:17

Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von maupa »

hallo, Versuche einem Lotto Schein darzustellen, und wie es ausschaut habe ich mich verrannt und komme nicht
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
Kann mir irgendwer ein Tipp geben oder eine Lösung

Lieben DANK für Hilfe
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von Kiffi »

Sollen wir jetzt die Fehler beheben, die eine AI erzeugt hat? :mrgreen:

Verlagere Procedure DrawLottoGrid() ... EndProcedure aus der If-Abfrage und ändere

Code: Alles auswählen

Dim selectedNumbers(49)
zu

Code: Alles auswählen

Global Dim selectedNumbers(49)
dann läuft's schon mal. Das Ergebnis sieht allerdings wahrscheinlich nicht so aus, wie Du Dir das vorgestellt hast. :wink:
a²+b²=mc²
maupa
Beiträge: 105
Registriert: 12.12.2004 12:17

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von maupa »

@Kiffi
Lieben dank..
ob der Code aus KI ist ?? kann alles möglich sein., Sogar bestimmt wenn ich nachdenke wer mir das zu Verfügung gestellt hat.
aber der Fehler bleibt

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
Global 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
Bild
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von Kiffi »

maupa hat geschrieben: 27.08.2024 00:19 ob der Code aus KI ist ??
zu 100%.

Ich habe vorgestern auch so einen Code aus einer KI bekommen.
maupa hat geschrieben: 27.08.2024 00:19Bild
Wie geschrieben: Verlagere die Procedure aussserhalb des If (OpenWindow(...))

Hier mal die lauffähige Version:

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
Global Dim selectedNumbers(49)

; 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

; 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)
  
  
  
  ; 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
        EndIf
        
      Case #PB_Event_CloseWindow
        Break
    EndSelect
    
  Until Event = #PB_Event_CloseWindow
  
EndIf

End
a²+b²=mc²
maupa
Beiträge: 105
Registriert: 12.12.2004 12:17

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von maupa »

HI,
Stimmt was du schreibst zu 100%, habe selber ausprobiert der Code ist identisch von KI.

für mich nicht zu verstehen das die KI solche Fehler macht , weil es auch ohne Prozedur gleichen schwach sinn am ende ausriebt. am Ziel vorbei.
an Frage vorbei.

Code: Alles auswählen

; Lotto Schein Zeichnen mit PureBasic für "6 aus 49"

; Fenstergröße
#WindowWidth = 500
#WindowHeight = 600

; Lotto-Feldgröße (7 Spalten, 7 Zeilen)
#Columns = 7
#Rows = 7

; Quadratgröße für jedes Feld
#CellSize = 60

; Startkoordinaten für das Raster
#StartX = 50
#StartY = 50

; Initialisierung des Fensters
If OpenWindow(0, 100, 100, #WindowWidth, #WindowHeight, "Lotto Schein 6 aus 49", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  ; Canvas Gadget zum Zeichnen erstellen
  CanvasGadget(0, 10, 10, #WindowWidth - 20, #WindowHeight - 20)

  If StartDrawing(CanvasOutput(0))
    ; Hintergrundfarbe auf Weiß setzen
    Box(0, 0, #WindowWidth - 20, #WindowHeight - 20, #White)

    ; Zeichnen der Lotto Felder
    number = 1
    For row = 0 To #Rows - 1
      For col = 0 To #Columns - 1
        x = #StartX + col * #CellSize
        y = #StartY + row * #CellSize

        ; Zeichnen der Quadrate
        Box(x, y, #CellSize, #CellSize, #Gray)

        ; Zeichnen der Zahlen in die Quadrate
        DrawText(x + 20, y + 15, Str(number), #Black)
        
        ; Hochzählen der Nummern
        number + 1

        ; Abbrechen der Schleife, wenn wir bei 49 sind
        If number > 49
          Break 2
        EndIf
      Next col
    Next row

    StopDrawing()
  EndIf

  Repeat
    Event = WaitWindowEvent()

    ; Fenster schließen
  Until Event = #PB_Event_CloseWindow
EndIf
End

Lieben dank @Kiffi
maupa
Beiträge: 105
Registriert: 12.12.2004 12:17

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von maupa »

Habe noch eine Frage, Beispiel mein letzte Post..
wieso wird mein geschriebene Text korrigiert ??
ist hier auch eine KI im Spiel ??
Das habe ich Geschrieben ursprünglich:
Bild
und das wird gemacht ??
Bild

oder geht an mir was vorbei ??

Danke
Benutzeravatar
mk-soft
Beiträge: 3844
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von mk-soft »

Warum machst du Screenshots. Dafür gibt es 'Mit Zitat antworten'
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von Kiffi »

maupa hat geschrieben: 29.08.2024 11:39Das habe ich Geschrieben ursprünglich:
[...]
und das wird gemacht ??
[...]
bei mir nicht. Hast Du vielleicht ein entsprechendes AddOn in Deinem Browser installiert?
a²+b²=mc²
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von NicTheQuick »

maupa hat geschrieben: 29.08.2024 11:39 Habe noch eine Frage, Beispiel mein letzte Post..
wieso wird mein geschriebene Text korrigiert ??
ist hier auch eine KI im Spiel ??
Moderatoren und Admins könnten deine Beiträge prinzipiell editieren, aber laut Protokoll ist das nicht passiert. Und eine KI ist hier ganz sicher nicht im Spiel :lol: .
Das musst du also selbst gewesen sein mit der Korrektur von "das" und "dass" und der Kommasetzung.

Geht es dir ansonsten gut? Dein Deutsch scheint schlechter geworden zu sein verglichen mit älteren Beiträgen von dir.
maupa
Beiträge: 105
Registriert: 12.12.2004 12:17

Re: Darstellung eines "6 aus 49" Lotto-Scheins

Beitrag von maupa »

@mk-soft
wenn ich auf Zitat gehe wird es automatsch ORG. Text angezeigt, man kann sehen wie der Text sich ändert, da hätte ich 2 mal das gleiche als Zitat, deswegen Screenshots

@Kiffi eben nochmals Google-Chrom, restlos deinstalliert und neu aufgesetzt, ist auch Standard Einstellung und es bleibt so wie ich beschrieben hab.
ja es liegt aber an Google-Chrom dem mit IE habe ich dem Effekt nicht.
Danke, darauf könnte ich selber kommen ich Affe.
da macht Google was böses.. muss nur noch rausfinden was und wie ich es ausschalte.
NicTheQuick hat geschrieben: 29.08.2024 12:39 Geht es dir ansonsten gut? Dein Deutsch scheint schlechter geworden zu sein verglichen mit älteren Beiträgen von dir.
Tjo was heißt das jetzt für mich, muss ich mich Umbringen ?
hatte 3 Schlaganfälle bin froh das ich überhaupt noch Tippen kann

Danke für Konstruktive Hilfe :)
Antworten