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 !!!....... |