10 REM WAR-PLAN
20 GOSUB 380 30 SYMBOL AFTER 129 40 SYMBOL 129,0,32,96,120,96,112,136,112 50 SYMBOL 130,0,0,0,0,0,0,0,0 60 SYMBOL 131,0,62,62,62,32,32,32,32 70 SYMBOL 132,0,136,80,32,32,32,80,136 80 GOSUB 440 90 GOSUB 510 100 GOSUB 860 110 GOSUB 1010 120 GOSUB 1170 125 CLS 130 IF NME(X,Y)=0 THEN GOSUB 1210:GOTO 160 140 IF NME(X,Y)=-1 THEN GOSUB 1240:GOTO 160 150 GOSUB 1320 160 IF NME(X,Y)=0 THEN GOSUB 1460 ELSE GOSUB 1380 170 SR=SR-1: IF SR>0 THEN M$="You have "+STR$(SR)+" shots left":GOSUB 630:PRINT 180 IF SR>0 AND ER>0 THEN GOTO 110 190 REM PLAYER IS OUT OF SHOTS 200 REM OR HAS DESTROYED ALL NME UNITS 210 IF ER=0 THEN GOSUB 1540:GOTO 90 220 M$="Central Office advises you.":GOSUB 630:PRINT 230 M$="You have used up all our missiles":GOSUB 630:PRINT 240 M$="This is where the enemy was hiding":GOSUB 630:PRINT 250 WINDOW 1,40,1,20:GOSUB 930:WINDOW 1,40,21,25 260 M$="You have scored :"+STR$(sc):GOSUB 630:PRINT:FOR L=1 TO 1000:NEXT L 270 IF SC>HS THEN M$="Which is the high score":GOSUB 630:HS$=N$:HS=SC:PRINT 280 REM Ask IF PLAYER WANTS ANOTHER GAME 290 WINDOW 1,40,1,25:CLS:LOCATE 1,11 300 M$="Commander "+HS$+" has the high score":GOSUB 630 310 LOCATE 1,13:M$="Which is "+STR$(hs)+" points":GOSUB 630 320 LOCATE 1,17: LET M$="Does anyone want another game (Y/N) ?":GOSUB 630 330 I$=INKEY$:IF I$<>"" THEN GOTO 330 340 I$=INKEY$:IF I$="" THEN GOTO 340 350 IF I$="y" OR I$="Y" THEN GOTO 80 360 IF I$="n" OR I$="N" THEN WINDOW 1,40,1,25:CLS:END 370 GOTO 330 380 REM SET UP FOR NEW GAME 390 HS=0:HS$="" 400 MODE 1 410 BORDER 13 420 DIM NME(14,24) 430 RETURN 440 REM SET UP FOR A NEW PLAYER 450 WINDOW 1,40,1,25 460 SC=0:CLS 470 LOCATE 6,11:PRINT"What is your name"; 480 INPUT n$:IF N$="" THEN GOTO 470 490 WV=1 500 RETURN 510 REM SET UP FOR NEW WAVE 520 WINDOW 1,40,1,25:CLS:LOCATE 1,9:M$="Commander "+N$+".":GOSUB 630 530 LOCATE 1,11:M$="Central Office advises you.":GOSUB 630 540 LOCATE 1,13:M$="Attack enemy immediately.":GOSUB 630 550 LOCATE 1,15:M$="Repeat, ATTACK. ATTACK.":GOSUB 630 560 LOCATE 1,21:M$="":FOR L=1 TO 10:M$=M$+CHR$(10):NEXT L:GOSUB 630 570 FOR X=1 TO 14:FOR Y=1 TO 24:NME(X,Y)=0:NEXT Y:NEXT X 580 ER=20:FOR L=1 TO ER 590 X=INT(RND(1)*10+3):Y=INT(RND(1)*20+3):IF NME(X,Y)<>0 THEN GOTO 590 600 IF L<3 THEN NME(X,Y)=-1 ELSE NME(X,Y)=1 610 NEXT L:SR=50 620 RETURN 630 REM Teletype emulator 640 FOR L=1 TO LEN(M$) 650 PRINT MID$(M$,L,1); 660 SOUND 1,0,5,7,0,0,10:SOUND 1,0,3 670 IF SQ(1)>127 THEN GOTO 670 680 NEXT L 690 RETURN 700 REM SCAN LOCALLY 710 NN=0 720 FOR X=TX-1 TO TX+1 730 FOR Y=TY-1 TO TY+1 740 NN=NN+ABS(NME(X,Y)) 750 NEXT Y:NEXT X 760 NN=NN-ABS(NME(TX,TY)) 770 RETURN 780 REM SCAN LARGER AREA 790 NN=0 800 FOR X=TX-2 TO TX+2 810 FOR Y=TY-2 TO TY+2 820 NN=NN+ABS(NME(X,Y)) 830 NEXT Y:NEXT X 840 NN=NN-ABS(NME(TX,TY)) 850 RETURN 860 REM LABEL MAP AREA 870 WINDOW 1,40,1,20:CLS 880 LOCATE 12,1:PRINT "11111111112":LOCATE 3,2:PRINT "12345678901234567890" 890 LOCATE 1,3 900 FOR L=ASC("A") TO ASC("J") 910 PRINT CHR$(L):NEXT L 920 RETURN 930 REM FILL IN ALL NME UNITS 940 FOR X=3 TO 12 950 LOCATE 3,X 960 FOR Y=3 TO 22 970 PRINT CHR$(130+NME(X,Y)); 980 NEXT Y 990 NEXT X 1000 RETURN 1010 REM GET A LEGAL SHOT 1020 WINDOW 1,40,21,25:M$="Enter target for missile ":GOSUB 630:PRINT 1030 X=1:A=1:B=0:C=1:WINDOW 1,40,1,20 1040 LOCATE 11,15:PRINT"[ ";CHR$(64+X);" ";A+B;" ] "; 1050 I$=INKEY$:IF I$<>"" THEN GOTO 1050 1060 I$=INKEY$:IF I$="" THEN GOTO 1060 1070 IF I$<"0" OR I$>"9" THEN GOTO 1100 1080 IF C=1 THEN B=A*10:A=ASC(I$)-ASC("0"):c=0:GOTO 1040 1090 C=1:B=A*10:A=ASC(I$)-ASC("0"):GOTO 1040 1100 IF I$=CHR$(13) THEN GOTO 1140 1110 IF I$>="a" AND i$<="j" THEN i$=CHR$(ASC(i$)-ASC("a")+ASC("A")) 1120 IF i$<"A" OR I$>"J" THEN PRINT CHR$(7):GOTO 1040 1130 X=ASC(I$)-ASC("A")+1:GOTO 1040 1140 Y=A+B+2:X=X+2:IF X=2 OR Y<3 OR Y>22 THEN A=1:B=0:X=0:PRINT CHR$(7);:GOTO 1030 1150 LOCATE 11,15:PRINT" ";:WINDOW 1,40,21,25 1160 RETURN 1170 REM UPDATE MAP 1180 WINDOW 1,40,1,20:LOCATE Y,X:PRINT CHR$(132); 1190 WINDOW 1,40,21,25 1200 RETURN 1210 REM PLAYER MISSED 1220 M$="The missile missed the enemy":GOSUB 630:PRINT 1230 RETURN 1240 REM PLAYER HIT A COMMAND BASE 1250 M$=" You have hit the command base":GOSUB 630:PRINT 1260 IF er> 2 THEN m$="...but it is not destroyed":GOSUB 630:PRINT:GOTO 1310 1270 M$="...and you destroyed it":GOSUB 630:PRINT 1280 SC=SC+500 1290 NME(X,Y)=0 1300 ER=ER-1 1310 RETURN 1320 REM PLAYER HIT AN ENEMY UNIT 1330 NME(X,Y)=0 1340 M$="You have hit an enemy unit":GOSUB 630:PRINT 1350 M$="and it is destroyed":GOSUB 630:PRINT:ER=ER-1 1360 SC=SC+20 1370 RETURN 1380 REM SEARCH AROUND NEARBY 1390 M$="Intelligence reports : "+CHR$(13)+CHR$(10) 1400 tx=x:TY=Y:GOSUB 700 1410 IF NN=0 THEN M$=M$+"no nearby activity" 1420 IF nn>0 AND nn<3 THEN m$=m$+"A small amount of nearby activity" 1430 IF nn>=3 THEN m$=m$+"A large amount of nearby activity" 1440 WINDOW 1,40,21,25:GOSUB 630:PRINT 1450 RETURN 1460 REM search around after a hit 1470 m$="intelligence reports : "+CHR$(13)+CHR$(10) 1480 tx=x:ty=y:GOSUB 780 1490 IF nn=0 THEN M$=M$+"no local activity" 1500 IF nn>0 AND nn<6 THEN m$=m$+"a small amount of local activity" 1510 IF nn>5 THEN m$=m$+"a large amount of local activity" 1520 WINDOW 1,40,21,25:GOSUB 630:PRINT 1530 RETURN 1540 REM PLAYER HAS WIPED OUT A WAVE 1550 WINDOW 1,40,1,25:CLS 1560 LOCATE 1,11:M$="Cental Office advises you.":GOSUB 630 1570 LOCATE 1,13:m$="Forthcoming enemy counter attack.":GOSUB 630 1580 LOCATE 1,15:m$="Prevent at all costs.":GOSUB 630 1590 LOCATE 1,19:m$="Your score so far is :"+STR$(sc)+" points.":GOSUB 630 1600 LOCATE 1,21:m$="":FOR l=1 TO 10:m$=m$+CHR$(10):NEXT l:GOSUB 630 1610 RETURN |