10 REM ARTIL.ECB 100 REM ... 3 SHOOT GAMES (COMBINED) RALPH HOPKINS 11-01-79 110 REM ... LAST CHANGE 10-31-79 120 LET N$="N" 130 PRINT "&K&J&J" 140 PRINT TAB(15);"***********************" 150 PRINT TAB(15);"*** SHOOT GAMES ***" 160 PRINT TAB(15);"***********************" 170 PRINT 180 PRINT " 1 ... BARRAGE (ARTILLERY SHOOTING GAME)" 190 PRINT " 2 ... WHITESAND (ARTILLERY SHOOTING GAME)" 200 PRINT " 3 ... TANK (ARTILLERY SHOOTS TANKS)" 210 PRINT 220 PRINT "*** PICK A GAME (1-3) ---=>"; 230 INPUT (1,0)X 240 PRINT 250 PRINT "*** EACH GAME HAS DIRECTIONS FOR PLAY ***" 260 PRINT 270 LET X=INT(X) 280 IF X<1 OR X>3 THEN 130 ELSE PRINT 290 ON X GOTO 1000,2000,4000 300 REM 310 REM 1000 PRINT "$GAMES.BAS.BARRAGE---FILENAME ON VS9 SYSTEM" 1010 PRINT 1020 PRINT 1030 PRINT 1040 PRINT "THIS TIME SHARING DEMONSTRATION SIMULATES" 1050 PRINT "THE RESULTS OF FIRING AN ARTILLERY PIECE" 1060 PRINT 1070 PRINT 1080 PRINT "YOU ARE THE OFFICER-IN-CHARGE GIVING ORDERS " 1090 PRINT "TO THE GUN CREW, TELLING THEM THE DEGREES OF" 1100 PRINT "ELEVATION YOU ESTIMATE WILL PLACE THE ROUND" 1110 PRINT "ON THE TARGET. A HIT WITHIN 100 YARDS OF THE" 1120 PRINT "TARGET WILL DESTROY IT" 1130 PRINT 1140 PRINT "THE MAXIMUM RANGE OF YOUR PIECE IS 46,500 YARDS." 1150 REM ...T=DIST TO TARGET, I=DIST OF SHOT 1160 REM ...E=DIST OF OVER SHOOT (NEG), OR UNDER(POS) 1170 LET T=43000-30000*RND(0) 1180 LET S=0 1190 GOTO 1340 1200 PRINT "MINIMUM ELEVATION OF PIECE IS ONE DEGREE" 1210 GOTO 1360 1220 PRINT "MAXIMUM ELEVATION OF PIECE IS B9 DEGREES" 1230 GOTO 1360 1240 PRINT TAB(8);"OVERSHOT BY ";ABS(E);" YARDS." 1250 GOTO 1360 1260 PRINT TAB(8);"FELL SHORT BY ";ABS(E);" YARDS." 1270 GOTO 1360 1280 PRINT 1290 PRINT "*****TARGET DESTROYED*** ";S;" ROUNDS FIRED" 1300 GOTO 1490 1310 PRINT "THE FORWARD OBSERVER HAS SIGHTED MORE" 1320 PRINT "ENEMY ACTIVITY. YOUR MISSION IS TO CLOBBER THEM" 1330 GOTO 1170 1340 PRINT TAB(8);"THE DISTANCE TO TARGET IS ";INT(T);" YARDS." 1350 PRINT 1360 PRINT 1370 PRINT "ENTER ANGLE OF ELEVATION IN DEGREES ---=>"; 1380 INPUT B 1390 IF B>89 THEN 1220 1400 IF B<1 THEN 1200 1410 LET S=S+1 1420 LET B2=2*B/57.3 1430 LET I=46500*SIN(B2) 1440 LET X=T-I 1450 LET E=INT(X) 1460 IF ABS(E)<100 THEN 1280 1470 IF E<100 THEN 1260 1480 IF E>=100 THEN 1240 1490 GOTO 8000 2000 REM ...**ARTILLERY PRACTICE ** 2010 REM ...FOR 8K BASIC AND CRT 2020 REM ...BY H. DEOMONSTOY 1-6-77 2030 REM ...RUN ON SWTP6800 WITH 2040 REM ...CT-1024 CRT TERMINAL 2050 REM ...10 K REQUIRED 2060 PRINT "THIS IS A TARGET PRACTICE GAME" 2070 PRINT 2080 PRINT "INSTRUCTIONS ---=>"; 2090 GOSUB 3240 2100 IF Q$(1,1)=N$ THEN 2560 2110 REM ...INSTRUCTIONS PAGE 1 2120 PRINT 2130 PRINT "THE ELEVATION LOOKS LIKE THIS" 2140 PRINT 2150 PRINT " * *" 2160 PRINT " * *" 2170 PRINT " * *" 2180 PRINT "YOU / +" 2190 PRINT " ELEVATION TARGET" 2200 PRINT 2210 PRINT "AN ELEVATION FROM 0 TO 45 WILL" 2220 PRINT "INCREASE THE DISTANCE, BUT" 2230 PRINT "BEYOND 45 THE DISTANCE WILL GET" 2240 PRINT "SHORTER UP TO 90, WHEN IT WILL" 2250 PRINT "GO STRAIGHT UP AND BACK ON YOU" 2260 GOSUB 3200 2270 REM ...INSTRUCTIONS PAGE 2 2280 PRINT 2290 PRINT "ARTILLERY RANGE DIRECTION" 2300 PRINT 2310 PRINT " 90" 2320 PRINT " :" 2330 PRINT " :Y" 2340 PRINT " :" 2350 PRINT "180-X X 0" 2360 PRINT "-----------YOU------------" 2370 PRINT 2380 PRINT "DIRECTION CAN BE FROM 0 TO 180" 2390 PRINT "WITH 0 AT RIGHT, 180 AT LEFT," 2400 PRINT "AND 90 STRAIGHT AHEAD." 2410 PRINT "NOTE X IS MINUS FROM 90 TO 180" 2420 GOSUB 3200 2430 REM ...INSTRUCTIONS PAGE 3 2440 PRINT 2450 PRINT "YOU ARE TO FIRE AT A TARGET" 2460 PRINT "AT THE X AND Y COORDINATES" 2470 PRINT "LISTED. YOU WILL BE GIVEN THE" 2480 PRINT "DISTANCE FROM TARGET AND THE" 2490 PRINT "COORDINATES OF EACH OF 3 SHOTS" 2500 PRINT "LISTED AFTER EVERYONE IS DONE" 2510 PRINT 2520 PRINT "LIST YOUR NAMES IN ORDER, WHEN" 2530 PRINT "ASKED. G O O D L U C K !!" 2540 PRINT 2550 REM ...GET LIST OF PLAYERS 2560 PRINT "HOW MANY PLAYERS ? ---=>"; 2570 INPUT P 2580 LET Z=0 2590 PRINT 2600 FOR I=1 TO P 2610 PRINT "PLAYER ";I," NAME ---=>"; 2620 INPUT P$(I) 2630 NEXT I 2640 REM ...MEASURE TO .1 FEET 2650 LET Z=1 2660 FOR I=1 TO P 2670 REM ...CALCULATE TARGET 2680 LET X=2600*RND(0)+500 2690 LET Y=2600*RND(0)+500 2700 IF RND(0)>.5 THEN LET X=-X 2710 REM ...START PLAY-NEW PAGE 2720 PRINT 2730 PRINT P$(I);",YOUR TURN" 2740 PRINT "TARGET AT X,Y";X;",";Y 2750 FOR J=1 TO 3 2760 PRINT "(INPUT TWO NUMBERS) ---=>"; 2770 INPUT B,C 2780 REM ...KEEP SHOT ON THE RANGE 2790 IF B<=0 OR B>=90 THEN PRINT " WRONG ELEVATION." 2800 IF B<=0 OR B>=90 THEN 2760 2810 IF C<=0 OR C=>180 THEN PRINT " WRONG DIRECTION." 2820 IF C<=0 OR C=>180 THEN 2760 2830 LET A=3.14159/180 2840 LET D=ABS(9300*SIN(B*A)*COS(B*A)) 2850 LET X1=D*COS(C*A) 2860 LET Y1=D*SIN(C*A) 2870 LET D1=SQR((X-X1)*(X-X1)+(Y-Y1)*(Y-Y1)) 2880 REM ...KEEP BEST SHOT 2890 IF J=1 THEN LET D(I)=D1 2900 IF D(I)>D1 THEN LET D(I)=D1 2910 PRINT D1;" FEET AWAY";X1;",";Y1 2920 NEXT J 2930 PRINT "ENTER ANY LETTER TO CONTINUE ---=>"; 2940 INPUT Q$ 2950 NEXT I 2960 REM ...NEW PAGE-FINAL RESULTS 2970 PRINT 2980 PRINT "PLAYER","BEST SHOT" 2990 PRINT 3000 FOR I=1 TO P 3010 PRINT P$(I),D(I);" FEET." 3020 IF I=1 THEN LET W=D(I) 3030 IF W>D(I) THEN LET W=D(I) 3040 NEXT I 3050 FOR I=1 TO P 3060 IF W=D(I) THEN PRINT "***WINNER IS***";P$(I) 3070 NEXT I 3080 PRINT "ANOTHER GAME ? ---=>"; 3090 GOSUB 3240 3100 IF Q$=N$ THEN 3150 3110 PRINT "SAME PLAYERS ? ---=>"; 3120 GOSUB 3240 3130 IF Q$=N$ THEN 2560 3140 GOTO 2650 3150 PRINT "HOPE YOU LIKE THE ARTILLERY" 3160 PRINT "RANGE. PLEASE COME AGAIN" 3170 REM ...GO TO FLOATING DECIMAL 3180 LET Z=0 3190 GOTO 3300 3200 PRINT 3210 PRINT "ENTER ANY LETTER TO CONTINUE ---=>"; 3220 INPUT (1,0)Q$ 3230 RETURN 3240 INPUT (1,0)Q$ 3250 PRINT 3260 IF LEN(Q$)=0 THEN LET Q$="N" ELSE LET Q$=Q$(1,1) 3270 RETURN 3280 LET F=0 3290 RETURN 3300 GOTO 8000 4000 REM ***** LAST REVISED 6/20/77 ***** R.E.H. 4010 REM ORIG. VERSION OF 'TANK' GAME STOLEN 1-77 FROM CDC 4020 PRINT 4030 PRINT " *** TANK GAME ***" 4040 PRINT : RESTORE 4050 4050 DATA "DEGREE OF ANGLE",0,0,5,20000,15,5.7,100,50 4060 READ B$,R,Q,T,E,F,G,H,I 4070 PRINT " YOU ARE ON A HILL WITH 100 SACKS OF POWDER" 4080 PRINT " AND 50 SHELLS. TYPE IN NUMBER OF " 4090 PRINT " SACKS AND DEGREE OF ANGLE WHEN ASKED." 4100 PRINT " THERE ARE FIVE TANKS IN THE FIELD TRYING TO" 4110 PRINT " OVERTAKE THE HILL. IF YOU ARE KILLED, THEY" 4120 PRINT " WILL SUCCEED. THE OBJECT IS TO GET THE TANKS" 4130 PRINT " WITHOUT BEING KILLED AND WITH THE 50 SHELLS AND" 4140 PRINT "100 SACKS AVAILABLE." 4150 PRINT " IF YOU RUN OUT, THE HILL IS CAPTURED !!!" 4160 PRINT 4170 PRINT " ARE YOU READY TO PLAY ? (Y OR N) "; 4180 INPUT (1,0)I$ 4190 PRINT 4200 IF I$=N$ THEN 4240 4210 PRINT " WELL, WHY THE HELL DID YOU CALL THIS GAME ?" 4220 PRINT " TYPE IN -STOP- TO QUIT ANYTIME" 4230 PRINT 4240 DIM A$(30),B$(30),C$(45),D$(30),E$(30),L$(10),Z$(12) 4250 LET A$="NO SUCH ELEVATION IN MY TAPES, UNDER 360, PLEASE." 4260 PRINT " THE TANK IS ";E;" FEET AWAY." 4270 PRINT "YOU HAVE ";H;" SACKS OF POWDER AND ";I;" SHELLS LEFT." 4280 PRINT " NUMBER OF SACKS "; 4290 INPUT Z 4300 LET S=INT((Z*100*RND(0))/25) 4310 IF Z<>2 THEN 4340 4320 LET Z$="AGAINST YOU" 4330 GOTO 4350 4340 LET Z$="WITH YOU" 4350 PRINT " WIND AT ";S;" MILES PER HOUR ";Z$ 4360 LET H=H-Z 4370 IF H>0 THEN 4400 4380 PRINT " YOU ARE OUT OF POWDER !" 4390 PRINT " **** TANK CAPTURES HILL !!! ***" 4400 IF H<=0 THEN 5250 4410 PRINT " DEGREE OF ELEVATION "; 4420 INPUT Y 4430 IF Y<361 THEN 4460 4440 PRINT A$ 4450 IF Y>360 THEN 4410 4460 IF Y<>90 THEN 4490 4470 PRINT "YOU DUMMY, YOU BLEW YOUR SELF UP !!!" 4480 PRINT " + + + Y O U A R E D E A D + + +" 4490 IF Y=90 THEN 5250 4500 LET X=Z*35 4510 LET W=Y*3.14159/180 4520 LET I=I-1 4530 IF I>0 THEN 4560 4540 PRINT " YOU ARE OUT OF SHELLS !" 4550 PRINT " *** TANK CAPTURES HILL !!! ***" 4560 IF I<=0 THEN 5250 4570 IF S=0 OR Z=3 THEN 4590 4580 LET S=-S 4590 LET D=(2*X**3*SIN(2*W)*COS(.5*W)/G*4) 4600 LET D=INT(D/15-(3*S-7)) 4610 PRINT 4620 PRINT " ";D;" FEET" 4630 PRINT 4640 IF (D=>E- F) OR (D<=E+F) THEN 4740 4650 LET R=R+1 4660 IF R=5 THEN 5230 4670 PRINT " TANK NO. ";R;" IS HIT, NOW TRY FOR TANK NO. ";R+1 4680 FOR X=1 TO 4 STEP 1 4690 PRINT 4700 NEXT X 4710 GOTO 5140 4720 IF D4 THEN 4790 4780 LET P=P+15 4790 LET E=E-100*P 4800 PRINT " TANK IS ";E;" FEET AWAY." 4810 GOTO 4920 4820 GOSUB 4940 4830 IF ABS(M)<5 THEN 4850 4840 GOTO 4890 4850 LET P=INT(10*RND(0)-.5) 4860 LET P=P-45*RND(0) 4870 GOTO 4900 4880 PRINT " YOU ARE ONLY ";ABS(M);" FEET TOO ";E$ 4890 LET P=INT(10*RND(0)+.5) 4900 LET E=E-60*P 4910 PRINT "*TANK* ";E;" FEET AWAY." 4920 GOSUB 5000 4930 GOTO 4270 4940 LET M=INT(E-D) 4950 IF M>0 THEN 4980 4960 LET E$="LONG" 4970 RETURN 4980 LET E$="SHORT" 4990 GOTO 4880 5000 IF E<=100 THEN 5020 5010 RETURN 5020 LET O=INT(5*RND(0)+.4) 5030 IF O=1 OR O=3 THEN 5060 5040 IF O=2 OR O=4 OR O=5 THEN 5080 5050 GOTO 5120 5060 PRINT " TANK HAS HIT THE HILL.... YOU ARE DEAD !!!" 5070 GOTO 5250 5080 PRINT " TANK IS TOO CLOSE FOR COMFORT....." 5090 PRINT " LOSE 1 BAG OF POWDER AND 5 SHELLS." 5100 LET H=H-1 5110 LET I=I-5 5120 RETURN 5130 PRINT " NO SUCH ELEVATION IN MY TAPES, UNDER 360, PLEASE." 5140 LET Q=Q+1 5150 IF Q<1 OR Q>2 THEN 5170 5160 LET E=7512 5170 IF Q<>3 THEN 5190 5180 LET E=20665 5190 IF Q<>4 THEN 5210 5200 LET E=1000 5210 IF Q<1 OR Q>4 THEN 5310 5220 GOTO 4260 5230 PRINT " TANK NO. ";R;" IS HIT. CONGRATULATIONS ! " 5240 PRINT " YOU HAVE SAVED THE HILL FROM DEFEAT. BYE." 5250 PRINT " PLAY AGAIN ? (Y OR N) "; 5260 INPUT (1,0)I$ 5270 IF I$=N$ THEN 8000 ELSE 4070 5280 REM ========= VARIBLES USED: E, F, G, H, I, M, O, P 5290 REM ========= VARIBLES USED: Q, R, S, T, W, X, Y, Z 5300 REM ========= VARIBLES USED: A$ B$ E$ I$ Z$ 8000 PRINT 8010 PRINT " DO YOU WANT TO TRY ANOTHER GAME?" 8020 PRINT " (Y OR N) ---=>"; 8030 INPUT (1,0)Q$ 8040 IF Q$<>N$ THEN PRINT ELSE 130 8050 END