Probleme mit ESC
Verfasst: 17.10.2005 15:03
Hallo,
ich habe zur Übung ein Spiel aus den PB-Beispielen übernommen, (mit leichten Abänderungen), und habe dazu noch einen Punkte-Zähler eingebaut, denn ich will am Spielende den Punktestand eingeblendet haben (nicht über MessageRequester nach "CloseWindow", sondern direkt mit dem Spielfeld als Hintergrund). Also habe ich eine zweite Endlosschleife eingebaut und das klappt auch mit der Punktestandsanzeige, nur: Diese Schleife läßt sich nicht mit ESC abbrechen, obwohl da exakt die gleichen Befehle für ESC drinstehen wie in der Hauptschleife! Hier ist der Code:
Und dann frage ich mich auch noch, warum nicht über dem Bildschirm "Ballspiel" angezeigt wird, denn das ist doch unter "Openscreen" so vorgegeben. Danke für Infos!
PB42
P.S.: Ich kann das Spiel, nachdem der Ball im Aus ist, nur brutal mit Alt + TAB abbrechen, und dann meldet mir der Debugger den Value NULL für StartDrawing, aber der Punktestand war doch richtig erschienen. Komisch.
ich habe zur Übung ein Spiel aus den PB-Beispielen übernommen, (mit leichten Abänderungen), und habe dazu noch einen Punkte-Zähler eingebaut, denn ich will am Spielende den Punktestand eingeblendet haben (nicht über MessageRequester nach "CloseWindow", sondern direkt mit dem Spielfeld als Hintergrund). Also habe ich eine zweite Endlosschleife eingebaut und das klappt auch mit der Punktestandsanzeige, nur: Diese Schleife läßt sich nicht mit ESC abbrechen, obwohl da exakt die gleichen Befehle für ESC drinstehen wie in der Hauptschleife! Hier ist der Code:
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(640,480,32,"Ballspiel")
x2 = 15 ;Dicke des Schlägers
y2 = 50 ;Länge des Schlägers
x1 = 635 - x2 ;Koordinaten
y1 = 240 - Y2/2 ;für den Schläger linke obere Ecke
kp = 5 ;Tempostufe Schlägerbewegung
w = 0 ;Start-Verzögerung 2,5 sec.
Zaehler = 0 ;für Punkte-Anzeige am Spielende
xb = Random(550) ;Ausgangsposition
yb = Random(480) ;Ball
a = 5 ;Tempostufe Ballbewegung
bewegx = -a
bewegy = -a
Repeat
ClearScreen(0,200,0)
StartDrawing(ScreenOutput())
ExamineKeyboard()
Box(x1,y1,x2,y2) ;Schläger
Circle(xb,yb,5,RGB(0,0,200)) ;Ball
StopDrawing()
FlipBuffers()
If w = 0
w = 1
Delay(2500)
EndIf
xb = xb + bewegx ;Ballbewegung in x-Richtung
yb = yb + bewegy ;Ballbewegung in y-Richtung
If xb < 0 ;Ball-Anschlag linke Bande
bewegx = a ;Bewegungsumkehr
EndIf
If yb < 0 ;Ball-Anschlag obere Bande
bewegy = a ;Bewegungsumkehr
EndIf
If yb > 480 ;Ball-Anschlag untere Bande
bewegy = -a ;Bewegungsumkehr
EndIf
If KeyboardPushed(#PB_key_up)
y1 - kp
If y1 < 0
y1 = 0
EndIf
EndIf
If KeyboardPushed(#PB_key_down)
y1 + kp
If y1 > (480 - y2)
y1 = 480 - y2
EndIf
EndIf
If xb >= x1 And yb > y1-3 And yb < (y1 + y2+3)
bewegx = -a
Zaehler = Zaehler + 1
EndIf
If xb > 680
Repeat
StartDrawing(ScreenOutput())
DrawingMode(1)
Locate(0,0)
FrontColor(0,0,255)
DrawText("Str(Zaehler) + " Punkte")
StopDrawing()
Delay(10)
FlipBuffers()
If KeyboardPushed(#PB_key_escape)
End
EndIf
ForEver
EndIf
If KeyboardPushed(#PB_key_escape)
End
EndIf
ForEver
PB42
P.S.: Ich kann das Spiel, nachdem der Ball im Aus ist, nur brutal mit Alt + TAB abbrechen, und dann meldet mir der Debugger den Value NULL für StartDrawing, aber der Punktestand war doch richtig erschienen. Komisch.