Coole Effekte von ???
Hallo !

Habe mir gedacht, mal so eine Sammlung cooler Effekte zusammen zu tragen.
Wer Lust und Laune hat, und der Code nicht länger als ca. 80 Zeilen ist, kann ja hier seine Effekte zur Verfügung stellen !

Man soll hier auch seine Meinung zu den Effekten äußern !

Ich mache mal den Anfang mit :

Sturm im Wasserglas

[code:1:0915de4f7f]
Graphics 800,600:SetBuffer Backbuffer()
Global num = 6000
Global ox,oy,cx,cy,gravity#,hab#,ro,gr,bl,ka,ll#
Dim px(num), py(num), vx#(num), vy#(num)
cx = 400: cy = 300
hab=Rnd(5):cc=50
ro=Rand(255):gr=Rand(255):bl=Rand(255)
timer =CreateTimer(50)
SeedRnd MilliSecs()
Init
While Not KeyHit(1)
Cls
Color 255,255,0:Text 10,10,"Sturm im Wasserglas by HOT-BIT"
Text 500,10,"FPS: "+fps
pgrav
c = c + 1
If c > cc Then
c = 0
gravity# = Rnd(.5,9)
For n = 1 To num
vx(n) = Rnd(-3,3)
vy(n) = Rnd(-3,3)
Next
hab=Rnd(5)
ox = Rnd(-130,130)
oy = Rnd(-130,130)
ro=Rand(255):gr=Rand(255):bl=Rand(255)
ka=Rand(0,2)
ll=Rnd(360)
cc=Rand(30,300)
End If
fps2 = fps2 + 1
If fpstimer + 1000 < MilliSecs() Then
fps = fps2:fps2 = 0:fpstimer = MilliSecs()
End If
WaitTimer(timer)
Flip
Wend
End

Function Init()
For n = 1 To num
px(n) = Rand(-32,32)
py(n) = Rand(-20,20)
vx(n) = Rnd(-6,6)
vy(n) = Rnd(-6,6)
Next
ox = Rnd(-130,130)
oy = Rnd(-130,130)
gravity = Rnd(3,19)
End Function

Function pgrav()
For n = 1 To num - 1
xdif# = ox - px(n)
ydif# = oy - py(n)
L# = Sqr(xdif*xdif+(ydif*ydif))
If ka=1 Then
L = L * gravity/Sin(l-ll)
ElseIf ka=0
L = L * gravity/Cos(l-ll)
Else
L = L *gravity/Sin((l-ll)*Cos(l-ll))
EndIf
If L > 0 Then
vx(n) = vx(n) + xdif / L
vy(n) = vy(n) + ydif / L
px(n) = px(n) + vx(n)
py(n) = py(n) + vy(n)
End If
Color ro,gr,bl
Rect px(n) + cx, py(n) + cy,3,3
Next
End Function
[/code:1:0915de4f7f]

Toni
===
von ???
Hübsch, aber IMHO geört das genauso ins CodeArchiv wie einige Topics unter Projekte...
===
von ???
Hallo !

Ja, stimmt irgendwie !

Da hier noch niemand was Neues gebracht hat, habe ich hier eine abgeänderte Version.

Nennt sich nun Bienen- Schwarm.

Vielleicht können wir das so abändern, daß dieser Code modifiziert werden kann, und wenn jemand einen kewlen Effekt daraus zaubert, ihn dann hierher stellt !!!

Toni

[code:1:a02e1b1ac3]
Graphics 800,600:SetBuffer BackBuffer()
Global Num = 6000
Global ox,oy,cx,cy,gravity#,hab#,ro,gr,bl,ccc
Dim px(num), py(num), vx#(num), vy#(num)
cx = 400: cy = 300:cc=250
hab=Rnd(5)
ro=Rand(255):gr=Rand(255):bl=Rand(255)
timer =CreateTimer(60)
SeedRnd MilliSecs()
Init
While Not KeyHit(1)
Cls
Color 255,255,0:Text 10,10,"Bienen- Schwarm by HOT-BIT"+" FPS: "+fps
pgrav
c = c + 1
If c > cc Then
c = 0
gravity# = Rnd(.5,9)
For n = 1 To num
vx(n) = Rnd(-3,3)
vy(n) = Rnd(-3,3)
Next
hab=Rnd(5)
ox = Rnd(-130,130): oy = Rnd(-130,130):cc=Rand(100,250)
ro=Rand(255):gr=Rand(255):bl=Rand(255):ccc=Rand(0,1)
End If
fps2 = fps2 + 1
If fpstimer + 1000 < MilliSecs() Then
fps = fps2:fps2 = 0:fpstimer = MilliSecs()
End If
Color 255,255,0
WaitTimer(timer)
Flip
Wend
End
Function Init()
For n = 1 To num
px(n) = Rand(-32,32)
py(n) = Rand(-20,20)
vx(n) = Rnd(-6,6)
vy(n) = Rnd(-6,6)
Next
ox = Rnd(-130,130)
oy = Rnd(-130,130)
gravity = Rnd(3,19)
End Function
Function pgrav()
For n = 1 To num - 1
xdif# = ox - px(n)
ydif# = oy - py(n)
l# = Sqr(xdif*xdif+(ydif*ydif))
l = l * gravity
If L > 0 Then
vx(n) = vx(n) + xdif / l
vy(n) = vy(n) + ydif / l
px(n) = px(n) + vx(n)
py(n) = py(n) + vy(n)
End If
If ccc
Color ro,gr,bl
Else
Color Rand(255),Rand(255),Rand(255)
EndIf
Rect px(n) + cx, py(n) + cy,3,3,1
Next
End Function
[/code:1:a02e1b1ac3]
[/quote]
===
von ???
Ho !

