'===========================================================================
' Subject: TEXTMODE FIRE EFFECT               Date: 02-10-97 (19:02)       
'  Author: Angelo Ken Pesce                   Code: QB, QBasic, PDS        
'  Origin: ken@uniserv.uniplan.it           Packet: TEXT.ABC
'===========================================================================
'QBASIC TEXTMODE FIREEFFECT
'BY ANGELO KEN PESCE 1997

SCREEN 0: WIDTH 80, 50
DEFINT A-Z
DIM scrbuf(80, 50)

DO
GOSUB lastline
GOSUB randput
GOSUB fire
GOSUB updscr
LOOP

END
REM ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SUBS
updscr:
LOCATE 1, 1
FOR y = 1 TO 49
FOR x = 1 TO 80
SELECT CASE scrbuf(x, y)
CASE 0 TO 9
COLOR 0, 0: PRINT " ";
CASE 10 TO 19
COLOR 4, 0: PRINT "°";
CASE 20 TO 29
COLOR 4, 0: PRINT "±";
CASE 30 TO 39
COLOR 4, 0: PRINT "²";
CASE 40 TO 44
COLOR 14, 4: PRINT " ";
CASE 45 TO 50
COLOR 14, 4: PRINT "°";
CASE 51 TO 69
COLOR 14, 4: PRINT "±";
CASE 70 TO 89
COLOR 14, 4: PRINT "²";
CASE 90 TO 124
COLOR 14, 4: PRINT "Û";
CASE 125 TO 160
COLOR 15, 0: PRINT "Û";
END SELECT
NEXT
NEXT
RETURN

lastline:
FOR x = 1 TO 80
A = CINT(RND)
IF A = 1 THEN scrbuf(x, 50) = 0
IF A = 0 THEN scrbuf(x, 50) = 160
NEXT
RETURN

randput:
FOR I = 1 TO 5
x = INT(79 * RND + 1)
y = INT(49 * RND + 1)
scrbuf(x, y) = 160
scrbuf(x, y + 1) = 160
scrbuf(x + 1, y + 1) = 160
NEXT
RETURN

fire:
FOR x = 1 TO 79
FOR y = 1 TO 49
colr = scrbuf(x, y) + scrbuf(x + 1, y) + scrbuf(x, y + 1) + scrbuf(x - 1, y) + scrbuf(x, y - 1)
colr = INT(colr / 5.3 - INT(11 * RND - 5))
IF colr > 160 THEN colr = 160
IF colr < 0 THEN colr = 0
scrbuf(x, y - 1) = colr
NEXT
NEXT
RETURN
