Publié : mar. 26/sept./2006 7:13
ce qui n'est pas le cas dans mon code plus haut... puisque je donne une direction aléatoire dès le départ (création) d'un objet.
Ouai, mais bon, le code utilise des point() pour tester si il y a une collision; d'où un ralentissement rapide... Mais bon, ca marcheDenis a écrit :Ca marche bien l'exemple des collisions
; 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 ) ;