gefällt das keinem ?

Verbesserte Version !

Toni

[code:1:05d6e40603]
Graphics 800,600:SetBuffer BackBuffer()
Global Num = 6000
Global ox,oy,cx,cy,gravity#,hab#,ro,gr,bl,ccc
Dim px(num), py(num), vx#(num), vy#(num)
cx = 400: cy = 300:cc=250
hab=Rnd(5)
ro=Rand(255):gr=Rand(255):bl=Rand(255)
timer =CreateTimer(60)
SeedRnd MilliSecs()
Init
While Not KeyHit(1)
Cls
Color 255,255,0:Text 10,10,"Bienen- Schwarm by HOT-BIT"+" FPS: "+fps
pgrav
c = c + 1
If c > cc Then
c = 0
gravity# = Rnd(.5,9)
For n = 1 To num
vx(n) = Rnd(-1,1)
vy(n) = Rnd(-1,1)
Next
hab=Rnd(5)
ox = Rnd(-130,130): oy = Rnd(-130,130):cc=Rand(100,250)
ro=Rand(255):gr=Rand(255):bl=Rand(255):ccc=Rand(0,1)
End If
fps2 = fps2 + 1
If fpstimer + 1000 < MilliSecs() Then
fps = fps2:fps2 = 0:fpstimer = MilliSecs()
End If
Color 255,255,0
WaitTimer(timer)
Flip
Wend
End
Function Init()
For n = 1 To num
px(n) = Rand(-32,32)
py(n) = Rand(-20,20)
vx(n) = Rnd(-6,6)
vy(n) = Rnd(-6,6)
Next
ox = Rnd(-130,130)
oy = Rnd(-130,130)
gravity = Rnd(3,19)
End Function
Function pgrav()
For n = 1 To num - 1
xdif# = ox - px(n)
ydif# = oy - py(n)
l# = Sqr(xdif*xdif+(ydif*ydif))
l = l * gravity
If L > 0 Then
vx(n) = vx(n) + xdif/Sqr(l*l)
vy(n) = vy(n) + ydif/Sqr(l*l)
px(n) = px(n) + vx(n)
py(n) = py(n) + vy(n)
End If
If ccc
Color ro,gr,bl
Else
Color Rand(255),Rand(255),Rand(255)
EndIf
Rect px(n) + cx, py(n) + cy,3,3,1
Next
End Function
[/code:1:05d6e40603]
===
von ???
Wie schon im Chat gesagt - genial.
===
von ???
ich finds auch ziemlich faszinierend ... nur ich frag mich ernsthaft, ob das nur eine spielerei ist, oder ob man so etwas ähnliches wirklich irgendwo einsetzen kann
===
von ???
Hi !

Ja, junky, eine gute Frage !

Ich bin der Meinung, daß, wenn man mit solchen Sachen etwas herum spielt, man dann viel leichter mit cos,sin, tan usw. zurecht kommt. Und diese Sachen sind wiederum lebensnotwendig für ein angenehmes Gameplay.
Aus diesen Formeln können leicht gewisse Effekte abgeleitet werden.

Bei mir funktioniert das halt so !

