100 LET T=INT(RND(0)*9)+1,K=0,K3=0,M=1,P=0 150 DIM A(70),C(70),D(70),F(70),H(70),J(70),M(70),P(70) 160 DIM R(70),S(70),T(70),V(70),W(70),X(70),Y(70) 230 PRINT "&K&J&J": PRINT ,"*+*+*+*+*+*+*+*+*+*" 240 PRINT ,"@$@ @$@" 250 PRINT ,"*+* TA N K S *+*" 260 PRINT ,"@$@ @$@" 270 PRINT ,"*+*+*+*+*+*+*+*+*+*&J" 300 REM===ARMR--GUN--FIREPWR-MOVE--RANGE-SHELLS--POINTS 310 DATA 8,75,10,80,800,30,50 320 DATA 5,37,5,110,500,40,25 330 DATA 7,75,11,110,800,50,65 340 DATA 6,76,14,90,1000,25,75 350 DATA 6,90,15,90,1200,30,125 360 DATA 10,76,14,90,1000,30,75 370 DATA 9,75,11,80,800,35,50 380 DATA 4,90,14,120,1000,40,100 390 DATA 12,90,12,90,1200,35,150 395 LET Q=0,N=0,K1=0,K2=0 400 FOR X=1 TO 9 410 READ A(X),C(X),F(X),M(X),R(X),S(X),P(X): LET W(X)=4 420 NEXT X 450 LET L=INT(RND(0)*10)+1: PRINT 510 PRINT " DO YOU NEED INSTRUCTIONS ?&J" 550 INPUT (1,100)" INPUT Yes or No....Y=Yes N=No ---=>",Y$ 560 PRINT : IF Y$="N" THEN 1000 ELSE PRINT "&K&J" 600 PRINT " ======== INSTRUCTIONS ========" 620 PRINT " THIS IS A GAME OF TANK WARFARE." 630 PRINT " Your main goal is to *SURVIVE* and also" 640 PRINT " DESTROY as many enemy units as possible.&J" 660 PRINT " YOU ARE COMMANDING A ";: GOSUB 7500 680 PRINT : PRINT " TANK which has ";A(T);" inches of armour and" 690 PRINT "carries a ";C(T);" mm. cannon as main armament." 695 PRINT " IT'S RANGE IS GOOD TO ";R(T);" YARDS." 700 PRINT " You will have ";S(T);" shells to shoot with.&J" 720 INPUT (1,150)" TYPE any letter to see more ---=> ",Y$ 740 PRINT "&K&J*POINTS* are given for each *KILL* and a" 750 PRINT " *LOG* is kept of totsl kills you make...." 760 PRINT " until YOU GET *DESTROYED* .": PRINT 770 PRINT " You will be able to MOVE and *BUY TIME*" 780 PRINT " if the enemy shots are getting TOO CLOSE.&J" 790 PRINT " MOVE RATE of your ";: GOSUB 7500: PRINT " " 800 PRINT " TANK is up to ";M(T);" yards.&J" 820 PRINT "*** NOTE ***... FIREPOWER DOUBLES at less than 1/2 RANGE." 830 PRINT ,"... You *CAN* run over TRUCKS.&J" 840 INPUT (1,150)" Type any letter to see more ---=> ",Y$ 850 PRINT "&K&J": GOSUB 900: GOTO 1000 900 PRINT TAB(30);"+GERMANS+" 940 PRINT " Movement can be in 4 3 2" 950 PRINT " 8 possible directions as \ I /" 960 PRINT " shown. (LEFT) 5 -- 0 -- 1 (RIGHT)" 970 PRINT " You MOVE * or * SHOOT; / I \" 980 PRINT " YOU CAN'T DO BOTH. 6 7 8" 985 PRINT TAB(32);"*YOU*" 990 PRINT " The GERMANS will be in the 2,3, OR 4 direction&J" 995 RETURN 1000 REM*=*=*=*=* S T A R T *=*=*=*=* 1020 PRINT "&J Any letter typed will print a summary" 1030 PRINT " of all the available commands for this game." 1100 PRINT 1400 REM====== TANK "TYPES" DATA ====== 1410 DATA 10,11,17,15,29,12,14,27,16,19,17,18,13,20,10 1420 DATA 21,24,22,23,25,21,26,28,20,31,21,23,19,24,29 1430 DATA 11,17,28,27,18,29,29,22,29,28,28,30,28,28,25 1440 DATA 10,20,11,21,26,14,12,21,22,16,10,19,28,29,25 1450 FOR X=10 TO 69: READ T(X): NEXT X 1500 LET Z=INT(RND(0)*25)+5: REM=== MIX UP TYPE #'S === 1520 FOR X=10 TO Z+10 1530 LET Z1=INT(RND(0)*59)+10 1540 LET Z2=INT(RND(0)*59)+10,T(Z1)=T(Z2) 1560 NEXT X 1570 LET Z=INT(RND(0)*20)+10,E=0 1590 PRINT TAB(10);"*** G O O D L U C K ***": PRINT 1600 FOR X=10 TO 69: REM=== SET UP TYPE # VARIBLES === 1607 LET S(X)=INT(RND(0)*30)+(5) 1610 IF T(X)<>Z THEN 1620 1615 LET E=E+1: PRINT " *SPOTTER PLANE* reports ...";E;" "; 1617 GOSUB 7000: IF E=1 THEN PRINT " unit." 1618 IF E>1 THEN PRINT " units." 1620 IF T(X)=10 THEN LET A(X)=3,C(X)=20,F(X)=2,M(X)=160 1625 IF T(X)=10 THEN LET P(X)=5,R(X)=200,J(X)=2: GOTO 1890 1630 IF T(X)=11 THEN LET A(X)=3,C(X)=50,F(X)=6,M(X)=140 1635 IF T(X)=11 THEN LET P(X)=10,R(X)=600,J(X)=1: GOTO 1890 1640 IF T(X)=12 THEN LET A(X)=5,C(X)=105,F(X)=40,M(X)=80 1645 IF T(X)=12 THEN LET P(X)=150,R(X)=3000,J(X)=2: GOTO 1890 1650 IF T(X)=13 THEN LET A(X)=4,C(X)=150,F(X)=50,M(X)=100 1655 IF T(X)=13 THEN LET P(X)=100,R(X)=1100,J(X)=2: GOTO 1890 1660 IF T(X)=14 THEN LET A(X)=6,C(X)=150,F(X)=60,M(X)=80 1665 IF T(X)=14 THEN LET P(X)=150,R(X)=2400,J(X)=2: GOTO 1890 1670 IF T(X)=15 THEN LET A(X)=5,C(X)=150,F(X)=11,M(X)=60 1675 IF T(X)=15 THEN LET P(X)=45,R(X)=1200,J(X)=2: GOTO 1890 1680 IF T(X)=16 THEN LET A(X)=6,C(X)=20,F(X)=12,M(X)=100 1685 IF T(X)=16 THEN LET P(X)=25,R(X)=900,J(X)=2: GOTO 1890 1690 IF T(X)=17 THEN LET A(X)=12,C(X)=75,F(X)=12,M(X)=60 1695 IF T(X)=17 THEN LET P(X)=35,R(X)=800,J(X)=1: GOTO 1890 1700 IF T(X)=18 THEN LET A(X)=12,C(X)=75,F(X)=12,M(X)=80 1705 IF T(X)=18 THEN LET P(X)=40,R(X)=800,J(X)=1: GOTO 1890 1710 IF T(X)=19 THEN LET A(X)=6,C(X)=20,F(X)=2,M(X)=100 1715 IF T(X)=19 THEN LET P(X)=10,R(X)=400,J(X)=1: GOTO 1890 1720 IF T(X)=20 THEN LET A(X)=7,C(X)=50,F(X)=8,M(X)=90 1725 IF T(X)=20 THEN LET P(X)=15,R(X)=600,J(X)=1: GOTO 1890 1730 IF T(X)=21 THEN LET A(X)=7,C(X)=75,F(X)=11,M(X)=80 1735 IF T(X)=21 THEN LET P(X)=25,R(X)=800,J(X)=1: GOTO 1890 1740 IF T(X)=22 THEN LET A(X)=8,C(X)=75,F(X)=14,M(X)=80 1745 IF T(X)=22 THEN LET P(X)=35,R(X)=900,J(X)=1: GOTO 1890 1750 IF T(X)=23 THEN LET A(X)=11,C(X)=75,F(X)=13,M(X)=100 1755 IF T(X)=23 THEN LET P(X)=65,R(X)=1100,J(X)=1: GOTO 1890 1760 IF T(X)=24 THEN LET A(X)=12,C(X)=75,F(X)=16,M(X)=100 1765 IF T(X)=24 THEN LET P(X)=80,R(X)=1200,J(X)=1: GOTO 1890 1770 IF T(X)=25 THEN LET A(X)=12,C(X)=88,F(X)=15,M(X)=80 1775 IF T(X)=25 THEN LET P(X)=75,R(X)=1200,J(X)=1: GOTO 1890 1780 IF T(X)=26 THEN LET A(X)=16,C(X)=88,F(X)=20,M(X)=60 1785 IF T(X)=26 THEN LET P(X)=125,R(X)=1200,J(X)=1: GOTO 1890 1790 IF T(X)=27 THEN LET A(X)=1,C(X)=0,F(X)=1,M(X)=30,S(X)=0 1795 IF T(X)=27 THEN LET P(X)=1,R(X)=0,J(X)=4: GOTO 1890 1800 IF T(X)=28 THEN LET A(X)=1,C(X)=0,F(X)=1,M(X)=120,S(X)=0 1805 IF T(X)=28 THEN LET P(X)=3,R(X)=0,J(X)=4: GOTO 1890 1810 IF T(X)=29 THEN LET A(X)=4,C(X)=10,F(X)=2,M(X)=100 1815 IF T(X)=29 THEN LET P(X)=5,R(X)=100,J(X)=3: GOTO 1890 1820 IF T(X)=30 THEN LET A(X)=4,C(X)=20,F(X)=2,M(X)=90 1825 IF T(X)=30 THEN LET P(X)=10,R(X)=400,J(X)=3: GOTO 1890 1850 LET A(X)=3,C(X)=75,F(X)=13,M(X)=140 1860 LET P(X)=20,R(X)=1300,J(X)=1 1890 NEXT X 2000 PRINT : PRINT " YOUR PRESENT POSITION (terrain-wise) IS" 2020 GOSUB 7700 2200 FOR X=10 TO 69 2210 IF C(T)=37 THEN LET P(X)=INT(P(X)*2) 2240 LET D(X)=INT(RND(0)*(R(T)/100))*100-INT(R(T)/10) 2250 LET D(X)=D(X)+(R(T)-150),W(X)=6 2260 LET H(X)=INT((RND(0)*10)*10),V(X)=INT(D(X)/2) 2270 LET Y(X)=D(X)-INT((RND(0)*10)*10) 2275 IF Y(X)>R(T) THEN LET Y(X)=INT(R(T)-(R(T)/10)) 2280 LET X(X)=INT((RND(0)*10)*10)-50 2290 NEXT X 3000 IF RND(0)>.65 THEN 3100: REM=== PICK NEW TARGETS === 3020 IF N>0 THEN 3100 3030 LET Q=INT(RND(0)*54)+10,Q1=INT(RND(0)*5.4)+1 3040 IF RND(0)>.3 THEN LET Q1=INT(RND(0)*2.3)+1 3050 IF Q<10 THEN 3000 3060 FOR X=Q TO Q+(Q1-1) 3070 IF W(X)>0 THEN LET W(X)=6: LET N=N+1 3090 NEXT X 3100 IF N=0 THEN 3200: REM=== GET GERMAN STATUS 3110 PRINT : PRINT "+ + + + + + + GERMANS "; 3115 IF C=3 THEN IF N>1 THEN SET DS=50 3120 PRINT "moving";: SET DS=0 3125 PRINT " + + + + + + +": PRINT 3130 FOR X=Q TO Q+(Q1-1) 3135 IF W(X)<3 THEN 3195 3140 LET Z=INT(RND(0)*60)-30 3150 IF R(X)>=ABS(D(X)+Z) THEN LET W(X)=4 3155 IF R(X).7 THEN LET W(X)=5 3165 IF ABS(D(X)).5 THEN LET W(X)=6 3180 IF RND(0)>.9 THEN LET W(X)=5 3185 IF J(X)>2 THEN IF D(X).5 THEN LET W(X)=7 3190 IF J(X)<4 THEN IF S(X)<=INT(RND(0)*3.2) THEN LET W(X)=7 3195 NEXT X 3200 IF Q=0 THEN 4000: REM====GERMANS MOVE OR SHOOT ==== 3210 LET N=0: IF RND(0)>.95 THEN GOSUB 6900 3220 FOR X=Q TO Q+(Q1-1) 3230 IF W(X)<2 THEN 3290 3240 LET N=N+1 3250 IF W(X)=2 THEN GOSUB 3900: GOTO 3290 3260 IF W(X)=4 THEN GOSUB 3300 3270 IF W(X)>4 THEN GOSUB 3800 3280 IF W(T)=0 THEN 9000 3290 NEXT X 3295 GOTO 4000 3300 REM= = = + GERMANS SHOOT + = = = 3310 PRINT TAB(20);"+BOOM+" 3330 GOSUB 7000: PRINT " shooting from ";D(X);" yds." 3390 GOSUB 3400: GOSUB 3600: RETURN 3400 LET Z1=D(X)-V(X): REM---- CALC. +GERMAN+ HIT ---- 3420 LET Z3=INT(RND(0)*Z1),Z4=INT(RND(0)*H(X)) 3430 LET V(X)=INT(V(X)+(Z3)),H(X)=INT(H(X)-(Z4)) 3440 LET Z1=INT(D(X)-V(X)),Z2=INT(H(X)) 3450 LET H=F(X)/A(T),S(X)=S(X)-1 3460 IF M(T)=0 THEN LET H=H+H 3470 IF J(X)=1 THEN IF ABS(D(X))<=R(X)/2 THEN LET H=H*2 3480 IF J(X)=2 THEN IF ABS(D(X))>R(X)/10 THEN LET H=H/2 3490 IF J(X)=3 THEN IF ABS(D(X))<50 THEN LET H=H+1 3500 REM........TERRAIN ADJ. FOR HIT CALC. 3510 IF L>3 THEN IF L<7 THEN LET H=H-(RND(0)*(.1*L)) 3520 IF L>=7 THEN LET H=H/2 3530 IF L=10 THEN LET H=H-1 3595 RETURN 3600 LET H=INT(H): REM--- PRINT +GERMAN+ *MISS* RESULTS --- 3620 IF V(X)>R(X) THEN LET H=0 3630 IF ABS(Z1)>15 THEN LET H=0 3640 IF ABS(Z2)>10 THEN LET H=0 3650 IF H>0 THEN 3700 3655 IF ABS(Z1)<12 THEN IF ABS(Z2)<7 THEN 3700 3660 PRINT : PRINT TAB(20);"* B O O M *" 3670 PRINT "SHOT ON *YOU* ";: IF H<1 THEN PRINT "INEFECTIVE" 3690 GOSUB 6700: RETURN 3700 REM..... PRINT +GERMAN+ *HIT* RESULTS... 3710 PRINT : PRINT TAB(20);"*+#+* B L A M *+#+*": PRINT 3720 PRINT TAB(10);"Y O U ' V E B E E N H I T !" 3740 LET E=T,W=W(T): GOSUB 6600: PRINT " *YOU* are..."; 3750 IF Z2=2 THEN LET W(T)=2 3760 IF Z2=2 THEN IF RND(0)>.9 THEN LET W(T)=3: LET M(T)=0 3770 IF Z2=0 THEN LET W(T)=0: PRINT " *** YOUR DEAD ***&J" 3780 IF W(T)=2 THEN PRINT " $#! STUNNED !#$&J" 3785 IF W(T)=3 THEN PRINT " +++ DAMAGED --- CAN'T MOVE +++" 3790 IF W(T)>3 THEN PRINT " /^\ JUST DENTED \V/" 3795 RETURN 3800 GOSUB 7000: REM= = = + GERMANS MOVE + = = = 3805 IF M(X)=0 THEN PRINT "...+++Stalled+++": RETURN 3810 IF W(X)=5 THEN PRINT " *** Halted ***": RETURN 3820 PRINT " ...moving.": IF W(X)=6 THEN LET D=INT((RND(0)*2)+2.5) 3830 IF RND(0)>.95 THEN LET D=INT(RND(0)*9) 3840 IF W(X)=7 THEN LET D=7: PRINT TAB(35);"+*+ Retreating +*+" 3850 LET D1=M(X)-INT(RND(0)*30): GOSUB 6000: LET D(X)=INT(D(X)+(V1)) 3870 LET H(X)=INT(H(X)+(H1/2)),V(X)=INT(V(X)+(V1/2)) 3880 LET Y(X)=INT(Y(X)+(V1*.7)),D(X)=INT(D(X)/10)*10 3890 IF ABS(D(X)).67 THEN LET W(X)=4 3940 IF Z2>.91 THEN LET W(X)=7 3950 IF S(X)=0 THEN 3995 3960 IF M(X)>0 THEN 3995 3970 IF Z2>.2 THEN 3995 3980 PRINT TAB(20);" ";: GOSUB 7000: LET S(X)=0 3990 PRINT " BEING... *** ABANDONED ***": RETURN 3995 RETURN 4000 PRINT : REM*+*+*+*+*+* C O M M A N D S *+*+*+*+*+*+* 4020 IF W(T)=2 THEN PRINT "*YOU* ARE +*+STUNNED+*+ OUT OF 1 TURN." 4030 IF W(T)=2 THEN LET W(T)=4: PRINT : GOTO 3000 4050 IF S(T)<=0 THEN PRINT " *YOU* ARE OUT OF SHELLS.": GOTO 9000 4060 IF C=2 THEN IF N<1 THEN PRINT " See nothing...Hear nothing" 4070 INPUT (1,200)" NEXT COMMAND ? (0 TO 9) ---=>",C$ 4080 IF LEN(C$)=0 THEN LET C=2: GOTO 3000 4090 LET C=ASC(C$(1,1))-48 4100 PRINT : IF C=0 THEN 5000: REM*+* MOVE *+* 4110 IF C=1 THEN 5100: REM*+* SCAN *+* 4120 IF C=2 THEN 3000: REM*+* WAIT *+* 4130 IF C=3 THEN 5300: REM*+* SHOOT *+* 4140 IF C=4 THEN 5400: REM*+* WITHDRAW *+* 4150 IF C=5 THEN 5500: REM*+* RETREAT *+* 4160 IF C=6 THEN 5600: REM*+* STATUS *+* 4170 IF C=7 THEN 5700: REM*+* INFO *+* 4180 IF C=8 THEN 5800: REM*+* POINTS *+* 4190 IF C=9 THEN GOSUB 7900: GOTO 4000 4195 IF C=17 THEN LET D=3,D1=M(T): GOTO 5080 4200 PRINT "*+*+*+* C O M M A N D S U M M A R Y *+*+*+*&J" 4210 PRINT "COMMAND 0 - MOVE 0 TO ";M(T);" FEET." 4220 PRINT "COMMAND 1 - SCAN OF VISIBLE ENEMY TANKS." 4230 PRINT "COMMAND 2 - WAIT FOR GERMANS TO MOVE CLOSER." 4240 PRINT "COMMAND 3 - SHOOT AT ONLY *ONE* ENEMY UNIT." 4250 PRINT "COMMAND 4 - WITHDRAW FROM THE AREA. (NOT THE GAME)" 4260 PRINT "COMMAND 5 - ABANDON YOUR CRIPPLED ";: GOSUB 7500 4270 PRINT : PRINT "COMMAND 6 - GET A STATUS REPORT." 4280 PRINT "COMMAND 7 - GET INFO ON THE ENEMY TANKS." 4285 PRINT "COMMAND 8 - POINT VALUE OF ENEMY TANKS." 4290 PRINT "COMMAND 9 - LIST *LOG* OF KILLS SO FAR." 4300 PRINT "COMMAND A - *#* ADVANCE forward at full speed *#*" 4310 GOTO 4000 4400 LET D=7,D1=M(T)*2: REM...ATTEMPT SAFE WITHDRAWL 4410 GOSUB 6000: PRINT " <<< "; 4420 GOSUB 7500: PRINT " WITHDRAWING ";D1;" YDS. >>>" 4430 FOR X=Q TO Q+(Q1-1) 4435 IF W(X)<2 THEN 4460 4440 LET D(X)=D(X)+D1,V(X)=V(X)+M(T) 4450 IF W(X)<7 THEN IF ABS(D(X))0 THEN PRINT " *** ";Z;" GERMANS STILL IN RANGE ***" 4480 PRINT : IF Z=0 THEN PRINT TAB(15);"### WITHDRAWL SUCCESSFUL ###" 4490 PRINT : RETURN 4500 PRINT "&J *YOU* ARE #*# DAMAGED #*# --- AND CAN'T MOVE!" 4590 GOTO 4000 5000 IF M(T)=0 THEN 4500: REM===== CMD 0 --- MOVE ===== 5010 INPUT (1,0)" Direction to move ? (1-8)---=>",D 5030 LET D=INT(D): IF D=0 THEN 4000 5040 IF D<0 THEN GOSUB 900: GOTO 4000 5045 IF D>8 THEN GOSUB 900: GOTO 4000 5050 PRINT : INPUT (3,0)" How many yards to move ? ---=>",D1 5060 LET D1=INT(D1): IF D1=0 THEN 4000 5070 IF D1<0 THEN PRINT "MAX MOVE RATE IS ";M(T): GOTO 5050 5075 IF D1>M(T) THEN PRINT "MAX RATE IS ";M(T): GOTO 5050 5080 GOSUB 6000: IF L>0 THEN IF RND(0)>.2 THEN LET L=L-1 5085 IF E=0 THEN 5090 5087 IF N>0 THEN IF W(E)=7 THEN IF RND(0)>.5 THEN GOSUB 6900 5090 GOSUB 6100: IF N>0 THEN GOSUB 6800 5095 GOTO 3000 5100 REM======== COMMAND 1 --- SCAN ========= 5110 IF N<1 THEN PRINT TAB(10);" ++++ No GERMANS in sight ++++" 5120 IF N<1 THEN 4000 5130 FOR X=Q TO Q+(Q1-1) 5140 IF W(X)<2 THEN 5190 5160 GOSUB 7000: PRINT " ";TAB(26);"distance: ";D(X); 5170 IF W(X)=2 THEN PRINT " *STUNNED*"; 5172 IF W(X)=5 THEN PRINT " *Halted*"; 5175 IF M(X)=0 THEN PRINT " +DAMAGED+": GOTO 5190 5180 IF W(X)=7 THEN PRINT " RETREATING": GOTO 5190 5185 PRINT " " 5190 NEXT X 5195 GOTO 4000 5300 REM========= COMMAND 3 --- SHOOT ========= 5310 IF N<1 THEN PRINT "+++ NO GERMANS +++": GOTO 4000 5320 FOR Z=Q TO Q+(Q1-1) 5330 IF W(Z)>1 THEN LET E=Z 5340 NEXT Z 5350 IF N>1 THEN GOSUB 6200 5366 IF E=0 THEN 4000 5380 LET X=E: GOSUB 6300: GOSUB 6400: GOTO 3100 5400 LET Z=0: REM======= COMMAND 4 --- WITHDRAW ======= 5410 IF M(T)=0 THEN 4500 5420 IF N=0 THEN 5470 5440 IF Q>=10 THEN GOSUB 4400 5450 IF Z>0 THEN 3000 5470 LET N=0: PRINT : PRINT " WITHDRAWING FROM ";: GOSUB 7700 5480 LET L=INT((RND(0)*10)+1): PRINT 5490 GOSUB 7600: PRINT ,"+++ Your new position is +++" 5495 GOSUB 7700: GOTO 4000 5500 REM===== COMMAND 5 --- ABANDON TANK ===== 5510 IF M(T)=0 THEN PRINT "*** DAMAGED *** ";: GOSUB 7500 5520 IF M(T)=0 THEN PRINT " *** ABANDONED *** ": GOTO 9000 5540 PRINT "&J *YOU* ARE PENNALIZED ";P(T);" *POINTS*" 5550 PRINT " FOR ABANDONNING A PERFECTLY GOOD" 5590 GOSUB 7500: LET P=P-P(T): GOTO 9000 5600 REM========= COMMAND 6 --- STATUS ========= 5605 GOSUB 7500: PRINT " Tank's *STATUS* is:"; 5610 IF M(T)=0 THEN PRINT " #*# DAMAGED #*#" 5615 PRINT : IF M(T)>0 THEN PRINT " + un-damaged +" 5620 PRINT "+ + + Present Terrain: ";: GOSUB 7700: PRINT 5630 PRINT "=============== MISSION # ";M;" ==================" 5640 GOSUB 7500: PRINT TAB(24);"MAX SHOOTING RANGE:";R(T) 5650 PRINT "MAX MOVE RATE: ";M(T);TAB(24);"Cannon: ";C(T);" mm." 5660 PRINT "Armour Rating: ";A(T);TAB(24); 5670 PRINT "Firepower Rating: ";F(T) 5680 PRINT ,"*** ";S(T);" SHELLS LEFT ***" 5690 PRINT "===============================================" 5695 GOTO 4000 5700 LET Z=0: REM====== COMMAND 7 --- INFO ====== 5710 IF N=0 THEN PRINT "+++ NO GERMANS VISIBLE +++": GOTO 4000 5715 IF Q=0 THEN PRINT "+++ NOBODY IN SIGHT +++": GOTO 4000 5720 PRINT "&J*** DATA ON GERMANS ***&J" 5730 FOR X=Q TO Q+(Q1-1) 5735 IF W(X)<2 THEN 5790 5740 PRINT "--------------------------------------------------" 5750 GOSUB 7000: PRINT TAB(24);"MAX SHOOTING RANGE: ";R(X) 5760 PRINT "MAX MOVE RATE: ";M(X);TAB(24);"Cannon: ";C(X);" mm." 5765 PRINT "Armour Rating: ";A(X);TAB(24); 5767 LET Z=Z+1: PRINT "Firepower Rating: ";F(X) 5770 PRINT "==================================================" 5775 IF N=3 THEN IF Z=3 THEN 4000 5780 IF Z=3 THEN INPUT (1,0)" INPUT any letter to see more-->",Y$ 5790 NEXT X 5795 GOTO 4000 5800 REM======= COMMAND 8 --- POINTS ======= 5810 IF N<1 THEN PRINT "+++ NOBODY OUT THERE +++": GOTO 5880 5830 PRINT "**************** POINT VALUES *******************" 5840 FOR X=Q TO Q+(Q1-1) 5845 IF W(X)<2 THEN 5870 5850 PRINT " ";: GOSUB 7000: PRINT TAB(35);P(X);" POINTS" 5860 PRINT "................................................." 5870 NEXT X 5880 PRINT TAB(9);"YOUR PRESENT SCORE: [*** ";P;" ***]" 5890 GOTO 4000 6000 REM......GOSUB TO MOVE IN EACH DIRECTION...... 6005 IF D=0 THEN LET H1=0,V1=0: RETURN 6010 IF D=1 THEN LET H1=D1,V1=INT(D1*.2): RETURN 6020 IF D=2 THEN LET H1=INT(D1*(.8)),V1=INT(D1*(.8))*(-1): RETURN 6030 IF D=3 THEN LET H1=0,V1=D1*(-1): RETURN 6040 IF D=4 THEN LET H1=INT(D1*(.8))*(-1),V1=INT(D1*(.8))*(-1): RETURN 6050 IF D=5 THEN LET H1=D1*(-1),V1=INT(D1*.2): RETURN 6060 IF D=6 THEN LET H1=INT(D1*(.8))*(-1),V1=INT(D1*(.8)): RETURN 6070 IF D=7 THEN LET H1=0,V1=D1: RETURN 6080 IF D=8 THEN LET H1=INT(D1*(.8)),V1=INT(D1*(.8)) 6090 RETURN 6100 REM......GOSUB TO CHANGE "DISTANCES"..... 6120 IF Q1=0 THEN RETURN 6130 IF N<=0 THEN RETURN 6140 FOR X=Q TO Q+(Q1-1) 6145 IF W(X)<2 THEN 6180 6150 LET D(X)=INT(D(X)+(V1)) 6160 LET H(X)=INT(H(X)+(H1/2)),V(X)=INT(V(X)+(V1/2)) 6170 LET Y(X)=INT(Y(X)+(V1*.2)),X(X)=INT(X(X)+(H1*.2)) 6175 IF W(X)=2 THEN LET H(X)=INT(H(X)+(H1/2)),V(X)=INT(V(X)+(1/2)) 6180 NEXT X 6190 RETURN 6200 IF N<=0 THEN RETURN : REM.....SELECT WHICH ENEMY TO SHOOT 6220 IF Q<10 THEN RETURN 6230 FOR X=Q TO Q+(Q1-1) 6235 IF W(X)<2 THEN 6250 6240 PRINT X;: IF W(X)=2 THEN PRINT "*"; 6243 IF M(X)=0 THEN PRINT "+"; 6245 PRINT " ";: GOSUB 7000: PRINT TAB(23);"Range: ";D(X); 6246 PRINT TAB(38);"it shoots to: ";R(X) 6250 NEXT X 6260 PRINT : INPUT (2,0)" INPUT which unit # to shoot at --->",E 6270 LET E=INT(E): IF E=0 THEN PRINT "SHOOTING ABORTED": RETURN 6280 IF EQ+Q1 THEN PRINT "NUMBER TOO HIGH": GOTO 6200 6290 IF W(E)=0 THEN PRINT "*** THAT UNIT IS DEAD ***": GOTO 6200 6295 RETURN 6300 LET S(T)=S(T)-1: REM.......GOSUB TO CALCULATE A "HIT"..... 6310 LET Z1=INT(D(E)-Y(E)),Z2=INT(X(E)) 6320 LET Z3=INT((RND(0)*(Z1/2))+(Z1/2)),Z4=INT((RND(0)*(Z2/2))+(Z2/2)) 6330 LET Y(E)=INT(Y(E)+Z3),X(E)=INT(X(E)-Z4),H=F(T)/A(E) 6335 IF ABS(D(E)).85 THEN LET H=H+1 6350 IF ABS(D(E))1 THEN IF ABS(D(E))>R(T)/2 THEN LET H=H/2 6360 LET H=INT(H): IF Y(E)>R(T)+10 THEN LET H=0 6365 IF J(E)=4 THEN LET W(E)=7 6366 IF J(E)=3 THEN IF RND(0)>.8 THEN LET W(E)=7 6367 IF J(E)<3 THEN IF F(T)>F(E) THEN IF RND(0)>.9 THEN LET W(E)=7 6370 IF Y(E)>R(T)+10 THEN LET Y(E)=R(T)-INT(RND(0)*25) 6380 IF ABS(Z1)>15 THEN LET H=0 6390 IF ABS(Z2)>10 THEN LET H=0 6395 RETURN 6400 PRINT : REM-----GOSUB TO PRINT RESULT OF YOUR SHOT... 6410 IF C(T)=37 THEN PRINT ,"*** B O O M ***" 6420 IF C(T)=75 THEN PRINT ,"*#+ B A R O O O M M +#*" 6425 IF C(T)=76 THEN PRINT ,"[+] C A R R O O M M [+]" 6430 IF C(T)>=90 THEN PRINT ,"[@$ K A V O O O M M $@]" 6435 IF ABS(Z1)<16 THEN IF ABS(Z2)<11 THEN IF H=0 THEN 6500 6450 PRINT : LET X=E: IF H>0 THEN 6500 6455 PRINT TAB(15);"* BOOM *&J": PRINT "Shot on ";: GOSUB 7000 6470 IF ABS(D(E))>R(T)+15 THEN PRINT " IS +++ OUT OF RANGE +++" 6480 IF ABS(D(E))>R(T)+15 THEN LET Y(E)=R(T),Z1=INT(ABS(D(E))-Y(E)) 6490 GOSUB 6700: LET W(E)=6: IF RND(0)>.2 THEN LET W(E)=4 6495 RETURN 6500 PRINT : REM----- "HIT" ON ENEMY MESSAGE DISPLAY ----- 6510 PRINT TAB(20);"*+#+* B L A M *+#+*&J": GOSUB 7000 6520 PRINT " *HIT*": LET W=W(E): GOSUB 6600: PRINT TAB(10); 6540 GOSUB 7000: IF Z2=2 THEN LET W(E)=2 6550 IF M(E)>0 THEN IF RND(0)>.8 THEN LET W(E)=3,M(E)=0 6555 IF S(T)=0 THEN IF Z2=2 THEN LET Z2=0 6560 IF Z2=0 THEN LET W(E)=0,P=P+P(E),K=K+1,K1=K1+1 6565 IF Z2=0 THEN IF J(E)=1 THEN LET K2=K2+1,K3=K3+1 6570 IF W(E)=0 THEN PRINT " *** DESTROYED ***" 6580 IF W(E)=2 THEN PRINT " $#! STUNNED !#$" 6585 IF W(E)=3 THEN PRINT " +++ DAMAGED --- CAN'T MOVE +++" 6590 IF W(E)>3 THEN PRINT " /^\ DENTED \V/" 6595 PRINT : RETURN 6600 LET Z=INT(RND(0)*6)+1: REM++++++ COMBAT RESULTS TABLE ++++++ 6610 LET Z2=5: IF E>0 THEN LET W=W(E) 6620 LET Z2=5: IF H=0 THEN IF Z<3 THEN LET Z2=2: RTURN 6630 IF H=1 THEN IF Z<3 THEN IF W=2 THEN LET Z2=0: RETURN 6635 IF H=1 THEN IF Z<4 THEN IF W<>2 THEN LET Z2=2: RETURN 6640 IF H>1 THEN IF Z<2 THEN LET Z2=0: RETURN 6650 IF H>2 THEN IF Z<3 THEN LET Z2=0: RETURN 6660 IF H>3 THEN IF Z<6 THEN LET Z2=0: RETURN 6665 IF H>4 THEN LET Z2=0: RETURN 6670 IF H=2 THEN IF Z<4 THEN IF W=2 THEN LET Z2=0: RETURN 6675 IF H=2 THEN IF Z<6 THEN IF W<>2 THEN LET Z2=2: RETURN 6680 IF H=3 THEN IF Z<5 THEN IF W=2 THEN LET Z2=0: RETURN 6685 IF H=3 THEN IF W<>2 THEN LET Z2=2: RETURN 6690 IF H=4 THEN IF W=2 THEN LET Z2=0 6695 RETURN 6700 IF Z1>15 THEN PRINT " SHORT by ";Z1;" yds." 6710 IF Z1<-15 THEN PRINT " LONG by ";Z1;" yds." 6720 IF ABS(Z2)>10 THEN PRINT " Off to the ";: GOTO 6740 6730 RETURN 6740 IF Z2<0 THEN PRINT "LEFT by ";Z2;" yards." 6750 IF Z2>0 THEN PRINT "RIGHT by ";Z2;" yards." 6790 RETURN 6800 FOR X=Q TO Q+(Q1-1): REM---- COLLISION ? ---- 6805 IF W(X)<2 THEN 6880 6810 IF ABS(D(X))<>0 THEN 6880 6820 IF J(X)=4 THEN PRINT TAB(25);"#$# CRUNCH #$#" 6830 IF J(X)<4 THEN PRINT TAB(25);"*#* WHAM ! *#*" 6840 PRINT " COLLISION WITH ";: GOSUB 7000: IF J(X)<4 THEN 6895 6850 PRINT : PRINT TAB(15);" *** RUN OVER ***": LET Z2=0 6860 GOSUB 7000: LET E=X: GOSUB 6560: GOTO 6895 6880 NEXT X 6895 RETURN 6900 IF Q+Q1-1<70 THEN LET Q1=Q1+1: REM...BRING IN NEW ENEMY UNITS 6910 LET X=Q+Q1-1: IF X>71 THEN 6990 6920 IF W(X)<=0 THEN 6995 6930 LET W(X)=6 6940 PRINT TAB(5);"### ";: GOSUB 7000 6950 PRINT " APPEARING OUT OF THE WEEDS ###" 6960 LET D(X)=R(T)+INT((RND(0)*30)*10) 6995 RETURN 7000 REM-=-=-=-=- GOSUB FOR ENEMY NAME DISPLAY -=-=- 7050 IF T(X)=10 THEN PRINT "RECON CAR";: RETURN 7060 IF T(X)=11 THEN PRINT "ARMORED CAR";: RETURN 7070 IF T(X)=12 THEN PRINT "MOBILE ARTILLERY";: RETURN 7080 IF T(X)=13 THEN PRINT "ROCKET TRUCK";: RETURN 7090 IF T(X)=14 THEN PRINT "MOBILE HOWITZER";: RETURN 7100 IF T(X)=15 THEN PRINT "BIG ASSAULT GUN";: RETURN 7110 IF T(X)=16 THEN PRINT "FLAKPANZER";: RETURN 7120 IF T(X)=17 THEN PRINT "HETZER ASSAULT GUN";: RETURN 7130 IF T(X)=18 THEN PRINT "STUG-3 ASSAULT GUN";: RETURN 7140 IF T(X)=19 THEN PRINT "LYNX";: RETURN 7150 IF T(X)=20 THEN PRINT "PZKW-III";: RETURN 7160 IF T(X)=21 THEN PRINT "PZKW-IV";: RETURN 7170 IF T(X)=22 THEN PRINT "PZKW-IV(SS)";: RETURN 7180 IF T(X)=23 THEN PRINT "PANTHER";: RETURN 7190 IF T(X)=24 THEN PRINT "PANTHER(SS)";: RETURN 7200 IF T(X)=25 THEN PRINT "TIGER";: RETURN 7210 IF T(X)=26 THEN PRINT "KING TIGER";: RETURN 7220 IF T(X)=27 THEN PRINT "WAGON";: RETURN 7230 IF T(X)=28 THEN PRINT "TRUCK";: RETURN 7240 IF T(X)=29 THEN PRINT "HALF-TRACK";: RETURN 7250 IF T(X)=30 THEN PRINT "HALF-TRACK";: RETURN 7260 IF T(X)=31 THEN PRINT "ARMORED CAR";: RETURN 7290 RETURN 7500 REM---------- GOSUB TO PRINT "YOUR TANK" --------- 7510 IF T=1 THEN PRINT "SHERMAN ";: RETURN 7520 IF T=2 THEN PRINT "M-5 *STUART* ";: RETURN 7530 IF T=3 THEN PRINT "M-24 *CHAFFE* ";: RETURN 7540 IF T=4 THEN PRINT "M-10 TANK-DESTROYER ";: RETURN 7550 IF T=5 THEN PRINT "M-36 TANK-DESTROYER ";: RETURN 7560 IF T=6 THEN PRINT "SOUPED-UP SHERMAN ";: RETURN 7570 IF T=7 THEN PRINT "M4 SHERMAN "; 7580 IF T=8 THEN PRINT "M18 TANK-DESTROYER "; 7590 IF T=9 THEN PRINT "M26 *PATTON* "; 7595 RETURN 7600 IF Q=0 THEN RETURN : REM-----HIDE ENEMY UNITS---- 7620 IF Q1<=0 THEN RETURN 7630 FOR X=Q TO Q+(Q1-1) 7640 IF W(X)>0 THEN LET W(X)=1 7680 NEXT X 7690 RETURN 7700 REM-------- GOSUB TO TELL YOU TERRAIN YOUR ON --- 7705 IF L<1 THEN PRINT " *flatland*": RETURN 7710 IF L=1 THEN PRINT " Flat-Open Grass-Land.": RETURN 7720 IF L=2 THEN PRINT " Flat-Open now-useless LAND.": RETURN 7730 IF L=3 THEN PRINT " Flat High-Grassland.": RETURN 7740 IF L=4 THEN PRINT " HIDDEN IN A THICKET.": RETURN 7750 IF L=5 THEN PRINT " IN A WOODED AREA. (hidden)": RETURN 7760 IF L=6 THEN PRINT " DUG-IN ON BUSHY FLAT-LAND. (hidden)": RETURN 7770 IF L=7 THEN PRINT " CAMOFLAGED ON A HILL-TOP.": RETURN 7780 IF L=8 THEN PRINT " DUG-IN ON A HILL-TOP.": RETURN 7790 IF L=9 THEN PRINT " ON A WOODED HILL-TOP.": RETURN 7800 IF L=10 THEN PRINT " FORTIFIED ON A ROCKY SLOPE." 7890 RETURN 7900 PRINT : REM.....PRINT OUT TOTAL KILLS THIS GAME--- 7910 PRINT " YOU HAVE DESTROYED ";K1-K2;" ENEMY UNITS AND";K2 7915 PRINT "ENEMY TANKS SO FAR ON MISSION # ";M;" --TOTAL: ";K1 7920 PRINT : LET Z=0 7925 INPUT (1,100)"WANT A LIST OF YOUR KILLS ? ( Y=YES N=NO )-->",Y$ 7940 PRINT : IF Y$="N" THEN 7990 ELSE PRINT "&K&J" 7950 PRINT " + + + + + ";K1;" ENEMY UNITS DESTROYED + + + + +" 7955 PRINT 7960 FOR X=10 TO 69 7970 IF W(X)=0 THEN GOSUB 7000: LET Z=Z+P(X) 7980 IF W(X)=0 THEN PRINT TAB(30);P(X);TAB(35);"*** POINTS ***" 7985 NEXT X 7990 PRINT TAB(7);"*** ";Z;" GAME POINTS *** (";P;" TOTAL )" 7995 RETURN 9000 IF W(T)=0 THEN 9500: REM======= GAME OVER ======= 9020 PRINT : IF C=5 THEN 9400 ELSE PRINT "&K&J" 9100 PRINT TAB(20);"*** CONGRATULATIONS ***&J": LET M=M+1 9120 PRINT "*** ON THE END OF A SUCCESSFUL MISSION # ";M 9130 GOSUB 7900 9140 IF M(T)=0 THEN PRINT "YOUR DAMAGED TANK HAS BEEN FIXED." 9150 PRINT "&JDO YOU WANT ANOTHER MISSION WITH YOUR "; 9160 GOSUB 7500: PRINT : PRINT 9200 INPUT (1,100)" (TYPE IN: Y=YES N=NO ) ---=>",Y$ 9210 IF Y$="N" THEN 9400 9230 GOTO 9570 9400 LET T=INT(RND(0)*9)+1 9430 PRINT "&J *YOU* HAVE BEEN ISSUED A NEW ";: GOSUB 7500 9500 PRINT : REM------=== PLAY AGAIN ===-------- 9510 PRINT " YOU'VE DESTROYED ";K3;" ENEMY TANKS (TOTAL)" 9520 IF W(T)=0 THEN GOSUB 7900: PRINT 9530 PRINT " *** DO YOU WANT TO TRY AGAIN ? ***" 9540 PRINT : INPUT (1,100)" TYPE IN Y=YES N=NO ----=>",Y$ 9550 IF Y$="N" THEN 9900 ELSE PRINT "&K&J" 9570 RESTORE : IF W(T)=0 THEN CLEAR : GOTO 100 9590 GOTO 300 9900 END