10 REM TANX.
20 REM à PAUL STANLEY
25 REM PAN BOOKS 1984
30 MODE 1:BORDER 0:INK 0,0:INK 1,24:INK 2,20:INK 3,6:CLS
40 GOSUB 1080
50 GOSUB 800
60 WINDOW #0,5,36,1,25:PAPER #0,0:PEN #0,1:CLS #0
70 GOSUB 1030
80 C=0:GOSUB 870
90 IF RND>0.5 THEN C=C+1:GOSUB 420
100 GOSUB 170:IF FL=1 THEN FL=0:GOTO 670
110  C=C+1
120 IF C=8 THEN CLS:GOTO 80
130 GOSUB 420:IF FL=1 THEN FL=0: GOTO 710
140 C=C+1
150 IF C=12 THEN CLS:GOTO 80
160 GOTO 100
170 LOCATE 13,22:PRINT"PLAYER 1":LOCATE 1,24:PRINT CHR$(20);:LOCATE 1,24:INPUT"ENTER ELEVATION (0 TO 90)";AA$:IF AA$="" THEN 170
180 IF ASC(AA$)<48 OR ASC (AA$)>57 THEN 170 ELSE A=VAL(AA$)
190 IF A>90 OR A<0 THEN 170
200 PEN 2:LOCATE 1,24:PRINT CHR$(20);:LOCATE 1,24:PRINT"ENTER VELOCITY (2 TO 10) ";:PEN 1:INPUT VV$:IF VV$="" THEN 200
210 IF ASC(VV$)<49 OR ASC (VV$)>57 THEN 200 ELSE V=VAL(VV$)
220 IF V<2 OR V>10 THEN 200
230 S1=F1:O1=F1
240 MX=274+10*V
250 E=A/12
260 FOR XX=1 TO 10:SOUND 1,2000,(XX+1),(10-XX),3,0,1:NEXT
270 FOR G=80 TO 575 STEP V
280 IF S1>0 THEN IF S1<399 THEN IF G>82 THEN IF TEST(G,S1)=1 OR TEST(G,S1)=2 THEN K=G:SOUND 1,120,5:SOUND 1,180,5:GOTO 340
290 IF S1>0 THEN IF S1<399 THEN PLOT G,S1,3
300 IF E>0 THEN S1=S1-E*(G<MX)+E*(G>=MX)
310 IF G<MX THEN E=E-E/40 ELSE E=E+E/30
320 NEXT G
330 K=575
340 S1=24.5-S1/16:IF(INT(S1)=Q2 AND K>560) THEN FL=1:RETURN
350 E=A/12:FOR G=80 TO 575 STEP V
360 IF G=K THEN RETURN
370 IF O1>0 THEN IF O1<399 THEN PLOT G,O1,0
380 IF E>0 THEN O1=O1-E*(G<MX)+E*(G>=MX)
390 IF G<MX THEN E=E-E/40 ELSE E=E+E/30
400 NEXT G
410 RETURN
420 LOCATE 13,22:PRINT"PLAYER 2":LOCATE 1,24:PRINT CHR$(20);:LOCATE 1,24:INPUT"ENTER ELEVATION (0 TO 90)";AA$:IF AA$="" THEN 420
430 IF ASC(AA$)<48 OR ASC (AA$)>57 THEN 420 ELSE A=VAL(AA$)
440 IF A>90 OR A<0 THEN 420
450 PEN 2:LOCATE 1,24:PRINT CHR$(20);:LOCATE 1,24:PRINT"ENTER VELOCITY (2 TO 10) ";:PEN 1:INPUT VV$:IF VV$="" THEN 450
460 IF ASC(VV$)<49 OR ASC (VV$)>57 THEN 450 ELSE V=VAL(VV$)
470 IF V<2 OR V>10 THEN 450
480 S1=F2:O1=F2
490 MX=376-10*V
500 E=A/12
510 FOR XX=1 TO 10:SOUND 1,1500,(XX+1),(10-XX),3,0,1:NEXT
520 FOR G=560 TO 64 STEP -V
530 IF S1>0 THEN IF S1<399 THEN IF G<544 THEN IF TEST(G,S1)=1 OR TEST(G,S1)=2 THEN K=G:SOUND 1,120,5:SOUND 1,90,4:GOTO 590
540 IF S1>0 THEN IF S1<399 THEN PLOT G,S1,3
550 IF E>0 THEN S1=S1-E*(G>MX)+E*(G<=MX)
560 IF G>MX THEN E=E-E/40 ELSE E=E+E/30 
570 NEXT G
580 K=0
590 S1=24.5-S1/16:IF(INT(S1)=Q1 AND K<80)  THEN FL = 1:RETURN
600 E=A/12:FOR G=560 TO 64 STEP -V
610 IF G=K THEN RETURN
620 IF O1>0 THEN IF O1<399 THEN PLOT G,O1,0
630 IF E>0 THEN O1=O1-E*(G>MX)+E*(G<=MX)
640 IF G>MX THEN E=E-E/40 ELSE E=E+E/30
650 NEXT G
660 RETURN
670 LOCATE 32,Q2+1:PRINT" "
680 FOR F=1 TO 50:SOUND 1,(F+60),3:NEXT F
690 SC1=SC1+1
700 GOTO 750
710 LOCATE 1,Q1+1:PRINT" "
720 FOR F=1 TO 100:SOUND 1,(F+30),3:NEXT
730 SC2=SC2+1
740 GOTO 750
750 CLS:LOCATE 6,11:PRINT"PLAYER 1 HAS ";SC1;" POINTS":LOCATE 6,14:PRINT"PLAYER 2 HAS ";SC2;" POINTS"
760 LOCATE 3,19:PRINT"PRESS ANY KEY TO PLAY AGAIN"
770 IF INKEY$<>"" THEN 770
780 IF INKEY$="" THEN 780 ELSE CLS:GOTO 80
790 FOR XX=1 TO 600:NEXT:CLS:GOTO 80
800 Q1=0:Q2=10:E=21:V=31
810 PRINT"                 TANX                    "
820 PEN 3:LOCATE 1,6:PRINT"The two players take it in turn to enterthe  angle  and  velocity  at which theywant to fire and hit their opponent.":PEN 1
830 PEN 2:PRINT:PRINT"The shells must be fired over the hills,but if you are lucky your shell may be  able to go through a hill  (particulary at high speed.)":PEN 1
840 PEN 3:PRINT:PRINT"To stand the best chance of hitting youropponent, try to use the smallest angle of elevation.":PEN 1
850 PEN 2:LOCATE 1,24:PRINT"        PRESS ANY KEY TO START         ":PEN 1
860 IF INKEY$="" THEN 860 ELSE CLS:RETURN
870 Q=18-RND*13
880 FOR F=2 TO 29
890 FOR G=21 TO Q STEP -1
900 LOCATE F+1,G+1:PRINT CHR$(233);:IF F=29 THEN PRINT CHR$(233);CHR$(233);
910 IF F=2 THEN LOCATE F-1,G+1:PRINT CHR$(233);CHR$(233);
920 NEXT G
930 Q=Q+RND*4-RND*4
940 IF Q<3 THEN Q=4+RND*2
950 IF Q>20 THEN Q=20
960 NEXT F
970 FOR F=1 TO 21
980 LOCATE 1,F+1:CALL 360:XX=PEEK(367):IF XX<>32 THEN LOCATE 1,F:PEN 2:PRINT CHR$(231);:PEN 1:F1=(25-F)*16+16:Q1=F-1:GOTO 1000
990 NEXT
1000 FOR F=1 TO 21:LOCATE 32,F+1:CALL 360:XX=PEEK(367):IF XX<>32 THEN LOCATE 32,F:PEN 2:PRINT CHR$(232);:PEN 1:F2=(25-F)*16+16:Q2=F-1:RETURN
1010 NEXT
1020 RETURN
1030 SYMBOL AFTER 230
1040 SYMBOL 231,0,1,2,60,56,255,255,127
1050 SYMBOL 232,0,128,64,60,28,255,255,127
1060 SYMBOL 233,170,85,170,85,170,85,170,85
1070 RETURN
1080 RESTORE 1090:FOR X=360 TO 366:READ A:POKE X,A:NEXT:RESTORE :RETURN
1090 DATA 205,96,187,50,111,1,201
1100 INPUT X$:PRINT ASC(X$);:GOTO 1100