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:
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.Error at line 13: There is no current 2D drawing object.
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
EndMarkus
