Achso, dann habe ich die ganze Zeit den Nutzen von ExamineKeyboard() falsch verstanden.
Und wieder was gelernt!
programm anhalten
@thomas obermeier
einen richtigen befehl, wie WaitWindowEvent() für normale fenster, gibt es für vollbild nicht. wie man dein problem löst, hängt davon ab, wie dein spiel aufgebaut ist. vielleicht hast du das so gemacht, dass sich das fahrzeug von allein vorwärts bewegt und man nur die lenkung kontrolliert. aber in jedem fall benutzt du ja bestimmt variablen für die koordinaten, an denen die sprites jeweils gezeichnet werden.
wenn du nun dein spiel so aufbaust, das ein teil zum berechnen der neuen koordinaten zuständig ist und ein anderer teil die sprites dann zeichnet, dann kannst du das neu berechnen einfach überspringen, sobald du fest gestellt hast, dass dein auto an einen stein gefahren ist, und die sprites werden dann eben in jedem schleifen durchgang and die selbe stelle gezeichnet.
einen richtigen befehl, wie WaitWindowEvent() für normale fenster, gibt es für vollbild nicht. wie man dein problem löst, hängt davon ab, wie dein spiel aufgebaut ist. vielleicht hast du das so gemacht, dass sich das fahrzeug von allein vorwärts bewegt und man nur die lenkung kontrolliert. aber in jedem fall benutzt du ja bestimmt variablen für die koordinaten, an denen die sprites jeweils gezeichnet werden.
wenn du nun dein spiel so aufbaust, das ein teil zum berechnen der neuen koordinaten zuständig ist und ein anderer teil die sprites dann zeichnet, dann kannst du das neu berechnen einfach überspringen, sobald du fest gestellt hast, dass dein auto an einen stein gefahren ist, und die sprites werden dann eben in jedem schleifen durchgang and die selbe stelle gezeichnet.
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600,32,"fllscrn")
Global x.l=100
Global y.l=300
Global ende=0 ;0 für weiter 1 für schluss
Procedure berechnen()
x+5
If x>200
x=100
y+20
EndIf
If y>=500 ; <------ die abbruch bedingung
ende=1
EndIf
EndProcedure
Procedure zeichnen()
ClearScreen(0)
StartDrawing( ScreenOutput() )
Circle(x,y,4, $00ff00)
LineXY(20,500,500,500,$ff0000)
DrawText(360,40,"<ESC> zum abrechen")
If ende
DrawText(340,60,"<ENTER>, um zu wiedeholen")
EndIf
StopDrawing()
EndProcedure
Repeat
ExamineKeyboard()
If ende=0
berechnen()
ElseIf KeyboardReleased(#PB_Key_Return)
ende=0
x=100
y=300
EndIf
zeichnen()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)