>?HD8HHHHH88H88H8H8H@H;H8888888H888@8CH@8@8@8HH838D8D880DH0@88HHH @0@88@000H@000@@0@@0H@HH080@08D80@@@B@0H@0@D0H 0@H0@@002@0 0000@010000  @@  @0@  @@@0@ @ 0 0  0@ 0 0@ @0 0@0  @@ @00    @ 00   0 -- title: burn -- author: potato imaginator -- desc: Press 'Z' to reset -- script: lua w=1 -- width of text t=0 -- time cos=math.cos sin=math.sin pi=math.pi a={} -- array 1 of text points for i=0,240//(10*w) do a[i]={} for j=0,136//(10*w) do a[i][j]={} for k=0,2 do a[i][j][k]={} for l=0,2 do a[i][j][k][l]=math.random(0,1) end end end end bl={} -- array-2 of text lines (length) for i=0,240//(10*w) do bl[i]={} for j=0,136//(10*w) do bl[i][j]={} for k=0,1 do bl[i][j][k]={} for l=0,2 do if a[i][j][k][l]==1 and a[i][j][k+1][l]==1 then bl[i][j][k][l]=math.random(0,1) else bl[i][j][k][l]=0 end end end end end bh={} -- array-2 of text lines (height) for i=0,240//(10*w) do bh[i]={} for j=0,136//(10*w) do bh[i][j]={} for k=0,2 do bh[i][j][k]={} for l=0,1 do if a[i][j][k][l]==1 and a[i][j][k][l+1]==1 then bh[i][j][k][l]=math.random(0,1) else bh[i][j][k][l]=0 end end end end end f={} -- fire array for i=0,239 do f[i]= {y=136, c=math.random(3,4)} end function upd_fire() for i=0,239 do if math.random(1,3)>2 then f[i].y=f[i].y-1/2 end end end function draw_fire() for i=0,239 do line(i,f[i].y,i,136,0) pix(i,f[i].y,f[i].c) end end s={} -- fire smoke array for i=0,239 do s[i]= {t=10*math.random(3,6)} s[i].v=math.random(0,s[i].t-1) end function upd_smoke() for i=0,239 do s[i].v=(s[i].v+1)%s[i].t if s[i].v==0 and f[i].y>0 and math.random(1,2)==2 then s[i][#s[i]+1]= {y=f[i].y, dy=math.random(1,4), v=2*math.random(1,4), ang=2*pi*math.random(0,99)/100, c=math.random(1,4)} end for j=1,#s[i] do if s[i][j]~=nil then s[i][j].y=s[i][j].y+s[i][j].dy/4 if s[i][j].y>=136 then table.remove(s[i],j) end end end end end function draw_smoke() for i=0,239 do for j=1,#s[i] do if s[i][j]~=nil then pix (i+s[i][j].v*cos(t+s[i][j].ang), s[i][j].y,s[i][j].c) end end end end function TIC() cls(8) upd_fire() upd_smoke() for i=0,240//(10*w) do for j=0,136//(10*w) do for k=0,2 do for l=0,2 do if a[i][j][k][l]==1 then rect (5*w+10*w*i+2*w*k, 5*w+10*w*j+2*w*l,w,w,11) end end end end end for i=0,240//(10*w) do for j=0,136//(10*w) do for k=0,1 do for l=0,2 do if bl[i][j][k][l]==1 then rect (5*w+10*w*i+2*w*k+w, 5*w+10*w*j+2*w*l,w,w,11) end end end end end for i=0,240//(10*w) do for j=0,136//(10*w) do for k=0,2 do for l=0,1 do if bh[i][j][k][l]==1 then rect (5*w+10*w*i+2*w*k, 5*w+10*w*j+2*w*l+w,w,w,11) end end end end end draw_fire() draw_smoke() if btnp(4) then reset() end t=t+1/30 end