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);"+++ P A N Z E R +++" 270 PRINT TAB(15);"+++ +++" 280 PRINT TAB(15);"+++++++++++++++++++++": PRINT 300 DATA 3,75,13,140,1300,20,30 320 DATA 6,88,20,80,2000,25,125 330 DATA 7,75,11,80,800,30,50 340 DATA 12,75,16,100,1200,40,125 350 DATA 8,75,14,80,900,40,75 360 DATA 12,88,15,60,1200,50,100 370 DATA 16,88,20,80,1200,35,150 380 DATA 18,122,22,50,1200,25,200 390 DATA 9,75,15,80,1100,75,40 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 TAB(8);"+++++ SEIG HEIL LIEUTENANT ! +++++": PRINT 610 PRINT " YOU ARE A PANZER COMMANDER IN THE BATTLE OF THE" 620 PRINT " BULGE.(DEC. 1944) YOUR ORDERS ARE TO ADVANCE AND" 630 PRINT " DESTROY AS MANY BRITISH/AMERICAN UNITS AS POSSIBLE." 640 PRINT " ...GERMANY DEPANDS ON YOUR SURVIVAL TOO!": PRINT 660 PRINT : PRINT " YOU ARE COMMANDING A GERMAN ";: GOSUB 7500 680 PRINT : PRINT " UNIT WHICH HAS A ";A(T);" ARMOUR RATING" 690 PRINT "AND HAS A ";C(T);" MM. CANNON AS MAIN ARMAMENT." 695 PRINT " IT'S RANGE IS EFFECTIVE TO ";R(T);" METERS." 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 YOUR KILLS...." 760 PRINT " UNTIL YOU ARE DESTROYED IN BATTLE.": PRINT 770 PRINT " YOU WILL BE ABLE TO MOVE AND EVADE THE" 780 PRINT " ENEMY SHOTS IF THEY ARE GETTING TOO CLOSE.": PRINT 790 PRINT " MOVE RATE OF YOUR PANZER ";: GOSUB 7500: PRINT 800 PRINT " TANK IS UP TO ";M(T);" METERS." 810 PRINT 820 PRINT "+#+ NOTE +#+... FIREPOWER DOUBLES AT LESS THAN 1/2 RANGE." 830 PRINT TAB(12);"... YOU +MAY+ RUN OVER ANY TRUCKS." 840 PRINT : INPUT " TYPE ANY NUMBER TO SEE MORE ---=> "Y 850 PRINT : GOSUB 900: GOTO 1000 900 PRINT TAB(29);"*AMERICANS*" 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 ALLIES WILL IN THE 2,3, OR 4 DIRECTION": PRINT 995 RETURN 1000 PRINT : PRINT " ANY NEGATIVE NUMBER WILL PRINT A SUMMARY" 1010 PRINT " OF ALL THE AVAILABLE COMMANDS FOR THIS GAME." 1100 PRINT : REM A( ) = TANK ARMOR === VARIBLES USED === 1130 REM C = COMMAND CHOSEN C( ) = CANNON SIZE OF EACH UNIT 1140 REM D = MOVE DIRECTION D1=METERS MOVED 1150 REM D( ) = "DISTANCE" BETWEEN #YOU# AND EACH UNIT. 1160 REM E = WHICH TANK YOU'RE SHOOTING AT 1170 REM F( ) = FIREPOWER RATINGS L=TERRAIN TYPE 1180 REM H = HIT NUMBERS DETERMINE CHANCE OF A KILL 1200 REM J( ) = CLASS OF UNIT: 1=TANK 2=HOWTZR 3=INFNT 4=TRANS 1230 REM M = COMBAT DAY NUMBER M( ) = MOVE RATE - EACH UNIT 1240 REM N = HOW MANY AMERICANS ARE VISIBLE 1260 REM P = TOTAL "POINTS" SCORED P( )=ENEMY POINT VALUES 1270 REM Q = TARGET STARTING NUMBER Q1 = TARG END NUMB. 1280 REM R( ) = SHOOTING RANGES S( )=SHELLS PER UNIT 1300 REM T = YOUR TANK TYPE T( ) = TANK TYPE NUMB.(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 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,19,16,29,20,14,15,24,20,11,13,17,13,13,21 1420 DATA 19,29,11,25,13,16,18,21,24,23,27,24,28,29,30 1430 DATA 19,27,25,11,12,22,25,26,17,17,14,13,14,22,23 1440 DATA 12,22,17,23,26,18,10,26,15,18,28,29,16,30,11 1450 FOR X=10 TO 69: READ T(X): NEXT 1500 Z=INT(RND(0)*25)+8 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(9);"+++ H E I L H I T L E R +++": PRINT 1600 FOR X=10 TO 69 1607 S(X)=INT(RND(0)*30)+(5) 1610 IF T(X)<>Z THEN 1620 1615 E=E+1: PRINT " +RECON CARS+ REPORT ...";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)=2: C(X)=10: F(X)=2: M(X)=100 1625 IF T(X)=10 THEN P(X)=5: R(X)=200: J(X)=3: GOTO 1890 1630 IF T(X)=11 THEN A(X)=3: C(X)=10: F(X)=2: M(X)=100 1635 IF T(X)=11 THEN P(X)=5: R(X)=200: J(X)=3: GOTO 1890 1640 IF T(X)=12 THEN A(X)=3: C(X)=75: F(X)=9: M(X)=90 1645 IF T(X)=12 THEN P(X)=20: R(X)=700: J(X)=3: GOTO 1890 1650 IF T(X)=13 THEN A(X)=9: C(X)=75: F(X)=11: M(X)=80 1655 IF T(X)=13 THEN P(X)=35: R(X)=800: J(X)=1: GOTO 1890 1660 IF T(X)=14 THEN A(X)=7: C(X)=75: F(X)=11: M(X)=110 1665 IF T(X)=14 THEN P(X)=30: R(X)=800: J(X)=1: GOTO 1890 1670 IF T(X)=15 THEN A(X)=12: C(X)=90: F(X)=12: M(X)=90 1675 IF T(X)=15 THEN P(X)=75: R(X)=1200: J(X)=1: GOTO 1890 1680 IF T(X)=16 THEN A(X)=10: C(X)=76: F(X)=14: M(X)=90 1685 IF T(X)=16 THEN P(X)=60: R(X)=1000: J(X)=1: GOTO 1890 1690 IF T(X)=17 THEN A(X)=7: C(X)=105: F(X)=40: M(X)=80 1695 IF T(X)=17 THEN P(X)=100: R(X)=3000: J(X)=2: GOTO 1890 1700 IF T(X)=18 THEN A(X)=2: C(X)=10: F(X)=2: M(X)=140 1705 IF T(X)=18 THEN P(X)=7: R(X)=200: J(X)=4: GOTO 1890 1710 IF T(X)=19 THEN A(X)=4: C(X)=90: F(X)=14: M(X)=120 1715 IF T(X)=19 THEN P(X)=50: R(X)=1000: J(X)=1: GOTO 1890 1720 IF T(X)=20 THEN A(X)=6: C(X)=90: F(X)=15: M(X)=90 1725 IF T(X)=20 THEN P(X)=60: R(X)=1200: J(X)=1: GOTO 1890 1730 IF T(X)=21 THEN A(X)=3: C(X)=20: F(X)=2: M(X)=150 1735 IF T(X)=21 THEN P(X)=10: R(X)=300: J(X)=3: GOTO 1890 1740 IF T(X)=22 THEN A(X)=8: C(X)=75: F(X)=9: M(X)=90 1745 IF T(X)=22 THEN P(X)=35: R(X)=800: J(X)=1: GOTO 1890 1750 IF T(X)=23 THEN A(X)=6: C(X)=76: F(X)=16: M(X)=90 1755 IF T(X)=23 THEN P(X)=65: R(X)=1000: J(X)=1: GOTO 1890 1760 IF T(X)=24 THEN A(X)=7: C(X)=105: F(X)=35: M(X)=80 1765 IF T(X)=24 THEN P(X)=100: R(X)=3200: J(X)=2: GOTO 1890 1770 IF T(X)=25 THEN A(X)=7: C(X)=75: F(X)=11: M(X)=60 1775 IF T(X)=25 THEN P(X)=30: R(X)=800: J(X)=1: GOTO 1890 1780 IF T(X)=26 THEN A(X)=9: C(X)=75: F(X)=11: M(X)=50 1785 IF T(X)=26 THEN P(X)=35: R(X)=800: J(X)=1: GOTO 1890 1790 IF T(X)=27 THEN A(X)=5: C(X)=37: F(X)=5: M(X)=110 1795 IF T(X)=27 THEN P(X)=15: R(X)=500: J(X)=1: GOTO 1890 1800 IF T(X)=28 THEN A(X)=3: C(X)=53: F(X)=3: M(X)=150 1805 IF T(X)=28 THEN P(X)=15: R(X)=500: J(X)=1: GOTO 1890 1810 IF T(X)=29 THEN A(X)=1: C(X)=5: F(X)=1: M(X)=140 1815 IF T(X)=29 THEN P(X)=3: R(X)=50: J(X)=4: GOTO 1890 1820 IF T(X)=30 THEN A(X)=9: C(X)=105: F(X)=14: M(X)=80 1825 IF T(X)=30 THEN P(X)=60: R(X)=1000: J(X)=2: GOTO 1890 1890 NEXT 2000 PRINT : PRINT " YOUR PRESENT TERRAIN POSITION IS" 2020 GOSUB 7700 2200 FOR X=10 TO 69 2210 IF C(T)=20 THEN P(X)=INT(P(X)*3) 2220 IF C(T)=50 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)-100): 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)*30)*10) 2275 IF Y(X)>R(T) THEN Y(X)=INT(R(T)-(R(T)/10)) 2280 X(X)=INT((RND(0)*14)*10)-70 2290 NEXT 3000 IF RND(0)>.6 THEN 3100 3020 IF N>0 THEN 3100 3030 Q=INT(RND(0)*53)+10: Q1=INT(RND(0)*6.4)+1 3040 IF RND(0)>.3 THEN Q1=INT(RND(0)*3.3)+1 3050 N=0: 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 3110 PRINT : PRINT "* * * * * * * AMERICANS "; 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)).6 THEN W(X)=6 3180 IF RND(0)>.9 THEN W(X)=5 3185 IF J(X)>2 THEN IF D(X).6 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 ==== ALLIES MOVE OR SHOOT ==== 3210 N=0: IF RND(0)>.9 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 = = = * ALLIES SHOOT * = = = 3310 PRINT TAB(20);"+BOOM+" 3330 GOSUB 7000: PRINT " SHOOTING FROM ";D(X);" METERS." 3390 GOSUB 3400: GOSUB 3600: RETURN 3400 Z1=D(X)-V(X): REM ---- CALC. *ALLIED* 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 3595 RETURN 3600 H=INT(H): REM --- PRINT *ALLIED* #MISS# RESULTS --- 3620 IF V(X)>R(X) THEN H=0 3630 IF ABS(Z1)>12 THEN H=0 3640 IF ABS(Z2)>8 THEN H=0 3650 IF H>0 THEN 3700: REM *** THEY HIT #YOU# 3655 IF ABS(Z1)<13 THEN IF ABS(Z2)<9 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 *ALLIED* #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)>.85 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 = = = * ALLIES 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)) 3855 V(X)=INT(V(X)+(V1/2)): H(X)=INT(H(X)+(H1/2)) 3860 IF J(X)=2 THEN IF M(X)=0 THEN H(X)=INT(H(X)+(H1/2)) 3865 D(X)=INT(D(X)/10)*10 3870 IF T<10 THEN Y(X)=INT(Y(X)+(V1*.8)) 3875 IF T=10 THEN Y(X)=INT(Y(X)+(V1*.85)+(RND(0)*M(X))) 3880 IF ABS(D(X))>R(T)+150 THEN 3890 3885 IF ABS(D(X))+150>ABS(Y(X)) THEN Y(X)=D(X)*.9 3890 IF ABS(D(X)).6 THEN W(X)=4 3940 IF Z2>.9 THEN W(X)=7 3950 IF S(X)=0 THEN 3995 3960 IF M(X)>0 THEN 3995 3970 IF Z2>.15 THEN 3995 3980 PRINT TAB(20);" ";: GOSUB 7000: S(X)=0 3990 PRINT " BEING... ### ABANDONED ###" 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 " DUST CLOUDS...WAIT AGAIN" 4070 INPUT " NEXT COMMAND ? (0 TO 9) ---=>"C 4100 PRINT : IF C=0 THEN 5000: REM *+* MOVE *+* 4105 IF C=-1 THEN PRINT "Q Q1 N ";Q;Q1;N: GOTO 4000 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 +++++++" 4210 PRINT : PRINT "COMMAND 0 - MOVE 0 TO ";M(T);" METERS." 4220 PRINT "COMMAND 1 - SCAN OF VISIBLE ALLIED UNITS." 4230 PRINT "COMMAND 2 - WAIT FOR AMERICANS 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 ALLIED UNITS" 4285 PRINT "COMMAND 8 - POINT VALUE OF ALLIED UNITS." 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 " RETREATING ";D1;" METERS. +*+" 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;" ALLIED UNITS 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 ===== 5020 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 METERS 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)>.3 THEN L=L-1 5087 IF N>0 THEN IF W(E)=7 THEN IF RND(0)>.7 THEN GOSUB 6900 5090 GOSUB 6100: IF N>0 THEN GOSUB 6800 5095 GOTO 3000 5100 IF N<1 THEN 5700: REM ==== COMMAND 1 - SCAN ==== 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 IF N<1 THEN 5700: REM ==== COMMAND 3 - SHOOT ==== 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 5430 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 MUCH NEEDED " 5590 GOSUB 7500: P=P-P(T): GOTO 9000 5600 REM ======== COMMAND 6 --- STATUS ======== 5605 GOSUB 7500: PRINT " UNIT'S STATUS IS:"; 5610 IF M(T)=0 THEN PRINT " ### DAMAGED ###" 5615 IF M(T)>0 THEN PRINT " + UN-DAMAGED +" 5620 PRINT : PRINT "+ + + PRESENT TERRAIN: ";: GOSUB 7700: PRINT 5630 PRINT "+ + + + + + + + + DAY # ";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: PRINT : REM ===== COMMAND 7 --- INFO ===== 5710 IF N<1 THEN PRINT " +*+ NO AMERICANS VISIBLE +*+": GOTO 4000 5720 PRINT "**************** DATA ON ALLIES *******************" 5730 FOR X=Q TO Q+(Q1-1) 5735 IF W(X)<2 THEN 5790 5750 GOSUB 7000: PRINT TAB(26);"MAX SHOOTING RANGE: ";R(X) 5760 PRINT "MAX MOVE RATE: ";M(X);TAB(26);"CANNON: ";C(X);" MM." 5765 PRINT "ARMOUR RATING: ";A(X);TAB(26); 5767 Z=Z+1: PRINT "FIREPOWER RATING: ";F(X) 5770 PRINT "***************************************************" 5775 IF N=3 THEN IF Z=3 THEN 4000 5776 IF N=6 THEN IF Z=6 THEN 4000 5780 IF Z=3 THEN INPUT " INPUT ANY NUMBER TO SEE MORE-->"Y 5785 IF Z=6 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 " +*+ NO ENEMY UNITS VISIBLE +*+": 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(32);P(X); 5855 PRINT TAB(37);"POINTS +*+" 5860 PRINT "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" 5870 NEXT 5880 PRINT TAB(10);"YOUR PRESENT SCORE: <+*+ ";P;" +*+>" 5890 GOTO 4000 6000 REM .......MOVEMENT DIRECTIONS 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 ........UPDATE "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*.3)): 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 ....... 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 ABS(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 ABS(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 ----- PRINT RESULTS OF YOUR SHOT. 6410 IF C(T)=75 THEN PRINT TAB(15);"+*+ B O O O M +*+" 6420 IF C(T)=88 THEN PRINT TAB(15);"@@@ K A A R O O M @@@" 6430 IF C(T)=>122 THEN PRINT TAB(15);"<+> V A R R 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;" METERS." 6710 IF Z1<-15 THEN PRINT " LONG BY ";Z1;" METERS." 6720 IF ABS(Z2)>10 THEN PRINT " OFF TO THE ";: GOTO 6740 6730 RETURN 6740 IF Z2>0 THEN PRINT "LEFT BY ";Z2;" METERS." 6750 IF Z2<0 THEN PRINT "RIGHT BY ";Z2;" METERS." 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);"+@+ CRUSH +@+" 6830 IF J(X)<4 THEN PRINT TAB(25);"+*+ CRAAASSH ! +*+" 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 6910 X=Q+Q1-1: IF X>71 THEN 6995 6920 IF W(X)<=0 THEN 6995 6930 W(X)=6 6940 PRINT " ### ";: GOSUB 7000 6950 PRINT " COMMING OUT OF THE WOODS ###" 6960 D(X)=R(T)+INT((RND(0)*50)*10) 6995 RETURN 7000 REM *=*=* ENEMY NAME DISPLAY *=*=* 7050 IF T(X)=10 THEN PRINT "BREN CARRIER";: RETURN 7060 IF T(X)=11 THEN PRINT "HALF-TRACK";: RETURN 7070 IF T(X)=12 THEN PRINT "HALF-TRACK";: RETURN 7080 IF T(X)=13 THEN PRINT "M4 SHERMAN";: RETURN 7090 IF T(X)=14 THEN PRINT "M24 *CHAFFE*";: RETURN 7100 IF T(X)=15 THEN PRINT "M26 *PATTON*";: RETURN 7110 IF T(X)=16 THEN PRINT "M4 SHERMAN";: RETURN 7120 IF T(X)=17 THEN PRINT "M7 PRIEST HOWITZER";: RETURN 7130 IF T(X)=18 THEN PRINT "DAIMLER SCOUT CAR";: RETURN 7140 IF T(X)=19 THEN PRINT "M18 TANK-DESTROYER";: RETURN 7150 IF T(X)=20 THEN PRINT "M36 TANK-DESTROYER";: RETURN 7160 IF T(X)=21 THEN PRINT "M20 RECON CAR";: RETURN 7170 IF T(X)=22 THEN PRINT "CROMWELL MK.VII";: RETURN 7180 IF T(X)=23 THEN PRINT "ACHILLES";: RETURN 7190 IF T(X)=24 THEN PRINT "SEXTON HOWITZER";: RETURN 7200 IF T(X)=25 THEN PRINT "VALENTINE MK.IV";: RETURN 7210 IF T(X)=26 THEN PRINT "CHURCHILL MK.III";: RETURN 7220 IF T(X)=27 THEN PRINT "M5 STUART";: RETURN 7230 IF T(X)=28 THEN PRINT "M8 ARMORED CAR";: RETURN 7240 IF T(X)=29 THEN PRINT "TRUCK";: RETURN 7250 IF T(X)=30 THEN PRINT "M4 SHERMAN";: RETURN 7290 RETURN 7500 REM ---------- GOSUB TO PRINT "YOUR TANK" --------- 7510 IF T=1 THEN PRINT "ARMORED CAR ";: RETURN 7520 IF T=2 THEN PRINT "NASHORN GUN ";: RETURN 7530 IF T=3 THEN PRINT "PZKW-IV ";: RETURN 7540 IF T=4 THEN PRINT "PANTHER (SS) ";: RETURN 7550 IF T=5 THEN PRINT "PZKW-IV (SS) ";: RETURN 7560 IF T=6 THEN PRINT "TIGER ";: RETURN 7570 IF T=7 THEN PRINT "KING TIGER "; 7580 IF T=8 THEN PRINT "JAG-PZ 6 "; 7590 IF T=9 THEN PRINT "JGD PZ IV. "; 7595 RETURN 7600 IF Q=0 THEN 7690: REM --- HIDE ENEMY UNITS --- 7620 IF Q1<=0 THEN 7690 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 " DIRT.": RETURN 7720 IF L=2 THEN PRINT " OPEN GRASS LAND.": RETURN 7730 IF L=3 THEN PRINT " A FLAT BRUSHY AREA.": RETURN 7740 IF L=4 THEN PRINT " HIDDEN IN A BRUSH PILE.": RETURN 7750 IF L=5 THEN PRINT " A CAMOFLAGED AREA.": RETURN 7760 IF L=6 THEN PRINT " HIDDEN IN A GULLY ": RETURN 7770 IF L=7 THEN PRINT " CAMOFLAGED ON A HILL-TOP.": RETURN 7780 IF L=8 THEN PRINT " HIDDEN ON A RIDGE.": RETURN 7790 IF L=9 THEN PRINT " A ROCKY HILL-TOP.": RETURN 7800 IF L=10 THEN PRINT " HIDDEN AMONG TREES ON A HILL." 7890 RETURN 7900 PRINT : REM .....PRINT OUT TOTAL KILLS THIS GAME--- 7910 PRINT " YOU HAVE DESTROYED ";K1-K2;" ALLIED UNITS AND";K2 7915 PRINT "ALLIED TANKS SO FAR ON DAY # ";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;" ALLIED 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;" POINTS TODAY +*+ (";P;" TOTAL)" 7991 IF M=1 THEN 7995 7992 PRINT "### YOUR TOTALS ARE: ";K3;" TANKS AND ";K-K3; 7993 PRINT " NON-ARMORED UNITS." 7995 RETURN 9000 IF W(T)=0 THEN 9500: REM ======= GAME OVER ======= 9020 PRINT : IF C=5 THEN 9400 9100 PRINT TAB(12);"+*+ WELL DONE LIEUTENENT +*+": PRINT : M=M+1 9120 PRINT "+*+ YOU HAVE SURVIVED ANOTHER DAY: # ";M 9130 GOSUB 7900 9140 IF M(T)=0 THEN PRINT "YOUR DAMAGED TANK HAS BEEN SALVAGED." 9150 PRINT : PRINT "DO YOU WANT ANOTHER MISSION WITH YOUR "; 9155 IF M(T)=0 THEN PRINT "REPAIRED "; 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 GIVEN A NEW ";: GOSUB 7500 9500 PRINT : REM -----=== PLAY AGAIN ===----- 9510 PRINT " YOU'VE DESTROYED ";K3;" ALLIED 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