Toni
===
von ???
Partikeleffektchen lassen sich sicherlich auch einsetzen, z.B. bei der Visualisierung von Zaubersprüchen in RPGs oder so. Allerdings empfiehlt es sich die Bilder vorzuberechnen...
===
von ???
Das sieht so geil aus....
ich hab mir das echt fasziniert angesehen, mich aber auch gefrfagt, wozu man sowas bei einen Spiel brachen sollte...
===
von ???
ich würde auch sagen für Zaubersprüche in RolePlayGames .... zB für nen GanzBildschirm EisSturm oder ein wenn für die beliebten SpaceShooter ein Sternenstaub sturm =) .... oder in Moorhuhn spielen ein Bienenschwarm der die sicht des spielers beinträchtigt ... oder wie bei Starcraft bei dem Carrier der Protoss so ein schwarm von kleinen automatisch gestuerten Minijägern ( müssen ja nicht so viele sein wie im beispiel )
===
von ???
Stimmt, denn wenn es so viele sind, und die auch noch images haben, dann wirds ganz sicher n bisschen langsam, gerade im spiel
===
von ???
hallo zusammen
wenn wir schon beim thema rpg-games sind, wo kriege ich ein quellcode für ein rpg.es geht mir nur ums üben und in keinsterweise ums bluffen :!: .
bis bald
NetPad
===
von ???
@ Netpad: Öhm.. wer war das denn... [i:cd17c1ff75]Blitzmaster[/i:cd17c1ff75] hat mal nen paar RPG-Tutorials geschrieben, sonst, wüsst ich jetzt keinen RPG-Code in BB...

@ Hot-Bit: sieht echt ziemlich geil aus!! :D
===
blitzmaster von ???
auf seiner page funzen die links nicht :cry:
andere ideen?
NetPad
===
von ???
O.k. O.k. vieleicht etwas pät aber trotzdem :)

Ich habe, durch ein simples substituieren der RECT Geschichte durch WritePixelFast, auf meiner Kiste nocheinmal 8 FPS rauskitzeln können:

[code:1:1bc025ecc8]
Graphics 800,600:SetBuffer BackBuffer()
Global Num = 6000
Global ox,oy,cx,cy,gravity#,hab#,ro,gr,bl,ccc
Dim px(num), py(num), vx#(num), vy#(num)
cx = 400: cy = 300:cc=250
hab=Rnd(5)
ro=Rand(255):gr=Rand(255):bl=Rand(255)
timer =CreateTimer(60)
SeedRnd MilliSecs()
Init
While Not KeyHit(1)
Cls
Color 255,255,0:Text 10,10,"Bienen- Schwarm by HOT-BIT"+" FPS: "+fps
pgrav
c = c + 1
If c > cc Then
c = 0
gravity# = Rnd(.5,9)
For n = 1 To num
vx(n) = Rnd(-1,1)
vy(n) = Rnd(-1,1)
Next
hab=Rnd(5)
ox = Rnd(-130,130): oy = Rnd(-130,130):cc=Rand(100,250)
ro=Rand(255):gr=Rand(255):bl=Rand(255):ccc=Rand(0,1)
End If
fps2 = fps2 + 1
If fpstimer + 1000 < MilliSecs() Then
fps = fps2:fps2 = 0:fpstimer = MilliSecs()
End If
Color 255,255,0
WaitTimer(timer)
Flip
Wend
End
Function Init()
For n = 1 To num
px(n) = Rand(-32,32)
py(n) = Rand(-20,20)
vx(n) = Rnd(-6,6)
vy(n) = Rnd(-6,6)
Next
ox = Rnd(-130,130)
oy = Rnd(-130,130)
gravity = Rnd(3,19)
End Function
Function pgrav()
LockBuffer BackBuffer()
For n = 1 To num - 1
xdif# = ox - px(n)
ydif# = oy - py(n)
l# = Sqr(xdif*xdif+(ydif*ydif))
l = l * gravity
If L > 0 Then
vx(n) = vx(n) + xdif/Sqr(l*l)
vy(n) = vy(n) + ydif/Sqr(l*l)
px(n) = px(n) + vx(n)
py(n) = py(n) + vy(n)
End If
If px(n)+cx>800 Then px(n)=800-cx
If px(n)+cx<1 Then px(n)=(cx*-1)+1
If py(n)+cy>600 Then py(n)=600-cy
If py(n)+cy<1 Then py(n)=(cy*-1)+1
If ccc
rgb=255*$1000000 + ro*$10000 + gr*$100 + bl
Else
rgb=255*$1000000 + Rand(255)*$10000 + Rand(255)*$100 + Rand(255)
EndIf

For i=0 To 2
For j=0 To 2
WritePixelFast px(n)+cx+i,py(n)+cy+j,rgb
Next
Next
Next
UnlockBuffer BackBuffer()
End Function
[/code:1:1bc025ecc8]

Wenn ihr die For Schleifen um das WPF mal weglasst sieht es in meinen augen noch cooler aus.

walski
===
von ???
Ich sag nur GEILO !!!! *g* ... ne find ich echt Hammah
===
von ???
hier.......!!! ich wollt auch mitspieln :)

und wehe es meggert einer is zu langsam :) ich hoffe habs helbwegs Speedy hinbekommen.....

[code:1:3f40f2f0dc]
Graphics 640,480,16,1

Global scrx,scry

