[2D] Gravity & Bounce
Publié : mar. 16/août/2016 19:36
Un code trés simple pour visualiser un cube soumis à une gravité qui rebondit quand il touche le bas de l'écran.
Barre d'espace pour une nouvelle impulsion.
Barre d'espace pour une nouvelle impulsion.
Code : Tout sélectionner
;Gravity & Bounce V1.0
EnableExplicit
Global Event
Global Image
;Sprite structure
Structure newSprite
id.i
x.i
y.i
speedX.f
speedY.f
gravity.f
gravitySpeed.f
bounce.f
impulse.f
EndStructure
;Square
Global square.newSprite
;Init
InitSprite() : InitKeyboard()
UsePNGImageDecoder() : UsePNGImageEncoder()
;Screen
OpenWindow(0, 0, 0, 800, 600, "Gravity & Bounce", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)
;Create a awesome spite sheet ^^
Image = CreateImage(#PB_Any, 32, 32, 24, RGB(255, 255, 255))
SaveImage(Image, "WhiteSquare.png", #PB_ImagePlugin_PNG)
;Setup square
With square
\id = LoadSprite(#PB_Any, "WhiteSquare.png")
\x = 10
\y = 100
\speedX = 1
\gravity = 0.09
\bounce = 0.5
\impulse = 5
EndWith
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
FlipBuffers()
ClearScreen(RGB(135, 206, 235))
;Display Sprites
With square
DisplaySprite(\id, \x, \y)
EndWith
;New position
With square
\gravitySpeed + \gravity
\x + \speedX
\y + \speedY + \gravitySpeed
EndWith
;Hit bottom
With square
If \y > ScreenHeight() - SpriteHeight(\id)
\y = ScreenHeight() - SpriteHeight(\id)
\gravitySpeed = -\gravitySpeed * \bounce
\speedX = 0
EndIf
EndWith
;Pulse up
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Up) And square\speedX = 0
square\gravitySpeed - square\impulse
square\speedX = 1
EndIf
Until KeyboardPushed(#PB_Key_Escape)