Code: Alles auswählen
UseJPEGImageDecoder()
;Konstante und Eigenschaften zu Screen
Enumeration
#SPRITE2D_oben
#SPRITE2D_unten
#SPRITE2D_recht
#SPRITE2D_link
#Boden
EndEnumeration
Global Screenbreite.i = 1024
Global Screenhoehe.i = 768
Global Screenfarbtiefe.i = 32
Global Beenden.i = #False
;EInfache Prozedur zur Fehlerprüfung
Procedure Fehlerbehandlung(Ergebnis.i, Text.s)
If Ergebnis = 0
MessageRequester("Fehler", Text, #PB_MessageRequester_Ok)
End
EndIf
EndProcedure
;Initialisiere Umgebung
Fehlerbehandlung(InitSprite(), "Initsprite() fehlgeschlagen.")
Fehlerbehandlung(InitKeyboard(), "InitKeyboard() fehlgeschlagen.")
Fehlerbehandlung(OpenScreen(Screenbreite, Screenhoehe, Screenfarbtiefe, "2D Spiel", 1), "Kann Screen nicht öffnen.")
SetFrameRate(60)
;Lade Sprite
; LoadSprite(#Boden, "Boden.jpg")
; LoadSprite(#SPRITE2D_link, "figurlink.jpg")
; LoadSprite(#SPRITE2D_recht, "figurrecht.jpg")
; LoadSprite(#SPRITE2D_oben, "figuroben.jpg")
; LoadSprite(#SPRITE2D_unten, "figurunten.jpg")
CreateSprite(#Boden, Screenbreite, Screenhoehe)
If StartDrawing(SpriteOutput(#Boden))
Box(0, 0, 1024, 768, RGB(120, 120, 0))
Circle(20, 20, 20, RGB(0, 255, 0))
StopDrawing()
EndIf
CreateSprite(#SPRITE2D_recht, 21, 21)
If StartDrawing(SpriteOutput(#SPRITE2D_recht))
LineXY(0, 0, 0, 20, RGB(255, 0, 0))
LineXY(0, 20, 20, 10, RGB(255, 0, 0))
LineXY(0, 0, 20, 10, RGB(255, 0, 0))
FillArea(10, 10, RGB(255, 0, 0), RGB(255, 0, 0))
StopDrawing()
EndIf
CreateSprite(#SPRITE2D_link, 21, 21)
If StartDrawing(SpriteOutput(#SPRITE2D_link))
LineXY(20, 0, 20, 20, RGB(255, 0, 0))
LineXY(20, 0, 0, 10, RGB(255, 0, 0))
LineXY(20, 20, 0, 10, RGB(255, 0, 0))
FillArea(10, 10, RGB(255, 0, 0), RGB(255, 0, 0))
StopDrawing()
EndIf
CreateSprite(#SPRITE2D_unten, 21, 21)
If StartDrawing(SpriteOutput(#SPRITE2D_unten))
LineXY(0, 0, 20, 0, RGB(255, 0, 0))
LineXY(0, 0, 10, 20, RGB(255, 0, 0))
LineXY(20, 0, 10, 20, RGB(255, 0, 0))
FillArea(10, 10, RGB(255, 0, 0), RGB(255, 0, 0))
StopDrawing()
EndIf
CreateSprite(#SPRITE2D_oben, 21, 21)
If StartDrawing(SpriteOutput(#SPRITE2D_oben))
LineXY(0, 20, 20, 20, RGB(255, 0, 0))
LineXY(0, 20, 10, 0, RGB(255, 0, 0))
LineXY(20, 20, 10, 0, RGB(255, 0, 0))
FillArea(10, 10, RGB(255, 0, 0), RGB(255, 0, 0))
StopDrawing()
EndIf
;Hauptschleife
Repeat
;Screen wird gelöscht
ClearScreen(RGB(0, 0, 0))
;Boden als Hintergrundbild anzeigen
DisplaySprite(#Boden, 0, 0)
;R = 1
;Figur wird auf dem Bodenbild angezeigt und bewegt sich
If R = 0
DisplayTransparentSprite(#SPRITE2D_recht, x, y)
ElseIf R = 1
DisplayTransparentSprite(#SPRITE2D_link, x, y)
ElseIf R = 2
DisplayTransparentSprite(#SPRITE2D_unten, x, y)
ElseIf R = 3
DisplayTransparentSprite(#SPRITE2D_oben, x, y)
EndIf
;Grafik wird geflipped (getauscht) und angezeigt
FlipBuffers()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
Beenden = #True
EndIf
If KeyboardPushed(#PB_Key_D)
If x < 980
x = x + 1
R = 0
EndIf
EndIf
If KeyboardPushed(#PB_Key_A)
If x > 0
x = x - 1
R = 1
EndIf
EndIf
If KeyboardPushed(#PB_Key_S)
If y < 700
y = y + 1
R = 2
EndIf
EndIf
If KeyboardPushed(#PB_Key_W)
If y > 0
y = y - 1
R = 3
EndIf
EndIf
Until Beenden = #True
End