From: Svjatoslav Agejenko Date: Sun, 22 Sep 2024 22:43:58 +0000 (+0300) Subject: Using AI to improve code readability X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=commitdiff_plain;h=a122004c10eb624229dd42b68615b6b716c8fff6;p=qbasicapps.git Using AI to improve code readability --- diff --git a/Games/Worm/worm.bas b/Games/Worm/worm.bas index 772293b..15cad7b 100755 --- a/Games/Worm/worm.bas +++ b/Games/Worm/worm.bas @@ -1,24 +1,24 @@ ' Worm game ' by Svjatoslav Agejenko 2002 -DECLARE FUNCTION cnum$ (a%) -DECLARE SUB putworm (a%) -DECLARE SUB level (a%) -DECLARE SUB showb () -DECLARE SUB sc2 (x%, y%) -DECLARE SUB ai (a%) -DECLARE SUB autop (a%) -DECLARE SUB stat () -DECLARE SUB prc (a%) -DECLARE SUB stuff () -DECLARE SUB dead (a%) -DECLARE SUB add (a%) -DECLARE SUB tkt () -DECLARE SUB subt (b%) -DECLARE SUB show () -DECLARE SUB start () -DECLARE SUB init () -DECLARE SUB sc (x%, y%) +DECLARE FUNCTION cnum$(a%) +DECLARE SUB putworm(a%) +DECLARE SUB level(a%) +DECLARE SUB showb() +DECLARE SUB sc2(x%, y%) +DECLARE SUB ai(a%) +DECLARE SUB autop(a%) +DECLARE SUB stat() +DECLARE SUB prc(a%) +DECLARE SUB stuff() +DECLARE SUB dead(a%) +DECLARE SUB add(a%) +DECLARE SUB tkt() +DECLARE SUB subt(b%) +DECLARE SUB show() +DECLARE SUB start() +DECLARE SUB init() +DECLARE SUB sc(x%, y%) DEFINT A-Z DIM SHARED buf(0 TO 36, 0 TO 36) @@ -46,7 +46,6 @@ lvl = 1 wai = 0 wai = 20 - auto(1) = 0 auto(2) = 0 auto(3) = 0 @@ -54,15 +53,14 @@ auto(4) = 0 auto(5) = 0 CLS -INPUT "How mutch players 1 - 5:", ussm -INPUT "How mutch of them is computers:", a +INPUT "How many players (1 - 5):", ussm +INPUT "How many of them are computers:", a FOR b = ussm TO ussm - a + 1 STEP -1 -auto(b) = 1 + auto(b) = 1 NEXT b -INPUT "How mutch lives:", elum -INPUT "Speed: (1-slow 3-ok 10-very fast)", spd - +INPUT "How many lives:", elum +INPUT "Speed: (1-slow, 3-ok, 10-very fast)", spd start @@ -71,354 +69,502 @@ level lvl tkt SOUND 0, 5 / spd IF mtm >= 15 THEN -mtm = 1 -lvl = lvl + 1 -level lvl + mtm = 1 + lvl = lvl + 1 + level lvl END IF GOTO 1 -SUB ai (a) +SUB ai(a%) + FOR y = 0 TO 36 + FOR x = 0 TO 36 + buf2(x, y) = 32000 + IF buf(x, y) = 2 THEN buf2(x, y) = 0 + IF buf(x, y) > 9 OR buf(x, y) = 1 THEN buf2(x, y) = -1 + NEXT x + NEXT y + + IF buf2(16, 16) = 32000 THEN buf2(16, 16) = 15000 + + 6 + b = 0 + FOR y = 1 TO 35 + FOR x = 1 TO 34 + IF (buf2(x + 1, y) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN + buf2(x + 1, y) = buf2(x, y) + 1 + b = 1 + END IF + NEXT x + + FOR x = 35 TO 2 STEP -1 + IF (buf2(x - 1, y) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN + buf2(x - 1, y) = buf2(x, y) + 1 + b = 1 + END IF + NEXT x + + IF (buf2(1, y) > buf2(35, y) + 1) AND (buf2(35, y) >= 0) THEN + buf2(1, y) = buf2(35, y) + 1 + b = 1 + END IF + + IF (buf2(35, y) > buf2(1, y) + 1) AND (buf2(1, y) >= 0) THEN + buf2(35, y) = buf2(1, y) + 1 + b = 1 + END IF + NEXT y + + FOR x = 1 TO 35 + FOR y = 1 TO 34 + IF (buf2(x, y + 1) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN + buf2(x, y + 1) = buf2(x, y) + 1 + b = 1 + END IF + NEXT y + + FOR y = 35 TO 2 STEP -1 + IF (buf2(x, y - 1) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN + buf2(x, y - 1) = buf2(x, y) + 1 + b = 1 + END IF + NEXT y + + IF (buf2(x, 1) > buf2(x, 35) + 1) AND (buf2(x, 35) >= 0) THEN + buf2(x, 1) = buf2(x, 35) + 1 + b = 1 + END IF + + IF (buf2(x, 35) > buf2(x, 1) + 1) AND (buf2(x, 1) >= 0) THEN + buf2(x, 35) = buf2(x, 1) + 1 + b = 1 + END IF + NEXT x + + IF b = 1 THEN GOTO 6 + + tx = ux(a) + ty = uy(a) + 'sc2 tx, ty + + d = 0 + 7 + b = 32001 + tmpxp = 0 + tmpyp = 0 + IF (buf2(tx - 1, ty) < b) AND (buf2(tx - 1, ty) >= 0) THEN + b = buf2(tx - 1, ty) + tmpxp = -1 + tmpyp = 0 + c = 1 + END IF + + IF (buf2(tx, ty - 1) < b) AND (buf2(tx, ty - 1) >= 0) THEN + b = buf2(tx, ty - 1) + tmpxp = 0 + tmpyp = -1 + c = 2 + END IF + + IF (buf2(tx + 1, ty) < b) AND (buf2(tx + 1, ty) >= 0) THEN + b = buf2(tx + 1, ty) + tmpxp = 1 + tmpyp = 0 + c = 3 + END IF + + IF (buf2(tx, ty + 1) < b) AND (buf2(tx, ty + 1) >= 0) THEN + b = buf2(tx, ty + 1) + tmpxp = 0 + tmpyp = 1 + c = 4 + END IF + + IF b = 32001 THEN + 'SOUND 3000, 1 + tmpxp = -1 + tmpyp = 0 + c = 1 + b = -1 + END IF + + buf2(tx, ty) = -1 + d = d + 1 + ussk(d, a) = c + tx = tx + tmpxp + ty = ty + tmpyp + + IF tx = 1 THEN tx = 34 + IF ty = 1 THEN ty = 34 + IF tx = 35 THEN tx = 2 + IF ty = 35 THEN ty = 2 + + e = buf2(tx, ty) + buf2(tx, ty) = -1 + + sc2 tx, ty + + IF d > ail THEN GOTO 8 + + IF (e > 0) AND (b > -1) THEN GOTO 7 + + 8 + d = d + 1 + ussk(d, a) = 5 + usskp(a) = 1 + + showb +END SUB +SUB autop(a%) + c = 0 + + 5 + IF usskp(a) > 0 THEN + b = ussk(usskp(a), a) + + IF b = 1 THEN + uxp(a) = -1 + uyp(a) = 0 + ELSEIF b = 2 THEN + uxp(a) = 0 + uyp(a) = -1 + ELSEIF b = 3 THEN + uxp(a) = 1 + uyp(a) = 0 + ELSEIF b = 4 THEN + uxp(a) = 0 + uyp(a) = 1 + ELSEIF b = 5 THEN + ai a + GOTO 5 + END IF + + usskp(a) = usskp(a) + 1 + END IF + + nx = ux(a) + uxp(a) + ny = uy(a) + uyp(a) + + b = buf(INT(nx), INT(ny)) + + IF (b = 1 OR b > 9) AND (c = 0) THEN + ai a + c = 1 + GOTO 5 + END IF +END SUB -FOR y = 0 TO 36 -FOR x = 0 TO 36 -buf2(x, y) = 32000 -IF buf(x, y) = 2 THEN buf2(x, y) = 0 -IF buf(x, y) > 9 OR buf(x, y) = 1 THEN buf2(x, y) = -1 -NEXT x -NEXT y +FUNCTION cnum$(a%) + b$ = STR$(a%) -IF buf2(16, 16) = 32000 THEN buf2(16, 16) = 15000 + IF LEFT$(b$, 1) = " " THEN + b$ = RIGHT$(b$, LEN(b$) - 1) + END IF + cnum$ = b$ +END FUNCTION -6 -b = 0 -FOR y = 1 TO 35 -FOR x = 1 TO 34 -IF (buf2(x + 1, y) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN buf2(x + 1, y) = buf2(x, y) + 1: b = 1 -NEXT x -FOR x = 35 TO 2 STEP -1 -IF (buf2(x - 1, y) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN buf2(x - 1, y) = buf2(x, y) + 1: b = 1 -NEXT x +SUB dead(a%) + elud(a) = elud(a) - 1 + putworm a +END SUB -IF (buf2(1, y) > buf2(35, y) + 1) AND (buf2(35, y) >= 0) THEN buf2(1, y) = buf2(35, y) + 1: b = 1 -IF (buf2(35, y) > buf2(1, y) + 1) AND (buf2(1, y) >= 0) THEN buf2(35, y) = buf2(1, y) + 1: b = 1 -NEXT y +SUB init() + level 1 +END SUB -FOR x = 1 TO 35 -FOR y = 1 TO 34 -IF (buf2(x, y + 1) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN buf2(x, y + 1) = buf2(x, y) + 1: b = 1 -NEXT y -FOR y = 35 TO 2 STEP -1 -IF (buf2(x, y - 1) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN buf2(x, y - 1) = buf2(x, y) + 1: b = 1 -NEXT y +SUB level(a%) + LOCATE 5, 5 + PRINT "G E T R E A D Y" + LOCATE 7, 5 + PRINT "L E V E L :"; a% -IF (buf2(x, 1) > buf2(x, 35) + 1) AND (buf2(x, 35) >= 0) THEN buf2(x, 1) = buf2(x, 35) + 1: b = 1 -IF (buf2(x, 35) > buf2(x, 1) + 1) AND (buf2(x, 1) >= 0) THEN buf2(x, 35) = buf2(x, 1) + 1: b = 1 -NEXT x + FOR b = 1 TO wai + SOUND 0, 1 + NEXT b -IF b = 1 THEN GOTO 6 - -tx = ux(a) -ty = uy(a) -'sc2 tx, ty - -d = 0 -7 -b = 32001 -tmpxp = 0 -tmpyp = 0 -IF (buf2(tx - 1, ty) < b) AND (buf2(tx - 1, ty) >= 0) THEN b = buf2(tx - 1, ty): tmpxp = -1: tmpyp = 0: c = 1 -IF (buf2(tx, ty - 1) < b) AND (buf2(tx, ty - 1) >= 0) THEN b = buf2(tx, ty - 1): tmpxp = 0: tmpyp = -1: c = 2 -IF (buf2(tx + 1, ty) < b) AND (buf2(tx + 1, ty) >= 0) THEN b = buf2(tx + 1, ty): tmpxp = 1: tmpyp = 0: c = 3 -IF (buf2(tx, ty + 1) < b) AND (buf2(tx, ty + 1) >= 0) THEN b = buf2(tx, ty + 1): tmpxp = 0: tmpyp = 1: c = 4 - -IF b = 32001 THEN -'SOUND 3000, 1 -tmpxp = -1 -tmpyp = 0 -c = 1 -b = -1 -END IF + CLS -buf2(tx, ty) = -1 -d = d + 1 -ussk(d, a) = c -tx = tx + tmpxp -ty = ty + tmpyp -IF tx = 1 THEN tx = 34 -IF ty = 1 THEN ty = 34 -IF tx = 35 THEN tx = 2 -IF ty = 35 THEN ty = 2 -e = buf2(tx, ty) -buf2(tx, ty) = -1 + FOR y = 0 TO 36 + FOR x = 0 TO 36 + buf(x, y) = 0 + NEXT x + NEXT y -sc2 tx, ty -IF d > ail THEN GOTO 8 -IF (e > 0) AND (b > -1) THEN GOTO 7 -8 -d = d + 1 -ussk(d, a) = 5 -usskp(a) = 1 + FOR x = 0 TO 36 + buf(x, 0) = 1 + buf(x, 36) = 1 + buf(0, x) = 1 + buf(36, x) = 1 + NEXT x -'DIM SHARED ussk(1 TO 2000, 1 TO 5) -'DIM SHARED usskp(1 TO 5) + b$ = cnum(a%) + ".lvl" + OPEN b$ FOR INPUT AS #1 -showb + 10 + IF EOF(1) <> 0 THEN GOTO 11 -END SUB + LINE INPUT #1, c$ -SUB autop (a) -c = 0 -5 -IF usskp(a) > 0 THEN -b = ussk(usskp(a), a) -IF b = 1 THEN uxp(a) = -1: uyp(a) = 0 -IF b = 2 THEN uxp(a) = 0: uyp(a) = -1 -IF b = 3 THEN uxp(a) = 1: uyp(a) = 0 -IF b = 4 THEN uxp(a) = 0: uyp(a) = 1 -IF b = 5 THEN ai a: GOTO 5 -usskp(a) = usskp(a) + 1 -END IF + IF LEFT$(c$, 1) = "/" THEN + d = d + 1 -nx = ux(a) + uxp(a) -ny = uy(a) + uyp(a) -b = buf(INT(nx), INT(ny)) -IF (b = 1 OR b > 9) AND (c = 0) THEN ai a: c = 1: GOTO 5 + IF d > 35 THEN + GOTO 12 + END IF + g = LEN(c$) -END SUB + IF g > 36 THEN + g = 36 + END IF -FUNCTION cnum$ (a) + FOR e = 2 TO g + f$ = RIGHT$(LEFT$(c$, e), 1) -b$ = STR$(a) -IF LEFT$(b$, 1) = " " THEN b$ = RIGHT$(b$, LEN(b$) - 1) -cnum$ = b$ + IF f$ = "#" OR f$ = "m" THEN + buf(e - 1, d) = 1 + ELSE + buf(e - 1, d) = 0 + END IF + NEXT e + END IF -END FUNCTION + 12 + GOTO 10 -SUB dead (a) -elud(a) = elud(a) - 1 -putworm a -END SUB + 11 + CLOSE #1 -SUB init -level 1 -END SUB + stuff + show -SUB level (a) -LOCATE 5, 5 -PRINT "G E T R E A D Y" -LOCATE 7, 5 -PRINT "L E V E L :"; a + FOR b = 1 TO ussm + ussl(b) = 0 + putworm b + NEXT b -FOR b = 1 TO wai -SOUND 0, 1 -NEXT b -CLS + stat +END SUB +SUB prc(a%) + subt a -FOR y = 0 TO 36 -FOR x = 0 TO 36 -buf(x, y) = 0 -NEXT x -NEXT y + ussp(a) = ussp(a) + 1 -FOR x = 0 TO 36 -buf(x, 0) = 1 -buf(x, 36) = 1 -buf(0, x) = 1 -buf(36, x) = 1 -NEXT x + IF elud(a) = 0 THEN + GOTO 4 + END IF + IF auto(a) = 1 THEN + autop a + END IF + ux(a) = ux(a) + uxp(a) + uy(a) = uy(a) + uyp(a) -b$ = cnum(a) + ".lvl" -OPEN b$ FOR INPUT AS #1 -d = 0 -10 -IF EOF(1) <> 0 THEN GOTO 11 -LINE INPUT #1, c$ -IF LEFT$(c$, 1) = "/" THEN -d = d + 1 -IF d > 35 THEN GOTO 12 -g = LEN(c$) -IF g > 36 THEN g = 36 -FOR e = 2 TO g -f$ = RIGHT$(LEFT$(c$, e), 1) -IF f$ = "#" OR f$ = "m" THEN buf(e - 1, d) = 1 ELSE buf(e - 1, d) = 0 -NEXT e -END IF -12 + IF ux(a) = 35 THEN + ux(a) = 2 + END IF -GOTO 10 -11 + IF uy(a) = 35 THEN + uy(a) = 2 + END IF -CLOSE #1 + IF ux(a) = 1 THEN + ux(a) = 34 + END IF + IF uy(a) = 1 THEN + uy(a) = 34 + END IF -stuff -show + x = ux(a) + y = uy(a) + 3 + IF buf(x, y) = 2 THEN + buf(x, y) = 0 -FOR b = 1 TO ussm -ussl(b) = 0 -putworm b -NEXT b -stat -END SUB + sc x, y -SUB prc (a) + stuff -subt a -ussp(a) = ussp(a) + 1 + ussl(a) = ussl(a) + mtm -IF elud(a) = 0 THEN GOTO 4 + usss(a) = usss(a) + mtm -IF auto(a) = 1 THEN autop a + FOR b = 1 TO ussm + IF (elud(b) > 0) AND (auto(b) = 1) THEN + ai b + END IF + NEXT b + stat + GOTO 3 + END IF -ux(a) = ux(a) + uxp(a) -uy(a) = uy(a) + uyp(a) -IF ux(a) = 35 THEN ux(a) = 2 -IF uy(a) = 35 THEN uy(a) = 2 -IF ux(a) = 1 THEN ux(a) = 34 -IF uy(a) = 1 THEN uy(a) = 34 + IF buf(x, y) > 0 THEN + dead a + GOTO 4 + END IF -x = ux(a) -y = uy(a) + IF a = 1 THEN + buf(x, y) = 10 + ELSEIF a = 2 THEN + buf(x, y) = 11 + ELSEIF a = 3 THEN + buf(x, y) = 12 + ELSEIF a = 4 THEN + buf(x, y) = 13 + ELSEIF a = 5 THEN + buf(x, y) = 14 + END IF -3 -IF buf(x, y) = 2 THEN -buf(x, y) = 0 -sc x, y -stuff -ussl(a) = ussl(a) + mtm -usss(a) = usss(a) + mtm -FOR b = 1 TO ussm -IF (elud(b) > 0) AND (auto(b) = 1) THEN ai b -NEXT b -stat -GOTO 3 -END IF + sc x, y -IF buf(x, y) > 0 THEN dead a: GOTO 4 -IF a = 1 THEN buf(x, y) = 10 -IF a = 2 THEN buf(x, y) = 11 -IF a = 3 THEN buf(x, y) = 12 -IF a = 4 THEN buf(x, y) = 13 -IF a = 5 THEN buf(x, y) = 14 -sc x, y -IF ussp(a) > 2000 THEN ussp(a) = ussp(a) - 2000 -ussx(ussp(a), a) = x -ussy(ussp(a), a) = y + IF ussp(a) > 2000 THEN + ussp(a) = ussp(a) - 2000 + END IF -4 + ussx(ussp(a), a) = x + ussy(ussp(a), a) = y + + 4 END SUB -SUB putworm (a) -b = ussl(a) -FOR c = b TO 1 STEP -1 -ussl(a) = c -subt a -NEXT c - -9 -uy(a) = INT(RND * 30 + 2) -ux(a) = INT(RND * 10 + 5) -FOR b = ux(a) TO ux(a) + 10 -IF buf(b, uy(a)) <> 0 THEN GOTO 9 -NEXT b +SUB putworm(a%) + b = ussl(a) -uxp(a) = 1 -uyp(a) = 0 -ussl(a) = 3 -stat + FOR c = b TO 1 STEP -1 + ussl(a) = c -END SUB + subt a + NEXT c + + 9 + uy(a) = INT(RND * 30 + 2) + + ux(a) = INT(RND * 10 + 5) -SUB sc (x, y) -x1 = x * 5 -y1 = y * 5 - -LINE (x1, y1)-(x1 + 3, y1 + 3), 0, BF - -SELECT CASE buf(x, y) -CASE 0 -LINE (x1, y1)-(x1 + 3, y1 + 3), 1, BF -CASE 1 -LINE (x1, y1)-(x1 + 3, y1 + 3), 7, BF -LINE (x1, y1)-(x1 + 3, y1 + 3), 8, B -CASE 2 -LINE (x1, y1)-(x1 + 3, y1 + 3), 14, BF -CASE 10 -LINE (x1, y1)-(x1 + 3, y1 + 3), 10, BF -PSET (x1, y1), 0 -PSET (x1 + 3, y1), 0 -PSET (x1, y1 + 3), 0 -PSET (x1 + 3, y1 + 3), 0 - -CASE 11 -LINE (x1, y1)-(x1 + 3, y1 + 3), 12, BF -PSET (x1, y1), 0 -PSET (x1 + 3, y1), 0 -PSET (x1, y1 + 3), 0 -PSET (x1 + 3, y1 + 3), 0 - -CASE 12 -LINE (x1, y1)-(x1 + 3, y1 + 3), 13, BF -PSET (x1, y1), 0 -PSET (x1 + 3, y1), 0 -PSET (x1, y1 + 3), 0 -PSET (x1 + 3, y1 + 3), 0 - -CASE 13 -LINE (x1, y1)-(x1 + 3, y1 + 3), 15, BF -PSET (x1, y1), 0 -PSET (x1 + 3, y1), 0 -PSET (x1, y1 + 3), 0 -PSET (x1 + 3, y1 + 3), 0 - -CASE 14 -LINE (x1, y1)-(x1 + 3, y1 + 3), 9, BF -PSET (x1, y1), 0 -PSET (x1 + 3, y1), 0 -PSET (x1, y1 + 3), 0 -PSET (x1 + 3, y1 + 3), 0 - - -END SELECT + FOR b = ux(a) TO ux(a) + 10 + IF buf(b, uy(a)) <> 0 THEN + GOTO 9 + END IF + NEXT b + uxp(a) = 1 + + uyp(a) = 0 + + ussl(a) = 3 + + stat END SUB -SUB sc2 (x, y) -'LOCATE 1, 1 -'PRINT x, y -'x1 = x * 5 + 2 -'y1 = y * 5 + 2 -'PSET (x1, y1), 15 +SUB sc(x%, y%) + x1 = x% * 5 + y1 = y% * 5 -'a$ = INPUT$(1) + LINE (x1, y1)-(x1 + 3, y1 + 3), 0, BF + + SELECT CASE buf(x%, y%) + CASE 0 + LINE (x1, y1)-(x1 + 3, y1 + 3), 1, BF + + CASE 1 + LINE (x1, y1)-(x1 + 3, y1 + 3), 7, BF + + LINE (x1, y1)-(x1 + 3, y1 + 3), 8, B + + CASE 2 + LINE (x1, y1)-(x1 + 3, y1 + 3), 14, BF + + CASE 10 + LINE (x1, y1)-(x1 + 3, y1 + 3), 10, BF + + PSET (x1, y1), 0 + + PSET (x1 + 3, y1), 0 + + PSET (x1, y1 + 3), 0 + + PSET (x1 + 3, y1 + 3), 0 + + CASE 11 + LINE (x1, y1)-(x1 + 3, y1 + 3), 12, BF + + PSET (x1, y1), 0 + + PSET (x1 + 3, y1), 0 + + PSET (x1, y1 + 3), 0 + + PSET (x1 + 3, y1 + 3), 0 + + CASE 12 + LINE (x1, y1)-(x1 + 3, y1 + 3), 13, BF + + PSET (x1, y1), 0 + + PSET (x1 + 3, y1), 0 + + PSET (x1, y1 + 3), 0 + + PSET (x1 + 3, y1 + 3), 0 + + CASE 13 + LINE (x1, y1)-(x1 + 3, y1 + 3), 15, BF + + PSET (x1, y1), 0 + + PSET (x1 + 3, y1), 0 + + PSET (x1, y1 + 3), 0 + + PSET (x1 + 3, y1 + 3), 0 + + CASE 14 + LINE (x1, y1)-(x1 + 3, y1 + 3), 9, BF + + PSET (x1, y1), 0 + PSET (x1 + 3, y1), 0 + + PSET (x1, y1 + 3), 0 + + PSET (x1 + 3, y1 + 3), 0 + END SELECT END SUB -SUB show -FOR y = 1 TO 35 -FOR x = 1 TO 35 -sc x, y +SUB sc2(x%, y%) + ' LOCATE 1, 1 + ' PRINT x%, y% -NEXT x -NEXT y + ' x1 = x% * 5 + 2 + + ' y1 = y% * 5 + 2 + + ' PSET (x1, y1), 15 + + ' a$ = INPUT$(1) +END SUB +SUB show() + FOR y = 1 TO 35 + FOR x = 1 TO 35 + sc x, y + NEXT x + NEXT y END SUB -SUB showb +SUB showb() GOTO 15 FOR x = 1 TO 35 FOR y = 1 TO 35 @@ -430,120 +576,209 @@ NEXT x 'a$ = INPUT$(1) END SUB -SUB start -SCREEN 13 -RANDOMIZE TIMER - -uy(1) = 5 -uy(2) = 10 -uy(3) = 15 -uy(4) = 20 -uy(5) = 25 - - -FOR a = 1 TO ussm -ux(a) = 15 -uxp(a) = 1 -uyp(a) = 0 -ussp(a) = 0 -ussl(a) = 3 -elud(a) = elum -usss(a) = 0 -usskp(a) = 1 -ussk(1, a) = 5 -NEXT a -mtm = 0 +SUB start() + SCREEN 13 + + RANDOMIZE TIMER + + uy(1) = 5 + + uy(2) = 10 + + uy(3) = 15 + + uy(4) = 20 + + uy(5) = 25 + + FOR a = 1 TO ussm + ux(a) = 15 + + uxp(a) = 1 + + uyp(a) = 0 + + ussp(a) = 0 + + ussl(a) = 3 + + elud(a) = elum + + usss(a) = 0 + + usskp(a) = 1 + + ussk(1, a) = 5 + NEXT a + + mtm = 0 END SUB -SUB stat -LOCATE 1, 25 -PRINT mtm +SUB stat() + LOCATE 1, 25 + + PRINT mtm + + FOR a = 1 TO 5 + COLOR 15 + + LOCATE 2 + a, 24 + + PRINT RIGHT$(STR$(a), 1) + + COLOR 10 + + LOCATE 2 + a, 26 + + IF auto(a) = 1 THEN + PRINT "*" + ELSE + PRINT "-" + END IF + + COLOR 12 + + LOCATE 2 + a, 27 + + b$ = STR$(usss(a)) + PRINT RIGHT$(b$, LEN(b$) - 1) -FOR a = 1 TO 5 -COLOR 15 -LOCATE 2 + a, 24 -PRINT RIGHT$(STR$(a), 1) + COLOR 13 -COLOR 10 -LOCATE 2 + a, 26 -IF auto(a) = 1 THEN PRINT "*" ELSE PRINT "-" + LOCATE 2 + a, 30 -COLOR 12 -LOCATE 2 + a, 27 -b$ = STR$(usss(a)) -PRINT RIGHT$(b$, LEN(b$) - 1) + b$ = STR$(elud(a)) -COLOR 13 -LOCATE 2 + a, 30 -b$ = STR$(elud(a)) -PRINT RIGHT$(b$, LEN(b$) - 1) -NEXT a + PRINT RIGHT$(b$, LEN(b$) - 1) + NEXT a -COLOR 10 -LOCATE 8, 26 -PRINT "Auto" + COLOR 10 -COLOR 12 -LOCATE 2, 27 -PRINT "Score" + LOCATE 8, 26 -COLOR 13 -LOCATE 8, 30 -PRINT "Lives" + PRINT "Auto" -LOCATE 1, 30 -PRINT "Level:"; lvl + COLOR 12 + LOCATE 2, 27 + PRINT "Score" + + COLOR 13 + + LOCATE 8, 30 + + PRINT "Lives" + + LOCATE 1, 30 + + PRINT "Level:"; lvl END SUB -SUB stuff -2 -x = INT(RND * 33 + 2) -y = INT(RND * 33 + 2) -IF buf(x, y) = 0 THEN -buf(x, y) = 2 -sc x, y -ELSE -GOTO 2 -END IF -mtm = mtm + 1 -stat +SUB stuff() + 2 + x = INT(RND * 33 + 2) + + y = INT(RND * 33 + 2) + + IF buf(x, y) = 0 THEN + buf(x, y) = 2 + + sc x, y + ELSE + GOTO 2 + END IF + + mtm = mtm + 1 + + stat END SUB -SUB subt (b) -a = ussp(b) - ussl(b) -IF a < 1 THEN a = a + 2000 -IF ussx(a, b) > 0 THEN +SUB subt(b%) + a = ussp(b) - ussl(b) -buf(ussx(a, b), ussy(a, b)) = 0 -sc ussx(a, b), ussy(a, b) -ussx(a, b) = 0 -END IF + IF a < 1 THEN + a = a + 2000 + END IF + + IF ussx(a, b) > 0 THEN + buf(ussx(a, b), ussy(a, b)) = 0 + + sc ussx(a, b), ussy(a, b) + + ussx(a, b) = 0 + END IF END SUB -SUB tkt -a$ = INKEY$ -IF a$ = CHR$(27) THEN SYSTEM -IF (a$ = CHR$(0) + "M") AND (uxp(1) <> -1) THEN uxp(1) = 1: uyp(1) = 0 -IF (a$ = CHR$(0) + "K") AND (uxp(1) <> 1) THEN uxp(1) = -1: uyp(1) = 0 -IF (a$ = CHR$(0) + "P") AND (uyp(1) <> -1) THEN uxp(1) = 0: uyp(1) = 1 -IF (a$ = CHR$(0) + "H") AND (uyp(1) <> 1) THEN uxp(1) = 0: uyp(1) = -1 - -IF (a$ = "d") AND (uxp(2) <> -1) THEN uxp(2) = 1: uyp(2) = 0 -IF (a$ = "a") AND (uxp(2) <> 1) THEN uxp(2) = -1: uyp(2) = 0 -IF (a$ = "s") AND (uyp(2) <> -1) THEN uxp(2) = 0: uyp(2) = 1 -IF (a$ = "w") AND (uyp(2) <> 1) THEN uxp(2) = 0: uyp(2) = -1 - -b = VAL(a$) -IF b > 0 THEN -IF auto(b) = 1 THEN auto(b) = 0 ELSE auto(b) = 1 -stat -END IF +SUB tkt() + a$ = INKEY$ + + IF a$ = CHR$(27) THEN + SYSTEM + END IF + + IF (a$ = CHR$(0) + "M") AND (uxp(1) <> -1) THEN + uxp(1) = 1 + + uyp(1) = 0 + END IF + + IF (a$ = CHR$(0) + "K") AND (uxp(1) <> 1) THEN + uxp(1) = -1 + + uyp(1) = 0 + END IF + + IF (a$ = CHR$(0) + "P") AND (uyp(1) <> -1) THEN + uxp(1) = 0 + + uyp(1) = 1 + END IF + + IF (a$ = CHR$(0) + "H") AND (uyp(1) <> 1) THEN + uxp(1) = 0 + + uyp(1) = -1 + END IF + + IF (a$ = "d") AND (uxp(2) <> -1) THEN + uxp(2) = 1 + + uyp(2) = 0 + END IF + + IF (a$ = "a") AND (uxp(2) <> 1) THEN + uxp(2) = -1 + + uyp(2) = 0 + END IF + + IF (a$ = "s") AND (uyp(2) <> -1) THEN + uxp(2) = 0 + + uyp(2) = 1 + END IF + + IF (a$ = "w") AND (uyp(2) <> 1) THEN + uxp(2) = 0 + + uyp(2) = -1 + END IF + + b = VAL(a$) + + IF b > 0 THEN + IF auto(b) = 1 THEN + auto(b) = 0 + ELSE + auto(b) = 1 + END IF -FOR a = 1 TO ussm -prc a -NEXT a + stat + END IF + FOR a = 1 TO ussm + prc a + NEXT a END SUB