Computer Science Canada

fire works

Author:  zylum [ Wed Feb 25, 2004 5:48 pm ]
Post subject:  fire works

here's a fire works effect i made. enjoy Very Happy

code:

setscreen ("graphics:1000;650,offscreenonly")

const size := 100
const fireLength := 50
var decay := 0.98
var gravity := 1
var pixel : array 1 .. size, 1 .. 2 of real
var velocity : array 1 .. size, 1 .. 2 of real
var px, py : real

procedure newFire (x, y, vx, maxV : real)
    var ang : int
    for i : 1 .. size
        pixel (i, 1) := x
        pixel (i, 2) := y
        ang := Rand.Int (0, 360)
        velocity (i, 1) := cosd (ang) * (Rand.Real * (2 * maxV) - maxV) + vx
        velocity (i, 2) := sind (ang) * (Rand.Real * (2 * maxV) - maxV)
    end for
end newFire

procedure moveFire (c : int)
    for i : 1 .. size
        pixel (i, 1) += velocity (i, 1)
        pixel (i, 2) += velocity (i, 2)
        velocity (i, 1) *= decay
        velocity (i, 2) -= gravity
        velocity (i, 2) *= decay
        drawdot (round (pixel (i, 1)), round (pixel (i, 2)), c)
    end for
end moveFire

procedure launch (x, ang, spd, c : int)
    px := x
    py := 0
    var pvx, pvy : real
    pvx := cosd (ang) * spd
    pvy := sind (ang) * spd
    loop
        exit when pvy < 0
        drawfillbox (0, 0, maxx, maxy, 7)
        px += pvx
        py += pvy
        pvx *= decay
        pvy -= gravity
        pvy *= decay
        drawfilloval (round (px), round (py), 3, 3, c)
        View.Update
        cls
    end loop
    newFire (px, py, pvx, 10)
    for i : 1 .. fireLength
        drawfillbox (0, 0, maxx, maxy, 7)
        moveFire (c)
        View.Update
        cls
    end for
end launch

loop
    launch (Rand.Int (100, maxx - 100), Rand.Int (70, 110), 40, Rand.Int (0, 255))
end loop


-zylum

Author:  Paul [ Wed Feb 25, 2004 5:53 pm ]
Post subject: 

pretty nice, though it goes a bit too fast on my computer and sometimes it doesn't explode (or is it in colors that I can't see?)

Author:  jonos [ Wed Feb 25, 2004 5:55 pm ]
Post subject: 

yeah, i can't see it also, only a few colours every now and then.

Author:  Tony [ Wed Feb 25, 2004 5:56 pm ]
Post subject: 

it is defenatly too fast... but if you slow it down a bit (a delay here and there) it looks nice Very Happy +10Bits

Author:  the_short1 [ Wed Feb 25, 2004 6:17 pm ]
Post subject: 

i still dont get how y9ou can make so many programs...

WAIT I KNOW>>>> I THINK I FIGURED IT OUT>>>> you make these in school dont u???? that is why ur able to make so many DAM programs every DAM week...

anyways....

fireworks ROCKS>>>>> i have a realy slow computer so animations were perfect

in 63 lines... That is NICE!

itd take me prob 300 liens and 3 hours

Author:  zylum [ Wed Feb 25, 2004 6:19 pm ]
Post subject: 

lol, i guess that must mean my computer is a peice of crap cuz it runs at normal speeds here Shocked and yeah, i should have specified a color range that doesnt have a bunch of dark colors in it...

oh and the_short1, i dont do these at school... in fact i dont do anything in compsci... i just play games and do all the assignments on saturday cuz theyre sooo damn easy... anyways, im glad you like my proggies Very Happy

Author:  jonos [ Wed Feb 25, 2004 8:14 pm ]
Post subject: 

your class must rock!!! jk, it sucks having an easy class sometimes

Author:  Cervantes [ Thu Feb 26, 2004 6:14 pm ]
Post subject: 

If you look close enough (unless its actually a black ball) you can see the particles flying off.

Great job zylum!

Author:  Andy [ Thu Feb 26, 2004 9:34 pm ]
Post subject: 

ever heard of delay?

Author:  the_short1 [ Thu Feb 26, 2004 9:46 pm ]
Post subject: 

