si tu comprend ça tu peut faire des jeux 2D !!!

Code : Tout sélectionner
#dobro=1
#Police=1
#Sprite=1
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
WindowID = OpenWindow(1, 0, 0, 320, 200, #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "pour Garzul")
WindowID = WindowID(1)
Result = OpenWindowedScreen(WindowID,0,0, 320, 200, 1, 0,0)
CreateSprite(#Sprite, 10, 10 ) :; ici on créé un sprite de taille 10 par 10
StartDrawing(SpriteOutput(#Sprite)) :; on s'aprette a dessiner a l'interieur
; en faite en pure il faut considerer les sprites comme des cases vides !!!
Box(0, 0, 50, 50 , RGB(255,0,255) ) : ; on dessine une boite violette de la taille du sprite
StopDrawing() :; voila on a fini de dessiner notree sprite
x=100 :; on va place le sprite en colonne 100
y=100 ; et en ligne 100
sensx=10 :; ceci determine la vitesse de deplacement plus le chiffre est grand plus le sprite fait des grand pas
sensy=10 :; en y pareil !!
Repeat
;event=WaitWindowEvent():; ça ça ne l'est pas !!!
event =WindowEvent() :; ça c'est multitache
Delay(5) :; on rend la main au system pendant
x+sensx :;on ajoute (10) a la position colonne actuel du sprite
y+sensy :; ;on ajoute (10) a la position ligne actuel du sprite
If x>320-10 :; si le sprite arrive vers le bord droit de l'ecran - la largeur du sprite (10)
; en fait la reference du sprite est son coin superieur gauche !!!
;c'est pour ça que je tiens compte de la largeur du sprite
sensx=-sensx :; alors on inverse les coordonées en x (colonne) ceci va faire repartir le sprite dans l'autre sens
EndIf
If x<1
sensx=-sensx : ; si le sprite arrive a gauche de l'ecran on inverse ses coordonees !!
;(pas besoin de compter la largeurdu sprite puisque c'est le coin superieur GAUCHE qui compte !!)
EndIf
If y>200-10 : ; pareille si le sprite arrive en bas (c'est a dire le bas de l'ecran - la hauteur du sprite)
sensy=-sensy ; on inverse les coordonees (il rebondit)
EndIf
If y<1
sensy=-sensy :; pareille si le sprite arrive en haut !!
EndIf
DisplaySprite(#Sprite, x, y) :; enfin on met le sprite au bonne coordonées
FlipBuffers():; on affiche l'ecran (pour que les gens voient le sprite ou il se trouve !
ClearScreen(0, 0, 0) :; on efface l'ecran car sinon le sprite va laisser une copie de son image sur le fons de l'ecran
;(utile pour faire un TRON par exemple !!)
Until event=#PB_Event_CloseWindow