habe eigentlich 3 Fragen.
1. Kennt jemand eine Internet-Seite wo ich Raumschiffsprites (Vertikal-Shooter) erhalte, die ich in eigenen Projekten verwenden kann?
2 Im Code unten habe ich mal eine Sprite Animation geproggt. Ich möchte eigentlich wissen ob dies so gut ist, oder jemand Verbesserungsvorschläge hat.
3. Allgemein hätte ich noch gerne gewusst, wie es aussieht mit definition von Variablen. Ich habe mir schon angewöhnt Global zu verwenden. Ich sehe hier aber immer wieder, dass dies nicht gerne gesehen wird. Nun hätte ich in meinem Animations-Beispiel gerne gesehen, wie ihr die Variablen deklarieren würdet.
Code: Alles auswählen
;*****************************
;** Define
;*****************************
Global playerX = 100
Global playerY = 100
Global AnimFrame.l = 111
Global counter.l = 0
;*****************************
;** Enumuration
;*****************************
;*****************************
;** Daten Laden
;*****************************
UsePNGImageDecoder()
;*****************************
;** Struktur & Arrays
;*****************************
;*****************************
;** Proceduren
;*****************************
Procedure check(value.l, text.s)
If Value = 0
MessageRequester("error", text, 0)
End
EndIf
EndProcedure
Procedure Init()
check(InitSound(), "InitSound() failed")
check(InitKeyboard(), "InitKeyboard() failed")
check(InitMouse(), "InitMouse() failed")
check(InitSprite(), "InitSprite() failed")
win1Nr.l = OpenScreen(#ResX, #ResY, #BPP, "")
check( win1Nr, "OpenScreen() failed")
EndProcedure
Procedure Steuerung()
If KeyboardPushed(#PB_Key_Left)
If AnimFrame > 114 And AnimFrame < 118
If playerX > 1
playerX - 2
counter + 1
If counter > 2
AnimFrame + 1
counter = 0
EndIf
EndIf
Else
AnimFrame = 115
EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
If AnimFrame > 118 And AnimFrame < 122
If playerX < 800 - SpriteWidth(AnimFrame)
playerX + 2
counter + 1
If counter > 2
AnimFrame + 1
counter = 0
EndIf
EndIf
Else
AnimFrame = 119
EndIf
EndIf
If KeyboardPushed(#PB_Key_Up)
If AnimFrame > 122 And AnimFrame < 126
If playerY > 0
playerY - 2
counter + 1
If counter > 2
AnimFrame + 1
counter = 0
EndIf
EndIf
Else
AnimFrame = 123
EndIf
EndIf
If KeyboardPushed(#PB_Key_Down)
If AnimFrame > 110 And AnimFrame < 114
If playerY < 600 - SpriteHeight(AnimFrame)
playerY + 2
counter + 1
If counter > 2
AnimFrame + 1
counter = 0
EndIf
EndIf
Else
AnimFrame = 111
EndIf
EndIf
If KeyboardPushed(#PB_Key_LeftControl)
; #PB_Key_LeftControl
EndIf
If KeyboardPushed(#PB_Key_Escape)
End ;ProgrammAbbruch
EndIf
EndProcedure
;*****************************
;** Sprites Laden
;*****************************
Init()
For i = 111 To 126
LoadSprite(i, ".\Grafik\" + Str(i) + ".png")
TransparentSpriteColor(i, RGB(0,255,255))
Next
;*****************************
;** Loop
;*****************************
Repeat
ClearScreen(0)
ExamineKeyboard()
Steuerung()
DisplayTransparentSprite(AnimFrame,playerX, playerY)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End