diff --git a/doom_fire.lua b/doom_fire.lua new file mode 100644 index 0000000..d75ebe2 --- /dev/null +++ b/doom_fire.lua @@ -0,0 +1,80 @@ +-- title: Doom Fire +-- author: Fabien Freling +-- desc: short description +-- script: lua + +t=0 +width=240 +height=136 +base={} +-- init with black +for i=1,width*height do + base[i] = 0 +end +for i=width*(height-1),width*height do + base[i] = 15 +end +cls(0) + +function display() + for y=1,height do + for x=1,width do + pix(x, y, base[x+y*width]) + end + end +end + +function dofire() + for x=1,width do + for y=0,height-2 do + spreadfire(x, y) + end + end +end + +function spreadfire(x, y) + local rand = math.random(0, 3) -- [0,3] + local delta = rand & 1 + local side = -rand+1 -- [-2,1] + if x+side < 1 then side=0 end + if x+side > width then side=0 end + local dst=(x+side) + y*width + local src=x + (y+1)*width + base[dst] = base[src] - delta + if base[dst] < 0 then base[dst]=0 end +end + +function TIC() + display() + -- slow down fire + if t % 2 == 0 then + dofire() + end + t=t+1 +end + +-- +-- 001:efffffffff222222f8888888f8222222f8fffffff8ff0ffff8ff0ffff8ff0fff +-- 002:fffffeee2222ffee88880fee22280feefff80fff0ff80f0f0ff80f0f0ff80f0f +-- 003:efffffffff222222f8888888f8222222f8fffffff8fffffff8ff0ffff8ff0fff +-- 004:fffffeee2222ffee88880fee22280feefff80ffffff80f0f0ff80f0f0ff80f0f +-- 017:f8fffffff8888888f888f888f8888ffff8888888f2222222ff000fffefffffef +-- 018:fff800ff88880ffef8880fee88880fee88880fee2222ffee000ffeeeffffeeee +-- 019:f8fffffff8888888f888f888f8888ffff8888888f2222222ff000fffefffffef +-- 020:fff800ff88880ffef8880fee88880fee88880fee2222ffee000ffeeeffffeeee +-- + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000 +-- + +-- +-- 000:140c1c4424345d403c794a4eb23030d62424fa0000e6690cee6d10d2a12cceaa40caa13cd2aa40e6c271dad45effffff +-- +