scrx = GraphicsWidth()
scry = GraphicsHeight()

Const fxstyle =0
Const fxposx =1
Const fxposy =2
Const fxspeed =3
Const fxtime =4
Const fxstate =5
Const fxMAX=100


Dim fX(fxmax,10)
SeedRnd(milisec)
SetBuffer BackBuffer()

Repeat

newfx()
showfx()
Flip
Cls
If KeyHit(1)=1 Then Exit

Forever

End

Function newfx()

While fx_free<fxmax

If fx(fx_free,fxstyle)=0 Then fx(fx_free,fxstyle)=1 :Exit
fx_free=fx_free+1

Wend

fx(fx_free,fxstyle)=Rnd(4) ; mögliche Algorythmen.... 4
fx(fx_free,fxposx)=Rnd(1,scrx)
fx(fx_free,fxposy)=Rnd(1,scry)
fx(fx_free,fxspeed)=Rnd(2,10)
fx(fx_free,fxtime)=Rnd(400)
fx(fx_free,fxstate)=0
Return True
End Function

Function showFX()

While fx_counter <fxmax

If fx(fx_counter,fxstyle)>0 Then fx(fx_counter,fxstate)=fx(fx_counter,fxstate)+fx(fx_counter,fxspeed)
If fx(fx_counter,fxstate)>fx(fx_counter,fxtime) Then fx(fx_counter,fxstyle)=0

For c=0 To 36 Step+2


;FX Algorythmuss 1.. >
If fx(fx_counter,fxstyle)=1
fxpxlx=fx(fx_counter,fxposx)+Sin(c*10)*fx(fx_counter,fxstate)*1
fxpxly=fx(fx_counter,fxposy)+Cos(c*10)*fx(fx_counter,fxstate)*1
End If

;FX Algorythmuss 2.. >
If fx(fx_counter,fxstyle)=2
fxpxlx=fx(fx_counter,fxposx)+Cos(c*10)*fx(fx_counter,fxstate)*1
fxpxly=fx(fx_counter,fxposy)+Sin(c*10)*fx(fx_counter,fxstate)*1
End If

;FX Algorythmuss 3.. >
If fx(fx_counter,fxstyle)=3
fxpxlx=fx(fx_counter,fxposx)+Sin(c*10)*fx(fx_counter,fxstate)*1
fxpxly=fx(fx_counter,fxstate)+fx(fx_counter,fxposy)+Cos(c*10)*fx(fx_counter,fxstate)*5

End If

;FX Algorythmuss 4.. >
If fx(fx_counter,fxstyle)=4
fxpxlx=fx(fx_counter,fxposx)+Cos(c*10)*fx(fx_counter,fxstate)*2
fxpxly=fx(fx_counter,fxposy)+Sin(c*10)*fx(fx_counter,fxstate)*1
End If



If fxpxlx>0 And fxpxlx< scrx And fxpxly>0 And fxpxly<scry

r=fx(fx_counter,fxstyle)*20
g=fx(fx_counter,fxstyle)*20
b=fx(fx_counter,fxstyle)*20

r=250-fx(fx_counter,fxstate)*5
g=250-fx(fx_counter,fxstate)*15
b=250-fx(fx_counter,fxstate)*15


rgb=a*$1000000 + r*$10000 + g*$100 + b

LockBuffer BackBuffer()
WritePixelFast fxpxlx,fxpxly,rgb
UnlockBuffer BackBuffer()

EndIf
Next

fx_counter=fx_counter+1

Wend


End Function
[/code:1:3f40f2f0dc]
===
von ???
Sowas ähnliches wie c64 hab ich auch mal gemacht, nur etwas ... hm ... besser :wink:
http://comvil.bei.t-online.de/Fireworks.zip (Sourcecode enthalten; die .scr kann einfach in eine .exe umbenannt und normal gestartet werden, oder man benutzt den Testen-Menüpunkt des Explorers)

Tipp:
[code:1:f0bccb55c3]LockBuffer BackBuffer()
WritePixelFast fxpxlx,fxpxly,rgb
UnlockBuffer BackBuffer()[/code:1:f0bccb55c3]Wenn man das Lockbuffer außerhalb der For-Next-Schleife macht (oder am besten direkt am Anfang und Ende der showFX()-Funktion) ist dein Programm VIEL schneller.
===
von ???
Nette Dinger! Den ersten könnte man auch schön als Screensaver einstellen xD
===
von ???
THX CORNELIUS!!!...

guter Tip !!(hab BB erst n paar tage ,,,) aber die Function läuft
jetzt schneller und DANKE dass Du nicht gemeckert hasst,
sondern Geholfen !!!.......



Suche:
(unterstützt mySQL Wildcards ala %)
Titel:
Text:
Autor: