Verfasst: 15.08.2007 13:09
Hier, umgeschrieben für 3.3er
Ich musste aber das Debug rausnehmen, da sonst der Bildscirm flackert.
Code: Alles auswählen
; Test von Folker Linstedt aka xaby
; PB 4.x
; 2007|08|13
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 or later", 0)
End
EndIf
Global HeldX : HeldX=100
Global HeldY : HeldY=100
Global hoch : hoch=150
Global Richtung : Richtung=1
Procedure Held()
If KeyboardPushed(#PB_Key_Left)
HeldX-10
If HeldX<20
HeldX=630
EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
HeldX+10
If HeldX>620
HeldX=-10
EndIf
EndIf
; WandAbfrage
Wand=0
For i=0 To 9
If SpriteCollision(0,HeldX,HeldY,1,0+64*i, 400)
Wand=1
DisplaySprite(2, 0+64*i, 400)
EndIf
Next
If SpriteCollision(0,HeldX,HeldY,1,264,Hoch)
Wand=2
DisplaySprite(2,264,Hoch)
EndIf
If SpriteCollision(0,HeldX,HeldY,1,328, 200)
Wand=1
DisplaySprite(2,328,200)
EndIf
If SpriteCollision(0,HeldX,HeldY,1,200, 200)
Wand=1
DisplaySprite(2,200,200)
EndIf
; Guter Vorschlag von DarkDragon!!!
If Wand = 2
ziel = hoch - 30
If ziel < HeldY
HeldY - 1
ElseIf ziel > HeldY
HeldY + 1
EndIf
EndIf
If Wand=0
HeldY+5
EndIf
DisplayTransparentSprite(0, HeldX, HeldY)
EndProcedure
Procedure Mauer()
DisplaySprite(1, 200, 200)
DisplaySprite(1, 328, 200)
For i=0 To 9
DisplaySprite(1, 0+64*i, 400)
Next
EndProcedure
Procedure Beweg()
hoch+1*Richtung
; Debug hoch
If Hoch>400
Hoch=400
Richtung*-1
EndIf
If Hoch<150
Hoch=150
Richtung*-1
EndIf
DisplaySprite(1, 264, Hoch)
EndProcedure
If OpenScreen(640, 480, 16, "Sprite")
; Erstelle Kreis auf Sprite
CreateSprite(0,32,32)
StartDrawing(SpriteOutput(0))
Circle(15,15,15,RGB(255,128,128))
StopDrawing()
; Erstelle Balken auf Sprite
CreateSprite(1,64,4)
StartDrawing(SpriteOutput(1))
Box(0,0,64,4,RGB(0,128,255))
StopDrawing()
CreateSprite(2,64,4)
StartDrawing(SpriteOutput(2))
Box(0,0,64,4,RGB(0,255,0))
StopDrawing()
Repeat
ExamineKeyboard()
Mauer()
Beweg()
Held()
Delay(10)
FlipBuffers()
ClearScreen(0,0,0)
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
End