one thing... your program kinda sucks with 800x600 res... maybe have a option for both taht and 1000+w/e the other number is

Author:  WhatAmIDoing [ Mon Mar 01, 2004 12:18 pm ]
Post subject: 

Thats pretty cool all though if you add a delay of 50 after the View.update it really works a lot better

Author:  Hotaru [ Wed Mar 03, 2004 6:54 pm ]
Post subject: 

your program worked very well~but there is only one suggestion~the colour is plain~so perhaps you can make the fireworks multi-colored~

Author:  Tallguy [ Wed Apr 23, 2008 12:54 pm ]
Post subject:  RE:fire works

cool, but to agree with everyone, do add delays, and have more then one firecracker go off @ the same time

Author:  Mackie [ Wed Apr 23, 2008 2:42 pm ]
Post subject:  RE:fire works

How did you even manage to find this? It's four years old I hope you realize.

Author:  Tallguy [ Thu Apr 24, 2008 7:03 am ]
Post subject:  RE:fire works

i searched it, i need fireworks for my final, so i wanted to see wat others had made

Author:  repsoccer16 [ Thu Apr 24, 2008 7:20 am ]
Post subject:  RE:fire works

good program just need to slow it down a ways.

Author:  death bringer [ Tue Apr 29, 2008 10:59 am ]
Post subject:  RE:fire works

I fixed the code and made the effect slower enjoy
-Death bringer

setscreen ("graphics:max;max,offscreenonly")

const size := 100
const fireLength := 150
var decay := 0.98
var gravity := 1
var pixel : array 1 .. size, 1 .. 2 of real
var velocity : array 1 .. size, 1 .. 2 of real
var px, py : real

procedure newFire (x, y, vx, maxV : real)
var ang : int
for i : 1 .. size
pixel (i, 1) := x
pixel (i, 2) := y
ang := Rand.Int (0, 360)
velocity (i, 1) := cosd (ang) * (Rand.Real * (2 * maxV) - maxV) + vx
velocity (i, 2) := sind (ang) * (Rand.Real * (2 * maxV) - maxV)
end for
end newFire

procedure moveFire (c : int)
for i : 1 .. size
pixel (i, 1) += velocity (i, 1)
pixel (i, 2) += velocity (i, 2)
velocity (i, 1) *= decay
velocity (i, 2) -= gravity
velocity (i, 2) *= decay
drawdot (round (pixel (i, 1)), round (pixel (i, 2)), c)
end for
end moveFire

procedure launch (x, ang, spd, c : int)
px := x
py := 0
var pvx, pvy : real
pvx := cosd (ang) * spd
pvy := sind (ang) * spd
loop
exit when pvy < 0
drawfillbox (0, 0, maxx, maxy, 7)
px += pvx
py += pvy
pvx *= decay
pvy -= gravity
pvy *= decay
drawfilloval (round (px), round (py), 3, 3, c)
View.Update
cls
end loop
newFire (px, py, pvx, 10)
for i : 1 .. fireLength
drawfillbox (0, 0, maxx, maxy, 7)
moveFire (c)
View.Update
cls
end for
end launch

loop
launch (Rand.Int (100, maxx - 100), Rand.Int (70, 110), 40, Rand.Int (0, 255))
end loop

Author:  death bringer [ Tue Apr 29, 2008 11:18 am ]
Post subject:  RE:fire works

Also


setscreen ("graphics:max;max,offscreenonly")

const size := 100
const fireLength := 200
var decay := 0.93
var gravity := 0.1
var pixel : array 1 .. size, 1 .. 2 of real
var velocity : array 1 .. size, 1 .. 2 of real
var px, py : real

procedure newFire (x, y, vx, maxV : real)
var ang : int
for i : 1 .. size
pixel (i, 1) := x
pixel (i, 2) := y
ang := Rand.Int (500, 30000)

velocity (i, 1) := cosd (ang) * (Rand.Real * (2 * maxV) - maxV) + vx
velocity (i, 2) := sind (ang) * (Rand.Real * (2 * maxV) - maxV)
end for
end newFire

procedure moveFire (c : int)

for i : 1 .. size
pixel (i, 1) += velocity (i, 1)
pixel (i, 2) += velocity (i, 2)
velocity (i, 1) *= decay
velocity (i, 2) -= gravity
velocity (i, 2) *= decay
drawdot (round (pixel (i, 1)), round (pixel (i, 2)), c)
end for
end moveFire

