100 T=INT(RND(1)*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 : PRINT TAB(15);"*+*+*+*+*+*+*+*+*+*" 240 PRINT TAB(15);"@$@ @$@" 250 PRINT TAB(15);"*+* T A N K S *+*" 260 PRINT TAB(15);"@$@ @$@" 270 PRINT TAB(15);"*+*+*+*+*+*+*+*+*+*": PRINT 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 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): W(X)=4 420 NEXT 450 L=INT(RND(0)*10)+1: PRINT 510 PRINT " DO YOU NEED INSTRUCTIONS ?": PRINT 550 INPUT " TYPE IN A NUMBER: 1=YES 0=NO ---=>"Y 560 PRINT : IF Y=0 THEN 1000 600 PRINT " ======== INSTRUCTIONS ========" 620 PRINT : 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.": PRINT 660 PRINT : 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." 720 PRINT : INPUT " TYPE ANY NUMBER TO SEE MORE ---=> "Y 740 PRINT : PRINT " *POINTS* ARE GIVEN FOR EACH *KILL* AND A" 750 PRINT " *LOG* IS KEPT OF TOTAL 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.": PRINT 790 PRINT " MOVE RATE OF YOUR ";: GOSUB 7500: PRINT " " 800 PRINT " TANK IS UP TO ";M(T);" YARDS.": PRINT 820 PRINT "*** NOTE ***... FIREPOWER DOUBLES AT LESS THAN 1/2 RANGE." 830 PRINT TAB(12);"... YOU *CAN* RUN OVER TRUCKS." 840 PRINT : INPUT " TYPE ANY NUMBER TO SEE MORE ---=> "Y 850 PRINT : 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 IN THE 2,3, OR 4 DIRECTION": PRINT 995 RETURN 1000 REM *=*=*=*=* S T A R T *=*=*=*=* 1020 PRINT : PRINT " ANY NEGATIVE NUMBER WILL PRINT A SUMMARY" 1030 PRINT " OF ALL THE AVAILABLE COMMANDS FOR THIS GAME." 1100 PRINT : REM ====== VARIBLES USED ======= 1110 REM A( ) = TANK ARMOR 1130 REM C = COMMAND CHOSEN C( )=CANNON SIZE OF TANKS 1140 REM D = MOVE DIRECTION D1=YDS. MOVED 1145 REM D( ) = "DISTANCE" BETWEEN *YOU* AND EACH UNIT. 1150 REM E = WHICH TANK YOU'RE SHOOTING AT 1160 REM F( ) = FIREPOWER RATINGS 1180 REM H = HIT NUMBERS DETERMINE CHANCE OF A KILL 1200 REM J( ) = "CLASS" OF UNIT: 1=TANK 2=HOWTZR 3=INFNT 4=TRANS 1210 REM K = TOTAL KILLS ON ALL MISSIONS K2=TANKS TODAY 1215 REM K1 = TOTAL KILLS TODAY K3 = TOTAL TANKS 1220 REM L = TERRAIN TYPE 1230 REM M = COMBAT MISSION NUMBER M( )=MOVE RATE: EACH UNIT 1240 REM N = HOW MANY ENEMY UNITS ARE VISIBLE 1260 REM P = TOTAL "POINTS" SCORED P( )=UNIT POINT VALUES 1270 REM Q = TARGET STARTING NUMBER Q1=TARG END NO. 1280 REM R( ) = TANK SHOOTING RANGES 1290 REM S( ) = SHELLS EACH UNIT CARRIES 1300 REM T = YOUR TANK T( ) = TANK TYPE NUMBER (10 TO 30) 1320 REM W( ) = "STATUS" OF EACH ENEMY UNIT 0=DEAD 1=HIDDEN 1322 REM 2=STUNNED 3=DAMAGED & CAN'T MOVE 4=SHOOTING 1323 REM 5=HALTED & IDLE 6=OK & MOVING 7=RETREATING 1327 REM W(T) = YOUR STATUS: 0=YOUR DEAD 1=YOUR HIDDEN 1328 REM 2=YOUR STUNNED & VISIBLE 3=YOUR DAMAGED/CAN'T MOVE 1329 REM 4=YOUR OK & VISIBLE 1330 REM X'S AND Z'S ARE "SCRATCH" OR "WORKING" NUMBERS 1370 REM H( ), V( ) = EACH TANK'S LAST SHOT AT *YOU* 1380 REM X( ), Y( ) = *YOUR* *SHOT* AT EACH ENEMY UNIT 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 1500 Z=INT(RND(0)*25)+5: REM === MIX UP TYPE #'S === 1520 FOR X=10 TO Z+10 1530 Z1=INT(RND(0)*59)+10 1540 Z2=INT(RND(1)*59)+10: T(Z1)=T(Z2) 1560 NEXT 1570 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 S(X)=INT(RND(0)*30)+(5) 1610 IF T(X)<>Z THEN 1620 1615 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 A(X)=3: C(X)=20: F(X)=2: M(X)=160 1625 IF T(X)=10 THEN P(X)=5: R(X)=200: J(X)=2: GOTO 1890 1630 IF T(X)=11 THEN A(X)=3: C(X)=50: F(X)=6: M(X)=140 1635 IF T(X)=11 THEN P(X)=10: R(X)=600: J(X)=1: GOTO 1890 1640 IF T(X)=12 THEN A(X)=5: C(X)=105: F(X)=40: M(X)=80 1645 IF T(X)=12 THEN P(X)=150: R(X)=3000: J(X)=2: GOTO 1890 1650 IF T(X)=13 THEN A(X)=4: C(X)=150: F(X)=50: M(X)=100 1655 IF T(X)=13 THEN P(X)=100: R(X)=1100: J(X)=2: GOTO 1890 1660 IF T(X)=14 THEN A(X)=6: C(X)=150: F(X)=60: M(X)=80 1665 IF T(X)=14 THEN P(X)=150: R(X)=2400: J(X)=2: GOTO 1890 1670 IF T(X)=15 THEN A(X)=5: C(X)=150: F(X)=11: M(X)=60 1675 IF T(X)=15 THEN P(X)=45: R(X)=1200: J(X)=2: GOTO 1890 1680 IF T(X)=16 THEN A(X)=6: C(X)=20: F(X)=12: M(X)=100 1685 IF T(X)=16 THEN P(X)=25: R(X)=900: J(X)=2: GOTO 1890 1690 IF T(X)=17 THEN A(X)=12: C(X)=75: F(X)=12: M(X)=60 1695 IF T(X)=17 THEN P(X)=35: R(X)=800: J(X)=1: GOTO 1890 1700 IF T(X)=18 THEN A(X)=12: C(X)=75: F(X)=12: M(X)=80 1705 IF T(X)=18 THEN P(X)=40: R(X)=800: J(X)=1: GOTO 1890 1710 IF T(X)=19 THEN A(X)=6: C(X)=20: F(X)=2: M(X)=100 1715 IF T(X)=19 THEN P(X)=10: R(X)=400: J(X)=1: GOTO 1890 1720 IF T(X)=20 THEN A(X)=7: C(X)=50: F(X)=8: M(X)=90 1725 IF T(X)=20 THEN P(X)=15: R(X)=600: J(X)=1: GOTO 1890 1730 IF T(X)=21 THEN A(X)=7: C(X)=75: F(X)=11: M(X)=80 1735 IF T(X)=21 THEN P(X)=25: R(X)=800: J(X)=1: GOTO 1890 1740 IF T(X)=22 THEN A(X)=8: C(X)=75: F(X)=14: M(X)=80 1745 IF T(X)=22 THEN P(X)=35: R(X)=900: J(X)=1: GOTO 1890 1750 IF T(X)=23 THEN A(X)=11: C(X)=75: F(X)=13: M(X)=100 1755 IF T(X)=23 THEN P(X)=65: R(X)=1100: J(X)=1: GOTO 1890 1760 IF T(X)=24 THEN A(X)=12: C(X)=75: F(X)=16: M(X)=100 1765 IF T(X)=24 THEN P(X)=80: R(X)=1200: J(X)=1: GOTO 1890 1770 IF T(X)=25 THEN A(X)=12: C(X)=88: F(X)=15: M(X)=80 1775 IF T(X)=25 THEN P(X)=75: R(X)=1200: J(X)=1: GOTO 1890 1780 IF T(X)=26 THEN A(X)=16: C(X)=88: F(X)=20: M(X)=60 1785 IF T(X)=26 THEN P(X)=125: R(X)=1200: J(X)=1: GOTO 1890 1790 IF T(X)=27 THEN A(X)=1: C(X)=0: F(X)=1: M(X)=30: S(X)=0 1795 IF T(X)=27 THEN P(X)=1: R(X)=0: J(X)=4: GOTO 1890 1800 IF T(X)=28 THEN A(X)=1: C(X)=0: F(X)=1: M(X)=120: S(X)=0 1805 IF T(X)=28 THEN P(X)=3: R(X)=0: J(X)=4: GOTO 1890 1810 IF T(X)=29 THEN A(X)=4: C(X)=10: F(X)=2: M(X)=100 1815 IF T(X)=29 THEN P(X)=5: R(X)=100: J(X)=3: GOTO 1890 1820 IF T(X)=30 THEN A(X)=4: C(X)=20: F(X)=2: M(X)=90 1825 IF T(X)=30 THEN P(X)=10: R(X)=400: J(X)=3: GOTO 1890 1850 A(X)=3: C(X)=75: F(X)=13: M(X)=140 1860 P(X)=20: R(X)=1300: J(X)=1 1890 NEXT 2000 PRINT : PRINT " YOUR PRESENT POSITION (TERRAIN-WISE) IS" 2020 GOSUB 7700 2200 FOR X=10 TO 69 2210 IF C(T)=37 THEN P(X)=INT(P(X)*2) 2240 D(X)=INT(RND(1)*(R(T)/100))*100-INT(R(T)/10) 2250 D(X)=D(X)+(R(T)-150): W(X)=6 2260 H(X)=INT((RND(0)*10)*10): V(X)=INT(D(X)/2) 2270 Y(X)=D(X)-INT((RND(0)*10)*10) 2275 IF Y(X)>R(T) THEN Y(X)=INT(R(T)-(R(T)/10)) 2280 X(X)=INT((RND(0)*10)*10)-50 2290 NEXT 3000 IF RND(0)>.65 THEN 3100: REM === PICK NEW TARGETS === 3020 IF N>0 THEN 3100 3030 Q=INT(RND(0)*54)+10: Q1=INT(RND(0)*5.4)+1 3040 IF RND(0)>.3 THEN 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 W(X)=6: N=N+1 3090 NEXT 3100 IF N=0 THEN 3200: REM === GET GERMAN STATUS 3110 PRINT : PRINT "+ + + + + + + GERMANS "; 3115 IF C=3 THEN IF N>1 THEN SET S=50 3120 PRINT "MOVING";: SET S=0 3125 PRINT " + + + + + + +": PRINT 3130 FOR X=Q TO Q+(Q1-1) 3135 IF W(X)<3 THEN 3195 3140 Z=INT(RND(0)*60)-30 3150 IF R(X)=>ABS(D(X)+Z) THEN W(X)=4 3155 IF R(X).7 THEN W(X)=5 3165 IF ABS(D(X)).5 THEN W(X)=6 3180 IF RND(0)>.9 THEN W(X)=5 3185 IF J(X)>2 THEN IF D(X).5 THEN W(X)=7 3190 IF J(X)<4 THEN IF S(X)<=INT(RND(0)*3.2) THEN W(X)=7 3195 NEXT 3200 IF Q=0 THEN 4000: REM ====GERMANS MOVE OR SHOOT ==== 3210 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 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 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 Z1=D(X)-V(X): REM ---- CALC. +GERMAN+ HIT ---- 3420 Z3=INT(RND(0)*Z1): Z4=INT(RND(0)*H(X)) 3430 V(X)=INT(V(X)+(Z3)): H(X)=INT(H(X)-(Z4)) 3440 Z1=INT(D(X)-V(X)): Z2=INT(H(X)) 3450 H=F(X)/A(T): S(X)=S(X)-1 3460 IF M(T)=0 THEN H=H+H 3470 IF J(X)=1 THEN IF ABS(D(X))<=R(X)/2 THEN H=H*2 3480 IF J(X)=2 THEN IF ABS(D(X))>R(X)/10 THEN H=H/2 3490 IF J(X)=3 THEN IF ABS(D(X))<50 THEN H=H+1 3500 REM ........TERRAIN ADJ. FOR HIT CALC. 3510 IF L>3 THEN IF L<7 THEN H=H-(RND(1)*(.1*L)) 3520 IF L=>7 THEN H=H/2 3530 IF L=10 THEN H=H-1 3595 RETURN 3600 H=INT(H): REM --- PRINT +GERMAN+ *MISS* RESULTS --- 3620 IF V(X)>R(X) THEN H=0 3630 IF ABS(Z1)>15 THEN H=0 3640 IF ABS(Z2)>10 THEN 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 W=W(T): GOSUB 6600: PRINT " *YOU* ARE..."; 3750 IF Z2=2 THEN W(T)=2 3760 IF Z2=2 THEN IF RND(0)>.9 THEN W(T)=3: M(T)=0 3770 IF Z2=0 THEN W(T)=0: PRINT " *** YOUR DEAD ***": PRINT 3780 IF W(T)=2 THEN PRINT " $#! STUNNED !#$": PRINT 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 D=INT((RND(0)*2)+2.5) 3830 IF RND(0)>.95 THEN D=INT(RND(0)*9) 3840 IF W(X)=7 THEN D=7: PRINT TAB(35);"+*+ RETREATING +*+" 3850 D1=M(X)-INT(RND(0)*30): GOSUB 6000: D(X)=INT(D(X)+(V1)) 3870 H(X)=INT(H(X)+(H1/2)): V(X)=INT(V(X)+(V1/2)) 3880 Y(X)=INT(Y(X)+(V1*.7)): D(X)=INT(D(X)/10)*10 3890 IF ABS(D(X)).67 THEN W(X)=4 3940 IF Z2>.91 THEN 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: 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 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 " NEXT COMMAND ? (0 TO 8) ---=>"C 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 4200 PRINT "*+*+*+* C O M M A N D S U M M A R Y *+*+*+*": PRINT 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.": GOTO 4000 4400 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 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 : PRINT " *YOU* ARE #*# DAMAGED #*# --- AND CAN'T MOVE!" 4590 GOTO 4000 5000 IF M(T)=0 THEN 4500: REM ===== CMD 0 --- MOVE ===== 5010 INPUT " DIRECTION TO MOVE ? (1-8)---=>"D 5030 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 " HOW MANY YARDS TO MOVE ? ---=>"D1 5060 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 L=L-1 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 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 E=Z 5340 NEXT 5350 IF N>1 THEN GOSUB 6200 5366 IF E=0 THEN 4000 5380 X=E: GOSUB 6300: GOSUB 6400: GOTO 3100 5400 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 N=0: PRINT : PRINT " WITHDRAWING FROM ";: GOSUB 7700 5480 L=INT((RND(0)*10)+1): PRINT 5490 GOSUB 7600: PRINT TAB(15);"+++ 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 : PRINT " *YOU* ARE PENNALIZED ";P(T);" *POINTS*" 5550 PRINT " FOR ABANDONNING A PERFECTLY GOOD" 5590 GOSUB 7500: 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 TAB(15);"*** ";S(T);" SHELLS LEFT ***" 5690 PRINT "===============================================" 5695 GOTO 4000 5700 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 : PRINT "*** DATA ON GERMANS ***": PRINT 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 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 " INPUT ANY NUMBER TO SEE MORE-->"Y 5790 NEXT 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 5880 PRINT TAB(9);"YOUR PRESENT SCORE: {*** ";P;" ***}" 5890 GOTO 4000 6000 REM ......GOSUB TO MOVE IN EACH DIRECTION...... 6005 IF D=0 THEN H1=0: V1=0: RETURN 6010 IF D=1 THEN H1=D1: V1=INT(D1*.2): RETURN 6020 IF D=2 THEN H1=INT(D1*(.8)): V1=INT(D1*(.8))*(-1): RETURN 6030 IF D=3 THEN H1=0: V1=D1*(-1): RETURN 6040 IF D=4 THEN H1=INT(D1*(.8))*(-1): V1=INT(D1*(.8))*(-1): RETURN 6050 IF D=5 THEN H1=D1*(-1): V1=INT(D1*.2): RETURN 6060 IF D=6 THEN H1=INT(D1*(.8))*(-1): V1=INT(D1*(.8)): RETURN 6070 IF D=7 THEN H1=0: V1=D1: RETURN 6080 IF D=8 THEN 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 D(X)=INT(D(X)+(V1)) 6160 H(X)=INT(H(X)+(H1/2)): V(X)=INT(V(X)+(V1/2)) 6170 Y(X)=INT(Y(X)+(V1*.2)): X(X)=INT(X(X)+(H1*.2)) 6175 IF W(X)=2 THEN H(X)=INT(H(X)+(H1/2)): V(X)=INT(V(X)+(V1/2)) 6180 NEXT 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 6260 PRINT : INPUT " INPUT WHICH UNIT # TO SHOOT AT --->"E 6270 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 S(T)=S(T)-1: REM .......GOSUB TO CALCULATE A "HIT"..... 6310 Z1=INT(D(E)-Y(E)): Z2=INT(X(E)) 6320 Z3=INT((RND(0)*(Z1/2))+(Z1/2)): Z4=INT((RND(0)*(Z2/2))+(Z2/2)) 6330 Y(E)=INT(Y(E)+Z3): X(E)=INT(X(E)-Z4): H=F(T)/A(E) 6335 IF ABS(D(E)).85 THEN H=H+1 6350 IF ABS(D(E))1 THEN IF ABS(D(E))>R(T)/2 THEN H=H/2 6360 H=INT(H): IF Y(E)>R(T)+10 THEN H=0 6365 IF J(E)=4 THEN W(E)=7 6366 IF J(E)=3 THEN IF RND(0)>.8 THEN W(E)=7 6367 IF J(E)<3 THEN IF F(T)>F(E) THEN IF RND(0)>.9 THEN W(E)=7 6370 IF Y(E)>R(T)+10 THEN Y(E)=R(T)-INT(RND(0)*25) 6380 IF ABS(Z1)>15 THEN H=0 6390 IF ABS(Z2)>10 THEN H=0 6395 RETURN 6400 PRINT : REM -----GOSUB TO PRINT RESULT OF YOUR SHOT... 6410 IF C(T)=37 THEN PRINT TAB(15);"*** B O O M ***" 6420 IF C(T)=75 THEN PRINT TAB(15);"*#+ B A R O O O M M +#*" 6425 IF C(T)=76 THEN PRINT TAB(15);"[+] C A R R O O M M [+]" 6430 IF C(T)=>90 THEN PRINT TAB(15);"{@$ 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 : X=E: IF H>0 THEN 6500 6455 PRINT TAB(15);"* BOOM *": PRINT : 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 Y(E)=R(T): Z1=INT(ABS(D(E))-Y(E)) 6490 GOSUB 6700: W(E)=6: IF RND(0)>.2 THEN W(E)=4 6495 RETURN 6500 PRINT : REM ----- "HIT" ON ENEMY MESSAGE DISPLAY ----- 6510 PRINT TAB(20);"*+#+* B L A M *+#+*": PRINT : GOSUB 7000 6520 PRINT " *HIT*": W=W(E): GOSUB 6600: PRINT TAB(10); 6540 GOSUB 7000: IF Z2=2 THEN W(E)=2 6550 IF M(E)>0 THEN IF RND(0)>.8 THEN W(E)=3: M(E)=0 6555 IF S(T)=0 THEN IF Z2=2 THEN Z2=0 6560 IF Z2=0 THEN W(E)=0: P=P+P(E): K=K+1: K1=K1+1 6565 IF Z2=0 THEN IF J(E)=1 THEN 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 Z=INT(RND(0)*6)+1: REM ++++++ COMBAT RESULTS TABLE ++++++ 6620 Z2=5: W=W(E): IF H=0 THEN IF Z<3 THEN Z2=2: RETURN 6630 IF H=1 THEN IF Z<3 THEN IF W=2 THEN Z2=0: RETURN 6635 IF H=1 THEN IF Z<4 THEN IF W<>2 THEN Z2=2: RETURN 6640 IF H>1 THEN IF Z<2 THEN Z2=0: RETURN 6650 IF H>2 THEN IF Z<3 THEN Z2=0: RETURN 6660 IF H>3 THEN IF Z<6 THEN Z2=0: RETURN 6665 IF H>4 THEN Z2=0: RETURN 6670 IF H=2 THEN IF Z<4 THEN IF W=2 THEN Z2=0: RETURN 6675 IF H=2 THEN IF Z<6 THEN IF W<>2 THEN Z2=2: RETURN 6680 IF H=3 THEN IF Z<5 THEN IF W=2 THEN Z2=0: RETURN 6685 IF H=3 THEN IF W<>2 THEN Z2=2: RETURN 6690 IF H=4 THEN IF W=2 THEN 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 ***": Z2=0 6860 GOSUB 7000: E=X: GOSUB 6560: GOTO 6895 6880 NEXT 6895 RETURN 6900 IF Q+Q1-1<70 THEN Q1=Q1+1: REM ...BRING IN NEW ENEMY UNITS 6910 X=Q+Q1-1: IF X>71 THEN 6995 6920 IF W(X)<=0 THEN 6995 6930 W(X)=6 6940 PRINT TAB(5);"### ";: GOSUB 7000 6950 PRINT " APPEARING OUT OF THE WEEDS ###" 6960 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 W(X)=1 7680 NEXT 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 : Z=0 7925 INPUT " WANT A LIST OF YOUR KILLS ? ( 1=YES 0=NO )-->"Y 7940 PRINT : IF Y=0 THEN 7990 7950 PRINT " + + + + + ";K1;" ENEMY UNITS DESTROYED + + + + +" 7955 PRINT 7960 FOR X=10 TO 69 7970 IF W(X)=0 THEN GOSUB 7000: Z=Z+P(X) 7980 IF W(X)=0 THEN PRINT TAB(30);P(X);TAB(35);"*** POINTS ***" 7985 NEXT 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 9100 PRINT TAB(20);"*** CONGRATULATIONS ***": PRINT : 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 : PRINT "DO YOU WANT ANOTHER MISSION WITH YOUR "; 9160 GOSUB 7500: PRINT : PRINT 9200 INPUT " (TYPE IN: 1=YES 0=NO ) ---=>"Y: IF Y=0 THEN 9400 9230 GOTO 9570 9400 T=INT(RND(1)*9)+1 9430 PRINT : PRINT " *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 " TYPE IN 1=YES 0=NO ----=>"Y 9550 IF Y=0 THEN 9900 9570 RESTORE : IF W(T)=0 THEN CLEAR : GOTO 100 9590 GOTO 300 9900 END