Wie kommt es zu diesen Fehlerstellen?
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800,600,32,"J&R-Kollision v2.0")
;Spielerboxposition
Global boxx.f
Global boxy.f
;Alte Spielerposition
Global olposx.f
Global olposy.f
;Kollisionstyp auf X/Y
Global coltypex.l
Global coltypey.l
;Fallgeschwindigkeit
Global fallspeed.f
;Kollision allgemein
Global switch.b
boxx = 200
boxy = 200
fallspeed = 4.0
;-Hauptschleife
Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_left) ;Nach Links laufen
boxx - 2.1
If boxx < 0
boxx = 0
EndIf
EndIf
If KeyboardPushed(#PB_Key_right) ;Nach Rechts laufen
boxx + 2.1
If boxx > 784
boxx = 784
EndIf
EndIf
If KeyboardPushed(#PB_Key_up) ;Springen
fallspeed = -2.0
EndIf
If fallspeed < 4.0 ;damit fallspeed auch wieder auf den standart-Wert zurückkehrt
fallspeed + 0 .1
EndIf
boxy + fallspeed ;fallspeed auf boxy aufaddieren damit eine Art von Schwerkraft besteht
;Damit die Spielerbox nixht aus dem Bild wandern kann
If boxy < 0
boxy = 0
EndIf
If boxy > 468
boxy = 468
EndIf
;-Kollisionsroutine
If boxx > 352 And boxx < 416 And boxy > 252 And boxy < 316 ;Abfrage ob die Spielerbox überhaupt mit der Kollisionsbox kollidiert
If olposx =< 352 ;Kollision von links
boxx = 352
coltypex = 1
EndIf
If olposx => 416 ;Kollision von rechts
boxx = 416
coltypex = 2
EndIf
If olposy =< 252 ;Kollision von oben
boxy = 252
coltypey = 1
EndIf
If olposy => 316 ;Kollision von unten
boxy = 316
coltypey = 2
fallspeed = 4.0 ;Wenn die Box von unten kollidiert dann geht der Fallspeed sofort auf standart
EndIf
switch = 1 ;Kollision algemein
Else
;Zurücksetzen der Kollision und der Typen
switch = 0
coltypex = 0
coltypey = 0
EndIf
; Generieren der Alten Koordinaten der Spielerbox für die Kolisionstypenbestimmung
olposx = boxx
olposy = boxy
;-Grafische Ausgabe
StartDrawing(ScreenOutput())
Box(boxx,boxy,32,32,RGB(154,255,101)) ; Die Spieler Box
Box(0,500,800,100,RGB(0,0,0)); Der Boden
If switch = 0
Box(384,284,32,32,RGB(255,255,0)) ; Kollisionsbox ohne Kollision
Else
Box(384,284,32,32,RGB(255,0,0)) ; Kollisionsbox mit Kollision
EndIf
;Ausgabe der Variablen
DrawingMode(1)
FrontColor(255,255,255)
Locate(0,0)
DrawText("boxx = "+StrF(boxx,8))
Locate(0,16)
DrawText("boxy = "+StrF(boxy,8))
Locate(0,32)
DrawText("olposx = "+StrF(olposx,8))
Locate(0,48)
DrawText("olposy = "+StrF(olposy,8))
Locate(0,64)
DrawText("collision = "+Str(switch))
Locate(0,80)
DrawText("coltypex = "+Str(coltypex))
Locate(0,96)
DrawText("coltypey = "+Str(coltypey))
StopDrawing()
;-Auf Bildschrim darstellen und löschen des Buffers
FlipBuffers()
ClearScreen(10,30,100)
Until KeyboardPushed(#PB_Key_Escape) ;Aus die Maus
CloseScreen()
End ;Schluß mit lustig
