There is no current 2D drawing object

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
mbuettner
Beiträge: 88
Registriert: 14.05.2010 15:53
Computerausstattung: 3 GB RAM, Windows 7 32-Bit Home Premium
Wohnort: daheim
Kontaktdaten:

There is no current 2D drawing object

Beitrag von mbuettner »

Guten Abend @all,

Ich habe mal wieder ein Problem mit 3.3. Ich will mal ein Game of Life-Spiel programmieren, doch leider bringt er mir nach dem zeichnen des Spielfeldes immer die Meldung:
Error at line 13: There is no current 2D drawing object.
Anscheinend kommt die Meldung, weil in Zeile 50 die Prozedur Spielfeld() aufgerufen wird, allerdings nur wenn der Fensterinhalt neu gezeichnet werden muss, oder wird #PB_Event_Repaint auch beim ersten Zeichnen ausgeführt.

Code: Alles auswählen

; Game of Life
; (c) by Markus Büttner
Structure Feld
  id.l
  xkoor.l
  ykoor.l
  zustand.l
EndStructure  

Dim Felder.Feld(499)

Procedure LineBox(id,x1,y1,x2,y2)
  LineXY(x1,y1,x2,y1)
  LineXY(x1,y1,x1,y2)
  LineXY(x2,y1,x2,y2)
  LineXY(x1,y2,x2,y2)
EndProcedure

Procedure Spielfeld()
  For x = 1 To 500 Step 20
    Debug "X: " + Str(x)
    For y = 1 To 400 Step 20 
      LineBox(x/20*y/20,x,y,x+20,y+20)
      Debug "Y: " + Str(y)
      Debug "Y/20+1:" + Str(y/20+1)
    Next y
  Next x
EndProcedure

If OpenWindow(0,0,0,505,500,#PB_Window_SystemMenu,"Game of Life")
  If StartDrawing(WindowOutput())
    Spielfeld()
    StopDrawing()
  Else
    MessageRequester("Game of Life","Kann nicht zeichnen",0) : End
  EndIf
  For x = 1 To 25
    For y = 1 To 20
      Felder(x*y)\id = x*y
      Felder(x*y)\xkoor = x
      Felder(x*y)\ykoor = y
      Felder(x*y)\zustand = 0
    Next y
  Next x 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Quit = 1
      Case #PB_Event_Repaint
        Spielfeld()
    EndSelect
  Until Quit = 1
EndIf
End
Euer Hilfesuchender
Markus
Bild
Bild
Die täglich beförderte Datenmenge des Internets beträgt 415 Petabyte oder 445.602.856.960 Megabyte!
Benutzeravatar
HeX0R
Beiträge: 3055
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: There is no current 2D drawing object

Beitrag von HeX0R »

Du musst natürlich erst wieder ein StartDrawing ausführen, bevor du Zeichenoperationen ausführen kannst.

Am besten packst du das gleich mit in die Spielfeld-Prozedur.
Antworten