Code : Tout sélectionner
;Quelques variables
BalleX = 400
BalleY = 200
BalleVitesseY.f = 5
Gravitation.f = 2
;Initialisation
If InitSprite()
InitKeyboard()
InitMouse()
EndIf
;Création de la fenêtre
OpenWindow(0, 0, 0, 800, 600, "WindowEvent", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)
;Création du sol
Sol = CreateSprite(#PB_Any, 800, 30)
StartDrawing(SpriteOutput(Sol))
Box(0,0,800,30,RGB(128, 0, 0))
StopDrawing()
;Création de la Balle
Balle = CreateSprite(#PB_Any, 16, 16)
StartDrawing(SpriteOutput(Balle))
Box(0,0,16,16,RGB(135, 206, 235))
Circle(8,8,8,RGB(255, 255, 0))
StopDrawing()
;Création de la jauge
Image = CreateImage(#PB_Any, 8, 8, 24, RGB(255, 255, 255))
*Memoire=EncodeImage(Image ,#PB_ImagePlugin_BMP)
Jauge = CatchSprite(#PB_Any, *Memoire)
;Boucle principale
Repeat
Repeat
;Gestion des évènements de la fenêtre
;====================================
;Essayez les 3 possibilités mais une seule à la fois
Evenement = WindowEvent() ; Animation
;Evenement = WaitWindowEvent() ; Blocage de l'animation
;Evenement = WaitWindowEvent(1) ; Animation mais délai d'1 ms inutile et de plus c'est une mauvaise
; façon de programmer car la pile des évènements n'est pas vidée
Select Evenement
Case #PB_Event_CloseWindow
End
EndSelect
Until Evenement=0
FlipBuffers() ; ==> Avec WindowEvent(), FlipBuffers() libère le processeur pour le multitâche et dispense d'un Delay(1)
ClearScreen(RGB(135, 206, 235))
ExamineKeyboard() ;Evènement clavier
DisplaySprite(Jauge, 50, 570-BalleY) ;Affichage de la jauge
ZoomSprite(Jauge, 20, 570)
DisplaySprite(Sol, 0, 570) ;Affichage du sol
DisplaySprite(Balle, BalleX, BalleY) ;Affichage de la Balle
;Mouvement de la Balle
BalleVitesseY = BalleVitesseY + Gravitation
BalleY = BalleY + BalleVitesseY
;Gestion de la collision de la balle avec le sol
If SpriteCollision(Balle, BalleX, BalleY+16, Sol, 0, 570)
BalleY= 554
BalleVitesseY = -BalleVitesseY
EndIf
Until KeyboardPushed(#PB_Key_Escape)