Code : Tout sélectionner
#Source = 1
#Base = 2
#NewBase = 3
Structure SYS
Type.I
X.F
Y.F
Angle.F
AngleV.F
Vitesse.F
Period.I
Delay.I
EndStructure
Define X.F
Define Y.F
Define Angle.F
Define Vitesse.F
Define CentralAngle.I
Global NewList Sys.SYS()
AddElement(Sys() )
ObjSize = 4
InitSprite()
InitMouse()
ExamineDesktops()
ScrWidth = DesktopWidth(0)
ScrHeight = DesktopHeight(0)
ScrDepth = DesktopDepth(0)
Sys()\Type = #Source
Sys()\X = ScrWidth / 2.0
Sys()\Y = ScrHeight / 2.0
Sys()\Period = 1
Sys()\Delay = ElapsedMilliseconds() + Sys()\Period
OpenScreen(ScrWidth, ScrHeight, ScrDepth, "")
ScrBack = CreateSprite(-1, ScrWidth, ScrHeight)
ScrObj = CreateSprite(-1, ObjSize, ObjSize)
StartDrawing(SpriteOutput(ScrObj) )
Box(0, 0, ObjSize, ObjSize, RGB(255, 255, 255) )
StopDrawing()
Repeat
Laps = ElapsedMilliseconds()
Delay(1)
ExamineMouse()
DisplaySprite(ScrBack, 0, 0)
For I = 0 To ListSize(Sys() ) - 1
SelectElement(Sys(), I)
X = Sys()\X
Y = Sys()\Y
Type = Sys()\Type
Delay = Sys()\Delay
Select Type
Case #Source
If Laps => Delay
If ListSize(Sys() ) < 600
For CentralAngle = 0 To 0
Sys()\Delay = Laps + Sys()\Period + Random(Sys()\Period)
AddElement(Sys() )
Sys()\X = X
Sys()\Y = Y
Sys()\Angle = CentralAngle * (#PI / 3.0)
Sys()\Angle = Random(628) / 100.0
Sys()\Vitesse = 0.2 * 20.0
Sys()\Type = #NewBase
Next CentralAngle
EndIf
EndIf
;DisplaySprite(ScrObj, X, Y)
Case #Base
DisplaySprite(ScrObj, X, Y)
Angle = Sys()\Angle
Vitesse = Sys()\Vitesse
Sys()\X + (Cos(Angle) * Vitesse)
Sys()\Y - (Sin(Angle) * Vitesse)
Sys()\AngleV + 0.005
Sys()\Angle + Sin(Sys()\AngleV) * 16.0
Case #NewBase
Sys()\Type = #Base
EndSelect
Next
FlipBuffers()
Until MouseButton(2)
Repeat
Delay(1)
ExamineMouse()
FlipBuffers()
Until MouseButton(2) = 0
CloseScreen()
End