Cascade d'evenements
-
- Messages : 2194
- Inscription : jeu. 27/janv./2005 19:07
Je viens de découvrir après coup le tutorial sur les structures et les listes chainées (présent dans DEBUTANT).
Si, comme moi, tout ca est inconnu pour vous, lisez ce tuto : http://purebasic.hmt-forum.com/viewtopic.php?t=882
Si, comme moi, tout ca est inconnu pour vous, lisez ce tuto : http://purebasic.hmt-forum.com/viewtopic.php?t=882
petit exemple de collision a l'aide de sprites
; codé par Dobro
rezx=1024
rezy=768
nombre_sprite=600
#sprite =0
#Fenetre =1
Structure etoile
x.l
Y.l
sensy.l
sensx.l
couleur.l
EndStructure
Dim etoile.etoile(1001)
InitMouse ()
InitSprite ()
InitKeyboard ()
OpenWindow ( #Fenetre , 1,1,rezx, rezy, "une touche pour sortir" , #PB_Window_SystemMenu ) ; on ouvre une fenetre
OpenWindowedScreen ( WindowID ( #Fenetre ) , 0, 0,rezx, rezy, 1, 1, 1) ; on met un ecran dedans !!
CreateSprite ( #sprite ,4,4)
StartDrawing ( SpriteOutput ( #sprite ))
Circle (2, 2, 2 , RGB (0,255,255))
StopDrawing ()
For i=0 To nombre_sprite
etoile(i)\x= Random (rezx)
etoile(i)\Y= Random (rezy)
etoile(i)\sensy=2
etoile(i)\sensx=2
etoile(i)\couleur= RGB ( Random (rezy) , Random (rezy) , Random (rezy) )
CreateSprite (i,4,4)
StartDrawing ( SpriteOutput (i))
Circle (2, 2, 2 , RGB ( Random (255), Random (255), Random (255)))
StopDrawing ()
Next i
Repeat
Event= WindowEvent ()
For i=0 To nombre_sprite
ExamineKeyboard ()
etoile(i)\Y=etoile(i)\Y+etoile(i)\sensy
etoile(i)\x=etoile(i)\x+etoile(i)\sensx
If etoile(i)\Y> rezy :etoile(i)\sensy=-etoile(i)\sensy: EndIf
If etoile(i)\Y< 0 :etoile(i)\sensy=-etoile(i)\sensy: EndIf
If etoile(i)\x> rezx :etoile(i)\sensx=-etoile(i)\sensx: EndIf
If etoile(i)\x< 0 :etoile(i)\sensx=-etoile(i)\sensx: EndIf
DisplaySprite (i,etoile(i)\x,etoile(i)\Y)
For o=0 To nombre_sprite
If SpriteCollision (o, etoile(o)\x, etoile(o)\Y,i, etoile(i)\x,etoile(i)\Y)
etoile(i)\sensx=-etoile(i)\sensx
etoile(i)\sensy=-etoile(i)\sensy
etoile(o)\sensx=-etoile(o)\sensx
etoile(o)\sensy=-etoile(o)\sensy
EndIf
Next o
Next i
FlipBuffers (1) ;
ClearScreen ( RGB (0,0,0))
Until Event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_All ) ;