'=========================================================================== ' 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