procedure launch (x, ang, spd, c : int)
px := x
py := 0
var pvx, pvy : real
pvx := cosd (ang) * spd
pvy := sind (ang) * spd
loop
exit when pvy < 0
drawfillbox (0, 0, maxx, maxy, 7)
px += pvx
py += pvy
pvx *= decay
pvy -= gravity
pvy *= decay
drawfilloval (round (px), round (py), 2, 2, c)
View.Update
cls
end loop
newFire (px, py, pvx, 10)
for i : 1 .. fireLength

drawfillbox (0, 1, maxx, maxy, 7)

moveFire (c)
View.Update
cls
end for
end launch

loop
launch (Rand.Int (100, maxx - 100), Rand.Int (70, 110), 40, Rand.Int (0, 255))
end loop

Author:  Tallguy [ Tue Apr 29, 2008 12:39 pm ]
Post subject:  RE:fire works

nows its really fast

Author:  raidercom [ Tue Apr 29, 2008 2:36 pm ]
Post subject:  Re: fire works

I can hardly see anything its so fast...

Might wanna try a Time.DelaySinceLast (75) in the main loop.

Author:  death bringer [ Thu May 01, 2008 11:03 am ]
Post subject:  RE:fire works

Sorry about the last 2 post i made. when i had goten home it had gone faster on my computer i hope now this post finishes this issue.

setscreen ("graphics:max;max,offscreenonly,nocursor")
colorback (7)
process Bump_Sound2
sound (500, 200)
end Bump_Sound2
process Bump_Sound
sound (1000, 1)
end Bump_Sound
procedure Blur_Screen (I, C : int)
Blur_Screen (100, 9)
for B : 1 .. I
drawline (Rand.Int (1, maxx), Rand.Int (1, maxy),
Rand.Int (1, maxx), Rand.Int (1, maxy), C)

end for
end Blur_Screen

const size := 100
const fireLength := 400
var decay := 0.93
var gravity := 0.1
var pixel : array 1 .. size, 1 .. 2 of real
var velocity : array 1 .. size, 1 .. 2 of real
var px, py : real

procedure newFire (x, y, vx, maxV : real)
var ang : int
for i : 1 .. size
pixel (i, 1) := x
pixel (i, 2) := y
ang := Rand.Int (500, 30000)

velocity (i, 1) := cosd (ang) * (Rand.Real * (2 * maxV) - maxV) + vx
velocity (i, 2) := sind (ang) * (Rand.Real * (2 * maxV) - maxV)
end for
end newFire

procedure moveFire (c : int)

for i : 1 .. size
pixel (i, 1) += velocity (i, 1)
pixel (i, 2) += velocity (i, 2)
velocity (i, 1) *= decay
velocity (i, 2) -= gravity
velocity (i, 2) *= decay

drawdot (round (pixel (i, 1)), round (pixel (i, 2)), c)
end for
end moveFire

procedure launch (x, ang, spd, c : int)
px := x
py := 0
var pvx, pvy : real
pvx := cosd (ang) * spd
pvy := sind (ang) * spd
loop
fork Bump_Sound2
exit when pvy < 0

px += pvx
py += pvy
pvx *= decay
pvy -= gravity
pvy *= decay
drawfilloval (round (px), round (py), 2, 2, c)
View.Update
cls
end loop
newFire (px, py, pvx, 20)
for i : 1 .. fireLength



moveFire (c)
View.Update
cls
end for
fork Bump_Sound
end launch

loop
launch (Rand.Int (100, maxx - 100), Rand.Int (70, 110), 40, Rand.Int (0, 255))
end loop

Author:  Michael516 [ Fri May 02, 2008 8:08 am ]
Post subject:  RE:fire works

this one works a lot better, but i think that the fireworks need to be a little more colorful.

Author:  Carey [ Mon May 05, 2008 10:16 am ]
Post subject:  RE:fire works

Please get a lock on this. This topic is 4 years old.

Author:  death bringer [ Mon May 05, 2008 10:48 am ]
Post subject:  RE:fire works

If you want the fire work to move even slower place this after line 57

delay(3)


: