Posts: 319
Threads: 68
Joined: Mar 2005
Alright ive always thought it would be cool to write a program that drawed a fire that looked quite real and looked cool and i thought by seeing some peoples entries that i could figure somthing out.
Rules
Looks like a flame or fire
Can be still or moving
no external files
Lots of remarks
his world has been connected...
Tied to the darkness.
Soon to be completely eclipsed.
There is so very much to learn...
You understand so little.
A meaningless effort.
One who knows nothing can understand nothing.
-Ansem Bringer of darkness and creator of the heartless
Posts: 129
Threads: 15
Joined: Mar 2005
Realistic fire is very difficult to do, even with advanced graphics techniques.
Posts: 319
Threads: 68
Joined: Mar 2005
Well not completely real but beliveable
his world has been connected...
Tied to the darkness.
Soon to be completely eclipsed.
There is so very much to learn...
You understand so little.
A meaningless effort.
One who knows nothing can understand nothing.
-Ansem Bringer of darkness and creator of the heartless
Posts: 1,025
Threads: 44
Joined: May 2005
Pyro:
01010111 01100101 01101100 01101100 00101100 00100000 01101101 01100001 01111001 01100010 01100101 00100000 01101001 01100110 00100000 01111001 01101111 01110101 00100000 01110000 01110101 01110100 00100000 01101001 01110100 00100000 01101001 01101110 00100000 01101000 01100101 01111000 00101110 00101110
And here's my entry (not exactly the effect I was going for, but it will suffice until I feel like changing it ) it runs very slow. on my comp its fine, but I'm sure on lower end systems it will look like cripe. :roll:
Code: DECLARE SUB SpawnParticle()
DECLARE SUB HandleParticles()
DECLARE SUB DrawParticles()
DECLARE SUB BuildSprite(argColor AS INTEGER, address AS INTEGER PTR, size AS INTEGER)
DECLARE FUNCTION Neighbors(index AS INTEGER) AS INTEGER
TYPE ParticleType
x AS DOUBLE
y AS INTEGER
xSpeed AS INTEGER
ySpeed AS INTEGER
heat AS INTEGER
lastUpdate AS DOUBLE
END TYPE
CONST MaxParticles = 1000
CONST SpawnRate = 100
CONST DecayFactor = 750'1000
RANDOMIZE TIMER
SCREENRES 640,480,32,2
DIM SHARED AS ParticleType particle(MaxParticles)
DIM SHARED AS INTEGER sprite(9)
DIM AS INTEGER tempCount
DIM AS DOUBLE lastSpawn
DIM AS INTEGER curPage
FOR tempCount = 0 TO 99
SpawnParticle()
NEXT
lastSpawn = TIMER
DO
CLS
HandleParticles()
DrawParticles()
SCREENSET curPage, -(curPage - 1)
curPage = -(curPage - 1)
IF (TIMER - lastSpawn) >= (1/SpawnRate) THEN
FOR tempCount = 1 TO (TIMER - lastSpawn)*SpawnRate
SpawnParticle()
NEXT
END IF
LOOP
SUB SpawnParticle()
DIM AS INTEGER tempX, tempY, tempHeat, tempCount
FOR tempCount = 0 TO MaxParticles -1
IF particle(tempCount).heat <= 0 THEN
particle(tempCount).x = 320 + INT(RND * 51) - 25'INT(RND * 11) - 5
particle(tempCount).y = 479
particle(tempCount).heat = INT(RND * 100)
particle(tempCount).ySpeed = particle(tempCount).heat \ 2 + 25
particle(tempCount).heat += 950
particle(tempCount).xSpeed = INT(RND * 50) - 25
particle(tempCount).lastUpdate = TIMER
EXIT FOR
END IF
NEXT
END SUB
SUB HandleParticles()
DIM AS INTEGER tempCount
FOR tempCount = 0 TO MaxParticles -1
IF particle(tempCount).heat > 0 THEN
IF particle(tempCount).ySpeed * (TIMER - particle(tempCount).lastUpdate) >= 1 THEN
particle(tempCount).lastUpdate = (TIMER - particle(tempCount).lastUpdate)
particle(tempCount).y -= particle(tempCount).ySpeed * particle(tempCount).lastUpdate
particle(tempCount).x += particle(tempCount).xSpeed * particle(tempCount).lastUpdate
particle(tempCount).heat -= (DecayFactor / Neighbors(tempCount)) * particle(tempCount).lastUpdate
particle(tempCount).lastUpdate = TIMER
END IF
END IF
NEXT
END SUB
SUB DrawParticles()
DIM AS INTEGER tempCount, tempColor, tempSize, tempAlpha
FOR tempCount = 0 TO MaxParticles -1
IF particle(tempCount).heat > 0 THEN
tempColor = INT(particle(tempCount).heat / 2.06)
tempSize = 1
IF tempColor > 255 THEN
IF tempColor > 383 THEN tempSize = 3 ELSE tempSize = 2
tempAlpha = (tempColor - 255)/1.33
tempColor = RGB(tempColor, tempColor - 510,0)
ELSE
tempAlpha = -tempColor
tempColor = RGB(tempColor, 0,0)
END IF
IF tempAlpha > 0 THEN
BuildSprite(tempColor, @sprite(0), tempSize)
PUT(particle(tempCount).x-1, particle(tempCount).y-1),@sprite(0),alpha,tempAlpha
tempAlpha = 255
ELSE
tempAlpha = -(tempColor)
END IF
BuildSprite(tempColor, @sprite(0), 1)
PUT (particle(tempCount).x, particle(tempCount).y),@sprite(0),pset'alpha,tempAlpha
END IF
NEXT
END SUB
FUNCTION Neighbors(index AS INTEGER) AS INTEGER
DIM AS INTEGER tempCount, tempNeighbors
FOR tempCount = 0 TO MaxParticles - 1
IF ABS(particle(tempCount).x - particle(index).x) < 2 THEN
IF ABS(particle(tempCount).y - particle(index).y) < 2 THEN
IF particle(tempCount).heat > 0 THEN tempNeighbors += 1
END IF
END IF
NEXT tempCount
RETURN (tempNeighbors - 1) 'SUBTRACT THE PARTICLE WE WERE CHECKING
END FUNCTION
SUB BuildSprite(argColor AS INTEGER, address AS INTEGER PTR, size AS INTEGER)
'Y*65536+X*8+4
address[0] = (size shl 16) + (size shl 3) + 4
address[1] = argColor
address[2] = argColor
address[3] = argColor
address[4] = argColor
address[5] = argColor
address[6] = argColor
address[7] = argColor
address[8] = argColor
address[9] = argColor
END SUB
Posts: 319
Threads: 68
Joined: Mar 2005
Deleter: 01001001 00100000 01101000 01100001 01110110 01101110 00100111 01110100 00100000 01101100 01100101 01100001 01110010 01101110 01100101 01100100 00100000 01101000 01100101 01111000 00100000 01101001 01101110 00100000 01101101 01111001 00100000 01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010 00100000 01101110 01100101 01110100 01110111 01101111 01110010 01101011 01101001 01101110 01100111 00100000 01100011 01101100 01100001 01110011 01110011 00100000 01111001 01100101 01110100 00100000 01101001 00100000 01110100 01101000 01101001 01101110 01101011 00100000 01110100 01101000 01100001 01110100 01110011 00100000 01110100 01101111 01101101 01101101 01101111 01110010 01101111 01110111
Hmm i cant get it to work i get a syntax error
his world has been connected...
Tied to the darkness.
Soon to be completely eclipsed.
There is so very much to learn...
You understand so little.
A meaningless effort.
One who knows nothing can understand nothing.
-Ansem Bringer of darkness and creator of the heartless
Posts: 1,272
Threads: 36
Joined: Feb 2003
Here's my attempt: Code: ' comment out to remove flamethrower
#define flamethrower
#define ft_width 9
' comment out to remove sparkle effect
#define sparkles 20
' comment out to fade smoothly
#define randomize_vertical
' simulates flickering from wind
#define randomize_horizontal
' Size of the screen
#define sw 320
#define sh 200
' Space on the right and left between fire and edge of screen
#define margin 40
screenres sw, sh, 8
' Now we set the palette
c = 0
' start with a 16 color light blue (200,200,255) -> white gradient
for x = 0 to 15
y = x * 55 \ 15
palette c, 200+y, 200+y, 255
c += 1
next x
' then an 84 color white to yellow gradient
for x = 0 to 83
palette c, 255, 255, 255 - x * 255 \ 83
c += 1
next x
' 20 color yellow -> dark red (215, 0, 0)
for x = 0 to 15+4
red = 255-(x shl 2)
palette c, red, 255 - x * 255 \ (15+4), 0
c += 1
next x
' 8 color dark red -> smokey gray (108, 108, 108)
for x = 0 to 7
palette c, red - x * (red-108) \ 7, x * 108 \ 7, x * 108 \ 7
c += 1
next x
' 128 color smokey gray -> black
for x = 0 to 127
y = 108 - (x * 108 \ 127)
palette c, y, y, y
c += 1
next x
' clear the screen to black
color , 255
cls
randomize timer
dim as ubyte ptr scrn, p0, p1, p2
n = 1
ftd = 1
do
#ifdef sparkles
' Draw some pixels at random locations
' the intensitiy increases downward (192 at the top, 0 at the bottom)
for c = 1 to sparkles
y = int(rnd * (sh - 1))
pset (int(rnd * (sw-2)) + 1, y), 192 - (y * 192 \ sh)
next c
#endif
screenlock
scrn = screenptr
' Randomize the bottom row of pixels
xs = margin ' Where the fire starts
xe = sw-1-margin ' Where the fire ends
p0 = scrn + sw * (sh - 1) ' pointer to bottom row
for x = xs to xe
p0[x] = (p0[x] * 2 + int(rnd * 210)) \ 3
next x
#ifdef flamethrower
ftx += ftd ' move the flamethrower
' make it bounce
if ftx < 1 or ftx >= sw-ft_width-1 then ftd = -ftd
' draw it
p0[ftx] = 160
for x = ftx+1 to ftx+ft_width-1
p0[x] = 0
next x
p0[x] = 160
#endif
p0 = scrn ' pointer to the top row of pixels
p1 = p0 + sw ' the next row
p2 = p1 + sw ' and the row after that
' Loop over all but the last 2 rows
for y = 0 to sh-3
#ifdef randomize_vertical
n = int(rnd * 3)
#endif
#ifdef randomize_horizontal
d = int(rnd * 3) - 1
#endif
' Loop over all but the first and last column
for x = 1 to sw-2
xd = x + d
if xd < 1 or xd > sw-2 then xd = x
' Take the average of a 3x2 block of pixels at (xd, y)
' giving the top row twice as much weight
c = p1[xd-1] + p1[xd] + p1[xd+1]
c = c+c + p2[xd-1] + p2[xd] + p2[xd+1]
c = c \ 9
' Fade the pixel a little (blue->white->yellow->red->grey->black)
c += n
if c > 255 then c = 255
p0[x] = c
next x
' Advance the pointers to the next row
p0 += sw
p1 += sw
p2 += sw
next y
' Do the second to bottom row
p0 = scrn + (sh-2) * sw ' pointer to row sh-2
p1 = p0 + sw ' pointer to the row below p0 (the last row, sh-1)
for x = 1 to sw-2
' Take the average of a 3x1 block of pixels
c = (p1[x-1] + p1[x] + p1[x+1]) \ 3
' Fade the pixel a little (blue->white->yellow->red->grey->black)
c += 2
if c > 255 then c = 255
p0[x] = c
next x
screenunlock
' Wait 8 milliseconds
sleep 8
' Stop looping if the user has pressed a key
loop until len(inkey$)
end
Posts: 500
Threads: 7
Joined: Jun 2005
Quote:Deleter: 01001001 00100000 01101000 01100001 01110110 01101110 00100111 01110100 00100000 01101100 01100101 01100001 01110010 01101110 01100101 01100100 00100000 01101000 01100101 01111000 00100000 01101001 01101110 00100000 01101101 01111001 00100000 01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010 00100000 01101110 01100101 01110100 01110111 01101111 01110010 01101011 01101001 01101110 01100111 00100000 01100011 01101100 01100001 01110011 01110011 00100000 01111001 01100101 01110100 00100000 01101001 00100000 01110100 01101000 01101001 01101110 01101011 00100000 01110100 01101000 01100001 01110100 01110011 00100000 01110100 01101111 01101101 01101101 01101111 01110010 01101111 01110111
Hmm i cant get it to work i get a syntax error
[syntax="Binary"]01000011 01101000 01100101 01100011 01101011 00100000 01111001 01101111 01110101 01110010 00100000 01010000 01001101 01110011 00100000 01101001 01100110 00100000 01111001 01101111 01110101 00100000 01101000 01100001 01110110 01100101 01101110 00100111 01110100 00100000 01100001 01101100 01110010 01100101 01100001 01100100 01111001 00101110 00100000 01001001 00100000 01110011 01100101 01101110 01110100 00100000 01111001 01101111 01110101 00100000 01100001 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 00100000 01110100 01101000 01100001 01110100 00100000 01100011 01101111 01101110 01110110 01100101 01110010 01110100 01110011 00100000 01100110 01110010 01101111 01101101 00100000 01101000 01100101 01111000 00100000 01110100 01101111 00100000 01100001 01110011 01100011 01101001 01101001 00101100 00100000 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01110100 01101111 00100000 01100001 01110011 01100011 01101001 01101001 00101100 00100000 01100001 01110011 01100011 01101001 01101001 00100000 01110100 01101111 00100000 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01100001 01101110 01100100 00100000 01100001 01110011 01100011 01101001 01101001 00100000 01110100 01101111 00100000 01101000 01100101 01111000 00101110[/syntax]
974277320612072617420666C61696C21 (Hexadecimal for those who don't know)
Posts: 319
Threads: 68
Joined: Mar 2005
01001100 01101111 01101100 00100000 01111001 01101111 01110101 01110010 00100000 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01110011 01110100 01110010 01101001 01101110 01100111 00100000 01110111 01100001 01110011 00100000 01101111 01110110 01100101 01110010 00100000 00110001 00110011 00110000 00110000 00100000 01100011 01101000 01100001 01110010 00100000 01100001 01101110 01100100 00100000 01101001 00100000 01101000 01100001 01100100 00100000 01110100 01101111 00100000 01110011 01110000 01101100 01101001 01110100 00100000 01101001 01110100 00101110 00100000 01000001 01101110 01111001 01110111 01100001 01111001 01110011 00100000 01110100 01101000 01100001 01101110 01101011 01110011 00100000 01100010 01110101 01110100 00100000 01101001 00100000 01100100 01101111 01101110 01110100 00100000 01101110 01100101 01100101 01100100 00100000 01101001 01110100
his world has been connected...
Tied to the darkness.
Soon to be completely eclipsed.
There is so very much to learn...
You understand so little.
A meaningless effort.
One who knows nothing can understand nothing.
-Ansem Bringer of darkness and creator of the heartless
Posts: 127
Threads: 9
Joined: Oct 2004
I'm gonna have nightmares about 1's and 0's :lol:
If swimming is so good for your figure, how do you explain walruses?
Posts: 650
Threads: 26
Joined: Aug 2004
lol, i guess you guys made a program to convert ASCII values in bi. i would do the same if i wern't so lazy.
quote="whitetiger0990"]whitetiger is.. WHITE POWER!!! [/quote]
Here
|