Droidnim from the Magic of Leo Christopherson, listed 06-17-2004 10 ' droidnim.bas - From the Magic of Leo Christopherson" 20 GOTO 360 ' begin 30 SAVE "droidnim":LIST-330 40 GOTO 480 ' clear screen to the right of executioners 50 GOTO 520 ' first move 60 GOTO 980 ' select random 1 - 7 70 GOTO 1220 ' binary select 0 to 111 80 GOTO 1320 ' you win 90 GOTO 1500 ' select a response 100 GOTO 2140 ' print executioners 110 GOTO 2170 ' animate them 120 GOTO 2200 ' executioner nods NO 130 GOTO 2230 ' turn to the left 140 GOTO 2370 ' look up 150 GOTO 2380 ' look down 160 GOTO 2400 ' executioner nods YES 170 GOTO 2440 ' shooting hand 180 GOTO 2490 ' pistol 190 GOTO 2560 ' rh down 200 GOTO 2590 ' animate androids 210 GOTO 2650 ' select from 18 animations 220 GOTO 2980 ' slowdown 230 GOTO 3000 ' slowdown pistol shoot 240 GOTO 3010 ' loop 3 times 250 GOTO 3340 ' clear score 260 GOTO 3410 ' row 1 executioner agree and shoots 270 GOTO 3420 ' row 2 executioner agree and shoots 280 GOTO 3430 ' row 3 executioner agree and shoots 290 GOTO 3450 ' faces turn to the left and look up or down 300 GOTO 3590 ' shoot androids 310 GOTO 3880 ' print @ to locate converter and color androids 320 GOTO 3950 ' info + build strings 330 GOTO 4850 ' wait for key 340 GOTO 4880 ' wait for key and animate 350 ' begin GWbasic SP=6000:DF=8 PowerBasic S=32767:DF=40 360 CLS:KEY OFF:DEFINT S,X,Y,Z:DEFSTR Q:Q=MKI$(0):S=6000:DF=8 370 RANDOMIZE TIMER:GOSUB 320 ' instructions and build strings 380 ' Draw Executioners 390 CLS:E=25:GOSUB 310:PRINT CHR$(34);"ANDROID NIM";CHR$(34) 400 X=194:GOSUB 100:X=581:GOSUB 100:X=963:GOSUB 100 410 Y9=1:RW$(1)="0":RW$(2)="0":RW$(3)="0":GOSUB 40:GOTO 510 420 ' Draw Androids 430 X=254 :FOR N=1 TO 7:X=X-7:GOSUB 100:NEXT 440 X=634 :FOR N=1 TO 5:X=X-8:GOSUB 100:NEXT 450 X=1013:FOR N=1 TO 3:X=X-9:GOSUB 100:NEXT 460 RW$(1)="7":RW$(2)="5":RW$(3)="3":GOTO 3070 ' X9=2 computer plays first 470 ' Clear Screen to the right of executioners 480 FOR N=77 TO 1101 STEP 64:E=N:GOSUB 310:PRINT STRING$(50,32):NEXT 490 E=22:GOSUB 310:PRINT " ":RETURN 500 ' First move 510 E=540:GOSUB 310:PRINT "First move by you=1 or me=2 ?":GOTO 540 520 X=194:GOSUB 110:X=581:GOSUB 110:X=963:GOSUB 110:RETURN ' Winner looks to the right 530 ' Scan keys 540 GOSUB 340:EK=ASC(Q):IF ASC(Q)=27 THEN 4950 ' exits game 550 IF EK=49 THEN 620 ELSE IF EK=50 THEN 580 560 GOTO 540 570 ' Computer starts first 580 X9=2:E=540:GOSUB 310:PRINT "OK, I'll start ! " :'OK 590 FOR O=1 TO 12:GOSUB 200:NEXT 600 E=540:GOSUB 310:PRINT " ":GOTO 430 610 ' Player starts first 620 X9=1:E=540:GOSUB 310:PRINT "Very well, you may start ! " 630 X=581:GOSUB 120:X=963:GOSUB 120:X=194:GOSUB 120:GOTO 590 640 ' My turn 650 E=22:GOSUB 310:PRINT " " 660 ON Y9 GOTO 680,670,670 670 M=INT(RND*2)+1:ON M GOTO 680,700 680 FOR O=1 TO 12:GOSUB 200:NEXT:GOTO 930 690 ' Computer's choice 700 Z=1:GOSUB 70:Z1=Z0:Z=2:GOSUB 70:Z2=Z0:Z=3:GOSUB 70:Z3=Z0 710 Z4=Z1+Z2:Z5=Z1+Z3:Z6=Z2+Z3:Z4$=STR$(Z4):Z5$=STR$(Z5):Z6$=STR$(Z6) 720 GOSUB 200:IF Z4=0 THEN 760 730 Z0=LEN(Z4$):Y0=1:Z4=0:FOR N=Z0 TO 1 STEP -1 740 IF MID$(Z4$,N,1)="1" THEN Z4=Z4+Y0 750 Y0=Y0*2:NEXT 760 GOSUB 200:IF Z5=0 THEN 800 770 Z0=LEN(Z5$):Y0=1:Z5=0:FOR N=Z0 TO 1 STEP -1 780 IF MID$(Z5$,N,1)="1" THEN Z5=Z5+Y0 790 Y0=Y0*2:NEXT 800 GOSUB 200:IF Z6=0 THEN 860 810 Z0=LEN(Z6$):Y0=1:Z6=0:FOR N=Z0 TO 1 STEP -1 820 IF MID$(Z6$,N,1)="1" THEN Z6=Z6+Y0 830 Y0=Y0*2:NEXT 840 GOSUB 200 850 ' Row Indicator 860 IF VAL(RW$(3))<=Z4 THEN 880 870 RW=3:GOSUB 280:RN=VAL(RW$(3))-Z4:RN$=STR$(RN):RN$=RIGHT$(RN$,1):X9=1:GOTO 3220 880 IF VAL(RW$(2))<=Z5 THEN 900 890 RW=2:GOSUB 270:RN=VAL(RW$(2))-Z5:RN$=STR$(RN):RN$=RIGHT$(RN$,1):X9=1:GOTO 3220 900 IF VAL(RW$(1))<=Z6 THEN 920 910 RW=1:GOSUB 260:RN=VAL(RW$(1))-Z6:RN$=STR$(RN):RN$=RIGHT$(RN$,1):X9=1:GOTO 3220 920 GOSUB 200:X8=0:IF (Z4=0) AND (Z5=0) THEN 1040 ' end of game 930 M=INT(RND*3)+1 940 ON M GOTO 950,960,970 950 IF VAL(RW$(1))=0 THEN 960 ELSE RW=1:GOSUB 60:GOSUB 260:X9=1:X8=0:GOTO 3220 960 IF VAL(RW$(2))=0 THEN 970 ELSE RW=2:GOSUB 60:GOSUB 270:X9=1:X8=0:GOTO 3220 970 IF VAL(RW$(3))=0 THEN 950 ELSE RW=3:GOSUB 60:GOSUB 280:X9=1:X8=0:GOTO 3220 980 M=INT(RND*7)+1:ON M GOTO 990,990,990,990,1000,1010,1020 990 RN=1:RN$="1":RETURN 1000 RN=2:RN$="2":RETURN 1010 RN=3:RN$="3":RETURN 1020 IF RW=3 THEN 1010 ELSE RN=4:RN$="4":RETURN 1030 ' There is a win 1040 GOSUB 40 ' clear right of executioners 1050 IF X9=1 THEN 1120 ' computer wins 1060 GOSUB 50 1070 GOSUB 80:GOSUB 200 ' player wins 1080 X=194:GOSUB 160 ' yes 1090 X=963:GOSUB 160 1100 X=581:GOSUB 160:GOTO 1150 1110 ' Computer wins 1120 GOSUB 50 1130 E=536:GOSUB 310:PRINT MB$:E=472:GOSUB 310:PRINT MA$:E=600:GOSUB 310:PRINT MC$ 1140 GOSUB 220 ' delay 1150 E=794:GOSUB 310:PRINT "NEW GAME? yes <1> or no <2> ?" 1160 GOSUB 340:IF ASC(Q)=49 THEN 410 1170 GOTO 4950 ' exit 1180 GOSUB 40:RW$(1)="0":RW$(2)="0":RW$(3)="0" 1190 E=540:GOSUB 310:PRINT "Since you have given up ... " 1200 FOR O=1 TO 8:GOSUB 200:NEXT:GOSUB 40:GOTO 1120 1210 ' Binary select 000...111 1220 ON VAL(RW$(Z))+1 GOTO 1230,1240,1250,1260,1270,1280,1290,1300 1230 Z0=0 :RETURN 1240 Z0=1 :RETURN 1250 Z0=10 :RETURN 1260 Z0=11 :RETURN 1270 Z0=100:RETURN 1280 Z0=101:RETURN 1290 Z0=110:RETURN 1300 Z0=111:RETURN 1310 ' You Win 1320 GOSUB 90:W1$=MD$ 1330 GOSUB 90:IF MD$=W1$ THEN 1330 ELSE W2$=MD$ 1340 GOSUB 90:IF (MD$=W1$) OR (MD$=W2$) THEN 1340 ELSE W3$=MD$ 1350 GOSUB 90:IF (MD$=W1$) OR (MD$=W2$) OR (MD$=W3$) THEN 1350 ELSE W4$=MD$ 1360 GOSUB 90:IF (MD$=W1$) OR (MD$=W2$) OR (MD$=W3$) OR (MD$=W4$) THEN 1360 ELSE W5$=MD$ 1370 GOSUB 90:IF (MD$=W1$) OR (MD$=W2$) OR (MD$=W3$) OR (MD$=W4$) OR (MD$=W5$) THEN 1370 ELSE W6$=MD$ 1380 GOSUB 90:IF (MD$=W1$) OR (MD$=W2$) OR (MD$=W3$) OR (MD$=W4$) OR (MD$=W5$) OR (MD$=W6$) THEN 1380 ELSE W7$=MD$ 1390 E=412:GOSUB 310:PRINT "Through some ";W1$+", " 1400 GOSUB 240:E=470:GOSUB 310:PRINT W2$+", " 1410 GOSUB 240:E=470:GOSUB 310:PRINT W2$+", "+W3$+", " 1420 GOSUB 240:E=470:GOSUB 310:PRINT W2$+", "+W3$+", "+W4$+", " 1430 GOSUB 240:E=534:GOSUB 310:PRINT W5$+", " 1440 GOSUB 200:E=534:GOSUB 310:PRINT W5$+", "+W6$+", " 1450 GOSUB 200:E=534:GOSUB 310:PRINT W5$+", "+W6$+", "+W7$+", " 1460 GOSUB 200:E=610:GOSUB 310:PRINT "stroke of fate..." 1470 GOSUB 240:E=678:GOSUB 310:PRINT "YOU WIN !" 1480 RETURN 1490 ' Select a response 1500 M=INT(RND*25)+1 1510 ON M GOSUB 4590,4600,4610,4620,4630,4640,4650,4660,4670,4680,4690,4700,4710,4720,4730,4740,4750, 4760,4770,4780,4790,4800,4810,4820,4830 1520 RETURN 1530 ' Select Android's position 1540 IF VAL(RW$(1))<7 THEN 1550 ELSE X=205:RETURN ' row 1 10 11 12 13 14 15 16 17 1550 IF VAL(RW$(1))<6 THEN 1560 ELSE X=212:GOTO 1720 1560 IF VAL(RW$(1))<5 THEN 1570 ELSE X=219:RETURN 1570 IF VAL(RW$(1))<4 THEN 1580 ELSE X=226:RETURN 1580 IF VAL(RW$(1))<3 THEN 1590 ELSE X=233:GOTO 1790 1590 IF VAL(RW$(1))<2 THEN 1600 ELSE X=240:RETURN 1600 IF VAL(RW$(1))<1 THEN 1610 ELSE X=247:RETURN 1610 X=194:RETURN 1620 IF VAL(RW$(2))<5 THEN 1630 ELSE X=594:RETURN ' row 2 20 21 22 23 24 25 1630 IF VAL(RW$(2))<4 THEN 1640 ELSE X=602:GOTO 1850 1640 IF VAL(RW$(2))<3 THEN 1650 ELSE X=610:GOTO 1940 1650 IF VAL(RW$(2))<2 THEN 1660 ELSE X=618:RETURN 1660 IF VAL(RW$(2))<1 THEN 1670 ELSE X=626:RETURN 1670 X=581:RETURN 1680 IF VAL(RW$(3))<3 THEN 1690 ELSE X=986 :RETURN ' row 3 30 31 32 33 1690 IF VAL(RW$(3))<2 THEN 1700 ELSE X=995 :GOTO 2000 1700 IF VAL(RW$(3))<1 THEN 1710 ELSE X=1004:RETURN 1710 X=963:RETURN 1720 N=INT(RND*3)+1:ON N GOTO 1730,1740,1770 1730 RETURN 1740 E=X-64:GOSUB 310:PRINT HP$:E=X-127:GOSUB 310:PRINT HO$ 1750 E=162 :GOSUB 310:PRINT HJ$:E=99 :GOSUB 310:PRINT HI$ ' 14 1760 E=169 :GOSUB 310:PRINT HD$:E=106 :GOSUB 310:PRINT HC$:RETURN ' 15 1770 E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 1780 E=176 :GOSUB 310:PRINT HB$:E=113 :GOSUB 310:PRINT HA$:RETURN ' 16 1790 N=INT(RND*3)+1:ON N GOTO 1800,1810,1830 1800 RETURN 1810 E=X-64:GOSUB 310:PRINT HP$:E=X-127:GOSUB 310:PRINT HO$ 1820 E=176 :GOSUB 310:PRINT HJ$:E=113 :GOSUB 310:PRINT HI$:RETURN ' 16 1830 E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 1840 E=183 :GOSUB 310:PRINT HJ$:E=120 :GOSUB 310:PRINT HI$:RETURN ' 17 1850 N=INT(RND*4)+1:ON N GOTO 1860,1870,1900,1920 1860 RETURN 1870 E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 'R 1880 E=546 :GOSUB 310:PRINT HJ$:E=483 :GOSUB 310:PRINT HI$ 'F 23 1890 E=562 :GOSUB 310:PRINT HB$:E=499 :GOSUB 310:PRINT HA$:RETURN 'L 25 1900 E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$ 'L 1910 E=546 :GOSUB 310:PRINT HP$:E=483 :GOSUB 310:PRINT HO$:RETURN 'U 23 1920 E=X-64:GOSUB 310:PRINT HR$:E=X-127:GOSUB 310:PRINT HQ$ 'D 1930 E=554 :GOSUB 310:PRINT HD$:E=491 :GOSUB 310:PRINT HC$:RETURN 'R 24 1940 N=INT(RND*3)+1:ON N GOTO 1950,1960,1980 1950 RETURN 1960 E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 'R 1970 E=554 :GOSUB 310:PRINT HJ$:E=491 :GOSUB 310:PRINT HI$:RETURN 'F 24 1980 E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$ 'L 1990 E=562 :GOSUB 310:PRINT HP$:E=499 :GOSUB 310:PRINT HO$:RETURN 'U 25 2000 N=INT(RND*6)+1:ON N GOTO 2010,2020,2040,2070,2100,2010 2010 RETURN 2020 E=X-64:GOSUB 310:PRINT HP$:E=X-127:GOSUB 310:PRINT HO$ 'U 2030 E=940 :GOSUB 310:PRINT HR$:E=877 :GOSUB 310:PRINT HQ$:RETURN 'D 33 2040 IF X3<>0 THEN RETURN 2050 E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 'R 2060 E=130 :GOSUB 310:PRINT HJ$:E=67 :GOSUB 310:PRINT HI$:RETURN 'F 10 2070 IF X3<>0 THEN RETURN 2080 E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$ 'L 2090 E=517 :GOSUB 310:PRINT HP$:E=454 :GOSUB 310:PRINT HO$:RETURN 'U 20 2100 IF X3<>0 THEN RETURN 2110 E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 'R 2120 E=899 :GOSUB 310:PRINT HJ$:E=836 :GOSUB 310:PRINT HI$:RETURN 'F 30 2130 ' Print Executioners 2140 E=X :GOSUB 310:PRINT BA$:E=X+64 :GOSUB 310:PRINT BB$ 2150 E=X-64 :GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$ 2160 E=X+128:GOSUB 310:PRINT FC$:RETURN 2170 GOSUB 220:E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 'R moving 2180 GOSUB 220:E=X-64:GOSUB 310:PRINT HF$:E=X-127:GOSUB 310:PRINT HE$ 2190 GOSUB 220:E=X-64:GOSUB 310:PRINT HH$:E=X-127:GOSUB 310:PRINT HG$:RETURN 2200 GOSUB 220:E=X-64:GOSUB 310:PRINT HF$:E=X-127:GOSUB 310:PRINT HE$ 'L moving 2210 GOSUB 220:E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 2220 GOSUB 220:E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$:RETURN 2230 GOSUB 220:E=X-64:GOSUB 310:PRINT HJ$:E=X-127:GOSUB 310:PRINT HI$ ' Left turn 2240 GOSUB 220:E=X-64:GOSUB 310:PRINT HL$:E=X-127:GOSUB 310:PRINT HK$ 2250 GOSUB 220:E=X-64:GOSUB 310:PRINT HN$:E=X-127:GOSUB 310:PRINT HM$:RETURN 2260 GOSUB 220:E=X-64:GOSUB 310:PRINT HL$:E=X-127:GOSUB 310:PRINT HK$ ' NO 2270 GOSUB 220:E=X-64:GOSUB 310:PRINT HJ$:E=X-127:GOSUB 310:PRINT HI$ 2280 GOSUB 220:E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$:RETURN 2290 ' Executioner No 2300 FOR L=1 TO 3 2310 GOSUB 220:E=X-64:GOSUB 310:PRINT HJ$:E=X-127:GOSUB 310:PRINT HI$ 2320 GOSUB 220:E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$ 2330 GOSUB 220:E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$ 2340 GOSUB 220:E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$ 2350 NEXT:RETURN 2360 ' 2370 GOSUB 220:E=X-64:GOSUB 310:PRINT HP$:E=X-127:GOSUB 310:PRINT HO$:RETURN 'U 2380 GOSUB 220:E=X-64:GOSUB 310:PRINT HR$:E=X-127:GOSUB 310:PRINT HQ$:RETURN 'D 2390 ' Executioner Yes 2400 FOR L=1 TO 3 2410 GOSUB 140:GOSUB 220:E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$ 2420 GOSUB 150:GOSUB 220:E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$ 2430 NEXT:RETURN 2440 GOSUB 220:E=X+4:GOSUB 310:PRINT BE$:E=X+68:GOSUB 310:PRINT BF$ ' Shooting hand 2450 GOSUB 220:E=X+4:GOSUB 310:PRINT BG$:E=X+68:GOSUB 310:PRINT BH$ 2460 GOSUB 220:E=X+4:GOSUB 310:PRINT BI$:E=X+68:GOSUB 310:PRINT BJ$ 2470 GOSUB 220:E=X+4:GOSUB 310:PRINT BK$ 2480 GOSUB 220:E=X+4:GOSUB 310:PRINT BL$:RETURN ' Pistol 2490 GOSUB 220:E=X+4:GOSUB 310:PRINT BK$ 2500 X3=X:GOSUB 200:GOSUB 200:X=X3 2510 GOSUB 220:E=X+4 :GOSUB 310:PRINT BI$:E=X+68 :GOSUB 310:PRINT BJ$ ' Put RH down 2520 GOSUB 220:E=X+4 :GOSUB 310:PRINT BG$:E=X+68 :GOSUB 310:PRINT BH$ 2530 GOSUB 220:E=X+4 :GOSUB 310:PRINT BE$:E=X+68 :GOSUB 310:PRINT BF$ 2540 GOSUB 220:E=X+4 :GOSUB 310:PRINT BC$:E=X+68 :GOSUB 310:PRINT BD$:RETURN 2550 GOSUB 220:E=X-64:GOSUB 310:PRINT HD$:E=X-127:GOSUB 310:PRINT HC$:RETURN 2560 GOSUB 220:E=X-64:GOSUB 310:PRINT HJ$:E=X-127:GOSUB 310:PRINT HI$:RETURN 2570 GOSUB 220:E=X-64:GOSUB 310:PRINT HB$:E=X-127:GOSUB 310:PRINT HA$:RETURN 2580 ' Animation of figures 2590 M=INT(RND*16)+1:Y=INT(RND*18)+1:GOSUB 210 2600 IF X3=X THEN 2590 2610 IF X3=0 THEN 2630 2620 IF (M<8) OR (M>12) THEN 2630 ELSE 2590 2630 IF M>7 THEN 2790 ELSE ON M GOSUB 110,2230,2370,2380,2550,2560,2570 2640 GOTO 2690 2650 ON Y GOTO 2660,2670,2680,1540,1550,1560,1570,1580,1590,1600,1620,1630,1640,1650,1660,1680,1690, 1700 2660 X=194:RETURN 2670 X=581:RETURN 2680 X=963:RETURN 2690 X1=INT(RND*5)+1 2700 ON X1 GOTO 2710,2590,2710,2590,2710 2710 ON M GOTO 2770,2780,2720,2730,2740,2750,2760 2720 E=X-127:GOSUB 310:PRINT H4$:GOSUB 220:E=X-127:GOSUB 310:PRINT HO$:RETURN 2730 E=X-64 :GOSUB 310:PRINT H5$:GOSUB 220:E=X-64 :GOSUB 310:PRINT HR$:RETURN 2740 E=X-64 :GOSUB 310:PRINT H2$:GOSUB 220:E=X-64 :GOSUB 310:PRINT HD$:RETURN 2750 E=X-64 :GOSUB 310:PRINT H3$:GOSUB 220:E=X-64 :GOSUB 310:PRINT HJ$:RETURN 2760 E=X-64 :GOSUB 310:PRINT H1$:GOSUB 220:E=X-64 :GOSUB 310:PRINT HB$:RETURN 2770 E=X-64 :GOSUB 310:PRINT H6$:GOSUB 220:E=X-64 :GOSUB 310:PRINT HH$:RETURN 2780 E=X-64 :GOSUB 310:PRINT H7$:GOSUB 220:E=X-64 :GOSUB 310:PRINT HN$:RETURN 2790 ON M-7 GOTO 2800,2820,2840,2860,2890,2910,2930,2950,2960 2800 E=67 :GOSUB 310:PRINT HO$:E=130:GOSUB 310:PRINT HP$ ' 10 2810 E=454:GOSUB 310:PRINT HC$:E=517:GOSUB 310:PRINT HD$:GOSUB 220:RETURN ' 20 2820 E=67 :GOSUB 310:PRINT HQ$:E=130:GOSUB 310:PRINT HR$ ' 10 2830 E=836:GOSUB 310:PRINT HI$:E=899:GOSUB 310:PRINT HJ$:GOSUB 220:RETURN ' 30 2840 E=454:GOSUB 310:PRINT HA$:E=517:GOSUB 310:PRINT HB$ ' 20 2850 E=836:GOSUB 310:PRINT HO$:E=899:GOSUB 310:PRINT HP$:GOSUB 220:RETURN ' 30 2860 E=67 :GOSUB 310:PRINT HQ$:E=130:GOSUB 310:PRINT HR$ ' 10 2870 E=454:GOSUB 310:PRINT HI$:E=517:GOSUB 310:PRINT HJ$ ' 20 2880 E=836:GOSUB 310:PRINT HO$:E=899:GOSUB 310:PRINT HP$:GOSUB 220:RETURN ' 30 2890 E=454:GOSUB 310:PRINT HO$:E=517:GOSUB 310:PRINT HP$ ' 20 2900 E=67 :GOSUB 310:PRINT HQ$:E=130:GOSUB 310:PRINT HR$:GOSUB 220:RETURN ' 10 2910 IF (X=194) OR (X=581) OR (X=963) THEN 3020 2920 E=X:GOSUB 310:PRINT BM$:E=X+64:GOSUB 310:PRINT BN$:GOSUB 220:RETURN 2930 IF (X=194) OR (X=581) OR (X=963) THEN 3040 2940 E=X :GOSUB 310:PRINT BA$:E=X+64:GOSUB 310:PRINT BB$:GOSUB 220:RETURN 2950 E=X+4:GOSUB 310:PRINT BO$:E=X+68:GOSUB 310:PRINT BP$:GOSUB 220:RETURN 2960 E=X+4:GOSUB 310:PRINT BG$:E=X+68:GOSUB 310:PRINT BH$:GOSUB 220:RETURN 2970 ' Slow down 2980 FOR SP=1 TO DF:FOR EC=1 TO S:NEXT:FOR EC=1 TO S:NEXT:NEXT:RETURN 2990 ' Slowdown pistol shoot 3000 FOR SP=1 TO DF/4:FOR EC=1 TO S:NEXT:NEXT:RETURN 3010 FOR O=1 TO 3:GOSUB 200:NEXT:RETURN 3020 E=X :GOSUB 310:PRINT BR$ 3030 E=X+64:GOSUB 310:PRINT BN$:GOSUB 220:RETURN 3040 E=X :GOSUB 310:PRINT BQ$ 3050 E=X+64:GOSUB 310:PRINT BB$:GOSUB 220:RETURN 3060 ' Your turn, X9=1 My turn, X9=2 3070 LSET Q=MKI$(0) 3080 WHILE CVI(Q)=0 3090 X8=0:IF X9=2 THEN 650 ELSE X3=0:E=22:GOSUB 310:PRINT "ßß":GOSUB 200 3100 MID$(Q,1)=INKEY$:IF CVI(Q) THEN 3110 3110 WEND ' check which row 3120 IF ASC(Q)=27 THEN 4950 ' exits game 3130 IF (ASC(Q)>48) AND (ASC(Q)<52) THEN 3150 3140 IF ASC(Q)=114 OR ASC(Q)=82 THEN 1180 ELSE 3070 ' r R 3150 RW=VAL(Q):ON RW GOSUB 260,3420,3430 ' print 1-3 3160 GOSUB 340 ' check 1-7 remove 3170 IF (ASC(Q)>48) AND (ASC(Q)<56) THEN 3200 3180 IF ASC(Q)=32 THEN GOSUB 250 ELSE 3160 ' space restarts 3190 GOTO 3070 3200 X9=2 ' computer's turn 3210 RN$=Q:RN=VAL(RN$) 3220 IF (RN>VAL(RW$(RW))) AND (X9=1) THEN X8=1 3230 IF (RN>VAL(RW$(RW))) AND (X9=2) THEN X9=1 3240 ON RW GOSUB 3270,3280,3290 ' print amount to remove 3250 IF(VAL(RW$(1))=0) AND (VAL(RW$(2))=0) AND (VAL(RW$(3))=0) THEN 1040 ' end of game 3260 IF X8=0 THEN 3070 ELSE 920 3270 E=128:GOSUB 310:PRINT RN$:X=194:GOTO 3310 3280 E=512:GOSUB 310:PRINT RN$:X=581:GOTO 3310 3290 E=896:GOSUB 310:PRINT RN$:X=963 3300 ' Check if amount is OK 3310 GOSUB 130:X3=X:GOSUB 200:X=X3:GOSUB 190:GOSUB 110:X3=X:GOSUB 200:X=X3:GOSUB 120 3320 IF RN>VAL(RW$(RW)) THEN 3330 ELSE 3390 3330 GOSUB 2290 ' Executioner NO 3340 ON RW GOTO 3350,3360,3370 ' Clear score 3350 E=128:GOSUB 310:PRINT " ":E=192:GOSUB 310:PRINT " ":RETURN 3360 E=512:GOSUB 310:PRINT " ":E=576:GOSUB 310:PRINT " ":RETURN 3370 E=896:GOSUB 310:PRINT " ":E=960:GOSUB 310:PRINT " ":RETURN 3380 ' Executioner OK and Shoots 3390 GOSUB 160:GOSUB 110:X3=X:GOSUB 200:X=X3:GOSUB 170 3400 GOSUB 290:GOSUB 300:GOSUB 180:GOSUB 120:GOTO 3340 3410 E=192:GOSUB 310:PRINT "1":RETURN 3420 E=576:GOSUB 310:PRINT "2":RETURN 3430 E=960:GOSUB 310:PRINT "3":RETURN 3440 ' Faces turn to the left and look up or down 3450 ON RW GOTO 3460,3500,3540 3460 X=254:IF VAL(RW$(1))=0 THEN 3470 ELSE FOR O=1 TO VAL(RW$(1)):X=X-7:GOSUB 130:NEXT 3470 X=581:GOSUB 140:X=634 :IF VAL(RW$(2))=0 THEN 3480 ELSE FOR O=1 TO VAL(RW$(2)):X=X-8:GOSUB 140:NEXT 3480 X=963:GOSUB 140:X=1013:IF VAL(RW$(3))=0 THEN 3490 ELSE FOR O=1 TO VAL(RW$(3)):X=X-9:GOSUB 140:NEXT 3490 X=194:RETURN 3500 X=634:IF VAL(RW$(2))=0 THEN 3510 ELSE FOR O=1 TO VAL(RW$(2)):X=X-8:GOSUB 130:NEXT 3510 X=194:GOSUB 150:X=254 :IF VAL(RW$(1))=0 THEN 3520 ELSE FOR O=1 TO VAL(RW$(1)):X=X-7:GOSUB 150:NEXT 3520 X=963:GOSUB 140:X=1013:IF VAL(RW$(3))=0 THEN 3530 ELSE FOR O=1 TO VAL(RW$(3)):X=X-9:GOSUB 140:NEXT 3530 X=581:RETURN 3540 X=1013:IF VAL(RW$(3))=0 THEN 3550 ELSE FOR O=1 TO VAL(RW$(3)):X=X-9:GOSUB 130:NEXT 3550 X=581 :GOSUB 150:X=634:IF VAL(RW$(2))=0 THEN 3560 ELSE FOR O=1 TO VAL(RW$(2)):X=X-8:GOSUB 150:NEXT 3560 X=194 :GOSUB 150:X=254:IF VAL(RW$(1))=0 THEN 3570 ELSE FOR O=1 TO VAL(RW$(1)):X=X-7:GOSUB 150:NEXT 3570 X=963:RETURN 3580 ' Shoot Androids 3590 Z1=VAL(RW$(RW)):Z2=Z1-RN:RW$(RW)=STR$(Z1-RN) 3600 ON RW GOTO 3610,3620,3630 3610 Z$="===-":Z3=205:Z4=7:Z5=254 -7*Z1:GOTO 3640 3620 Z$="===-":Z3=592:Z4=8:Z5=634 -8*Z1:GOTO 3640 3630 Z$="===-":Z3=974:Z4=9:Z5=1013-9*Z1 3640 FOR M=1 TO RN 3650 E=Z3-1:GOSUB 310:GOSUB 230:PRINT "=" 3660 FOR N=Z3 TO Z5 STEP 3 3670 E=Z3-1:GOSUB 310:GOSUB 230:PRINT "-" 3680 E=N:GOSUB 310:GOSUB 230:PRINT Z$ 3690 E=Z3-1:GOSUB 310:GOSUB 230:PRINT "=" 3700 NEXT 3710 E=Z5 :GOSUB 310:PRINT FA$ ' white blast 3720 E=Z5+64 :GOSUB 310:PRINT FA$ 3730 E=Z5-64 :GOSUB 310:PRINT FA$ 3740 E=Z5+128:GOSUB 310:PRINT FA$ 3750 E=Z5-128:GOSUB 310:PRINT FA$ 3760 E=Z5 :GOSUB 310:PRINT FB$ ' blank androids 3770 E=Z5+64 :GOSUB 310:PRINT FB$ 3780 E=Z5-64 :GOSUB 310:PRINT FB$ 3790 E=Z5+128:GOSUB 310:PRINT FB$ 3800 E=Z5-128:GOSUB 310:PRINT FB$ 3810 FOR N=Z3 TO Z5 STEP 3 3820 E=N:GOSUB 310:PRINT " " 3830 NEXT 3840 Z5=Z5+Z4 3850 NEXT 3860 Y9=Y9+1:X3=X:GOSUB 200:X=X3:RETURN 3870 ' Print @ to locate converter and color figures 3880 V=INT(E/64)+1:F=(V-1)*64:F=(E-F)+1:LOCATE V,F 3890 IF E<26 THEN COLOR 11,0:GOTO 3930 ' heading blue 3900 IF E<400 THEN COLOR 14,0:GOTO 3930 ' row 1 yellow 3910 IF E>800 THEN COLOR 12,0:GOTO 3930 ' row 3 light red 3920 COLOR 10,0 ' row 2 light green 3930 RETURN 3940 ' Info 3950 COLOR 10,0 3960 PRINT "ANDROID NIM: TRS-80 BASIC BY LEO CHRISTOPHERSON" 3970 PRINT "GwBasic by Eric F. Tchong - Aruba - August 1996":COLOR 15,0:PRINT 3980 PRINT "When you see an ßß to the left of 'ANDROID NIM'" 3990 PRINT "its your turn.":PRINT:COLOR 11,0 4000 PRINT "You need not push enter, just the row number, 1" 4010 PRINT "2 or 3, and the number of androids you wish to" 4020 PRINT "have removed. To give up, push the key." 4030 PRINT:COLOR 12,0 4040 PRINT "RULES: You may remove as many androids from any" 4050 PRINT "row as you wish when its your turn. To win you" 4060 PRINT "must remove the last android.":PRINT:COLOR 13,0 4070 PRINT " exits program as soon you wish to do so !" 4080 COLOR 14,0:PRINT:INPUT "Push when ready ";X 4090 ' Build strings 4100 HA$=CHR$(220)+CHR$(221)+CHR$(222)+CHR$(220) 4110 HB$=CHR$(255)+CHR$(220)+CHR$(223)+CHR$(220)+CHR$(219)+CHR$(255) 4120 H1$=CHR$(255)+CHR$(219)+CHR$(223)+CHR$(219)+CHR$(254) 4130 HC$=CHR$(220)+CHR$(221)+CHR$(220)+CHR$(221) 4140 HD$=CHR$(255)+CHR$(219)+CHR$(220)+CHR$(223)+CHR$(220)+CHR$(255) 4150 H2$=CHR$(255)+CHR$(219)+CHR$(219)+CHR$(223)+CHR$(219) 4160 HE$=CHR$(220)+CHR$(220)+CHR$(221)+CHR$(221) 4170 HF$=CHR$(255)+CHR$(219)+CHR$(219)+CHR$(220)+CHR$(223)+CHR$(220)+CHR$(255) 4180 HG$=CHR$(220)+CHR$(220)+CHR$(221)+CHR$(220) 4190 HH$=CHR$(255)+CHR$(219)+CHR$(219)+CHR$(220)+CHR$(219)+CHR$(220)+CHR$(255) 4200 H6$=CHR$(255)+CHR$(219)+CHR$(219)+CHR$(219)+CHR$(219)+CHR$(220) 4210 HI$=CHR$(222)+CHR$(220)+CHR$(222)+CHR$(220) 4220 HJ$=CHR$(222)+CHR$(220)+CHR$(223)+CHR$(220)+CHR$(219)+CHR$(255) 4230 H3$=CHR$(255)+CHR$(219)+CHR$(223)+CHR$(219)+CHR$(255) 4240 HK$=CHR$(222)+CHR$(220)+CHR$(221)+CHR$(220) 4250 HL$=CHR$(220)+CHR$(223)+CHR$(220)+CHR$(219)+CHR$(219)+CHR$(255) 4260 HM$=CHR$(220)+CHR$(221)+CHR$(220)+CHR$(220) 4270 HN$=CHR$(220)+CHR$(221)+CHR$(220)+CHR$(219)+CHR$(219)+CHR$(255) 4280 H7$=CHR$(220)+CHR$(219)+CHR$(219)+CHR$(219)+CHR$(219) 4290 BA$=CHR$(220)+CHR$(223)+CHR$(219)+CHR$(219)+CHR$(223)+CHR$(220) 4300 BB$=CHR$(223)+CHR$(220)+CHR$(223)+CHR$(223)+CHR$(220)+CHR$(223) 4310 FC$=CHR$(220)+CHR$(220)+CHR$(221)+CHR$(222)+CHR$(220)+CHR$(220) 4320 HO$=CHR$(223)+CHR$(220)+CHR$(220)+CHR$(223) 4330 HP$=CHR$(255)+CHR$(219)+CHR$(220)+CHR$(220)+CHR$(219)+CHR$(255) 4340 H4$=CHR$(220)+CHR$(221)+CHR$(222)+CHR$(220) 4350 HQ$=CHR$(220)+CHR$(221)+CHR$(222)+CHR$(220) 4360 HR$=CHR$(255)+CHR$(223)+CHR$(219)+CHR$(223)+CHR$(219)+CHR$(255) 4370 H5$=CHR$(255)+CHR$(219)+CHR$(223)+CHR$(219)+CHR$(223) 4380 BC$=CHR$(223)+CHR$(220) 4390 BD$=CHR$(220)+CHR$(223) 4400 BE$=CHR$(219)+CHR$(255) 4410 BF$=CHR$(223)+CHR$(255) 4420 BG$=CHR$(219)+CHR$(255)+CHR$(255) 4430 BH$=CHR$(223)+CHR$(220) 4440 BI$=CHR$(219)+CHR$(220)+CHR$(220)+CHR$(255)+" " 4450 BJ$=CHR$(255)+CHR$(255) 4460 BK$=CHR$(223)+CHR$(220)+CHR$(220)+",-= " 4470 BL$=CHR$(220)+STRING$(3,CHR$(254))+"'-=" 4480 BM$=CHR$(255)+CHR$(219)+CHR$(219)+CHR$(223)+CHR$(219)+CHR$(255) 4490 BN$=CHR$(220)+CHR$(223)+CHR$(221)+CHR$(222)+CHR$(220)+CHR$(223) 4500 BO$=CHR$(223)+CHR$(220):BP$=CHR$(220)+CHR$(223) 4510 FA$=STRING$(6,CHR$(219)):FB$=STRING$(6,CHR$(255)) 4520 BR$=CHR$(255)+CHR$(219)+CHR$(219)+CHR$(219)+CHR$(223)+CHR$(220) 4530 BQ$=CHR$(220)+CHR$(223)+CHR$(219)+CHR$(219)+CHR$(223)+CHR$(220) 4540 MA$=" Û Û Û Û ÛÛÛ Û" 4550 MB$=" Û Û Ü Û Û Û ÛÛ Û" 4560 MC$=" Û ÛÜÛÜÛ Û Û ÛÛÛ" 4570 RETURN 4580 ' Messages 4590 MD$ = "ridiculous":RETURN 4600 MD$ = "absurd":RETURN 4610 MD$ = "grotesque":RETURN 4620 MD$ = "nonsensical":RETURN 4630 MD$ = "farcical":RETURN 4640 MD$ = "preposterous":RETURN 4650 MD$ = "silly":RETURN 4660 MD$ = "senseless":RETURN 4670 MD$ = "irrational":RETURN 4680 MD$ = "fantastic":RETURN 4690 MD$ = "odd":RETURN 4700 MD$ = "rude":RETURN 4710 MD$ = "brutish":RETURN 4720 MD$ = "barbaric":RETURN 4730 MD$ = "plebeian":RETURN 4740 MD$ = "uncivil":RETURN 4750 MD$ = "discourteous":RETURN 4760 MD$ = "vulgar":RETURN 4770 MD$ = "coarse":RETURN 4780 MD$ = "gross":RETURN 4790 MD$ = "ungraceful":RETURN 4800 MD$ = "monstrous":RETURN 4810 MD$ = "horrid":RETURN 4820 MD$ = "shocking":RETURN 4830 MD$ = "cheap":RETURN 4840 ' Wait for key 4850 LSET Q=MKI$(0) 4860 WHILE CVI(Q)=0:MID$(Q,1)=INKEY$:WEND:RETURN 4870 ' Wait for key and animate 4880 LSET Q=MKI$(0) 4890 WHILE CVI(Q)=0 4900 GOSUB 200 4910 MID$(Q,1)=INKEY$:IF CVI(Q) THEN 4920 4920 WEND 4930 RETURN 4940 ' Exit 4950 KEY 5,"droidnim.bas":KEY 6,CHR$(34)+",a" 4960 COLOR 7,0:CLS:KEY LIST