Ich hab mal auf die schnelle einen Beispielcode geschrieben. Für die Konstate Idea kannst du die Wert 0 bis 2 eingeben. Wenn da das dabei ist was du dir vorstellst sag Bescheid. An deiner Stelle würde ich noch kein Teile aus dem Code rauskopieren, da der Code nicht der schnellst ist, da sin() und cos() sind sehr langsam. (wobei neuschreiben übrings immer besser ist bei fremden Codes, weil man dann weiß was man hat und es auch umwandeln kann)
Code: Alles auswählen
;Gibt #Idea = 0-2 ein um meine verschiedenen Ideen zu sehen.
#Idea=2
#TransColor=$FF00FF ;Pink
Structure fire
X.f
Y.f
time.l
EndStructure
NewList fire.fire()
InitSprite()
OpenWindow(1,0,0,300,300,"Button",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(1),0,0,300,300,0,0,0)
TransparentSpriteColor(#PB_Default,#TransColor)
Select #Idea
Case 0
;Ein Sprite mit blauer Ring
CreateSprite(0,100,100)
StartDrawing(SpriteOutput(0))
Box(0,0,100,100,#TransColor)
Circle(49,49,50,$FF0000)
Circle(49,49,40,#TransColor)
StopDrawing()
;rote Partikle (rotes Feuer)
CreateSprite(1,5,5)
StartDrawing(SpriteOutput(1))
Box(0,0,5,5,#TransColor)
Circle(2,2,3,$0000FF)
StopDrawing()
Case 1 To 2
CreateSprite(0,100,100)
EndSelect
State=0
Repeat
Repeat
WEvent=WindowEvent()
Select WEvent
Case #PB_Event_CloseWindow
End
EndSelect
Until WEvent=0
If IsScreenActive()
State+1
If State>360
State=1
Update=1
EndIf
ClearScreen($000000)
Select #Idea
Case 0
DisplayTransparentSprite(0,100,100)
For a=0 To State
If Random(30)=0
d=40+Random(10)
bog.d=a/(180/#PI)
AddElement(fire())
Fire()\X=150+Sin(bog)*d
Fire()\Y=150-Cos(bog)*d
EndIf
Next a
ResetList(Fire())
While NextElement(Fire())
DisplayTransparentSprite(1,Fire()\X,Fire()\Y)
Fire()\Y-1
Fire()\Time+1
If Fire()\Time>30
DeleteElement(Fire())
EndIf
Wend
Case 1
DisplayTransparentSprite(0,100,100)
Bog=State/(180/#PI)
X=50+Sin(bog)*45
Y=50-Cos(bog)*45
StartDrawing(SpriteOutput(0))
If Update
Box(0,0,100,100,#TransColor)
EndIf
Circle(X,Y,5,$FF0000)
StopDrawing()
Case 2
DisplayTransparentSprite(0,100,100)
StartDrawing(SpriteOutput(0))
If Update
Box(0,0,100,100,#TransColor)
EndIf
For a=0 To 9
Bog=(State+a*0.1)/(180/#PI)
X=50+Sin(bog)*45
Y=50-Cos(bog)*45
LineXY(50,50,X,Y,$FF0000)
Next a
StopDrawing()
EndSelect
Update=0
EndIf
FlipBuffers()
ForEver