Code (glbasic) Select
SYSTEMPOINTER TRUE
SETSCREEN 800,600,0
TYPE particle
x
y
winkel
drehung
speed
alter
ENDTYPE
LOCAL p AS particle
LOCAL particles[] AS particle
wind = 0 // Wind erstellen
WHILE TRUE
LOCAL mx,my,b1,b2
MOUSESTATE mx,my,b1,b2
IF MOUSEAXIS(2) THEN wind = wind + MOUSEAXIS(2)
IF wind > 10 THEN wind = 0
IF wind < 0 THEN wind = 10
IF b1 = TRUE
p.x = mx
p.y = my
p.winkel= RND(359) // 360° möglich !!
p.speed = R2(1,3)
p.alter = 1
IF KEY(2) THEN p.drehung = 1
IF KEY(3) THEN p.drehung = 2
IF KEY(4) THEN p.drehung = 3
IF KEY(5) THEN p.drehung = 4
IF KEY(11) THEN p.drehung = 0
DIMPUSH particles[],p
ENDIF
FOREACH c IN particles[]
INC c.x, (COS(c.winkel)*c.speed)+wind
DEC c.y, SIN(c.winkel)*c.speed
DEC c.alter,0.005
INC c.winkel, c.drehung
IF c.winkel > 359 THEN c.winkel = 0
ALPHAMODE c.alter
FILLRECT c.x, c.y, c.x+3, c.y+3, RGB(255, 0+c.x/4, 0+c.x/4)
IF c.alter < 0 THEN DELETE c
ALPHAMODE 0
PRINT "Drehung: "+c.drehung,10,30
NEXT
PRINT "Particles: "+BOUNDS(particles[],0),10,10
PRINT "Wind: "+wind,10,20
SHOWSCREEN
WEND
END
FUNCTION R2: mini, maxi
RETURN RND(maxi-mini)+mini
ENDFUNCTION
Schaut euch das mal an, ist jetzt nicht kommentiert, aber wenn fragen bestehen dan fragt nur!Steuerung:
Linke Maustaste : Particle erzeugen
Mausrad: Windstärke von 1-10 setzen (Wind kommt von links!!)
Tasten 1-4 : Drehung der Particle erhöhen oder verringern
Taste 0 : Drehung aus!
Bekomm aber Types nicht in eine Function, schade eigentlich, sonnst hätte man das gut öfter mal nutzen können....
Gernot, hast du ne Idee wie man sowas in ne Function stecken kann, also types declarieren, und im Hauptcode über ne function aufrufen?