Add Artillery sample

This commit is contained in:
Joshua Bell 2022-10-23 15:23:41 -07:00
parent 734d953a3b
commit 1d8e8822db
2 changed files with 180 additions and 0 deletions

View File

@ -85,6 +85,7 @@ By <a target=_blank href="mailto:inexorabletash@gmail.com">Joshua Bell</a>
<option value="sample.chase">&nbsp; Chase (Dominik Heidler)</option> <option value="sample.chase">&nbsp; Chase (Dominik Heidler)</option>
<option value="sample.spaceattack">&nbsp; Space Attack! (Alan Ratliff)</option> <option value="sample.spaceattack">&nbsp; Space Attack! (Alan Ratliff)</option>
<option value="sample.building">&nbsp; Building (Melvin Rosario)</option> <option value="sample.building">&nbsp; Building (Melvin Rosario)</option>
<option value="sample.artillery">&nbsp; Artillery (Michael "Moose" O'Malley)</option>
<option disabled>____________________________________________</option> <option disabled>____________________________________________</option>
<option disabled>Graphics</option> <option disabled>Graphics</option>

View File

@ -0,0 +1,179 @@
5 REM ARTILLERY #01
10 TEXT : HOME : SPEED= 255: NORMAL
15 HOME : VTAB (10): INPUT "INSTRUCTIONS?";A9$
16 IF LEFT$ (A9$,1) = "N" THEN 19
17 HOME : GOTO 20
19 HOME : TEXT : GOTO 150
20 PRINT TAB( 15): PRINT : PRINT : PRINT "ARTILLERY": PRINT : PRINT : PRINT : PRINT
21 PRINT " ARTILLERY IS A SIMULATION OF AN"
30 PRINT "ARTILLERY DUEL BETWEEN TWO SETS OF GUNS"
40 PRINT "ON EITHER SIDE OF A MOUNTAIN. BY USING"
50 PRINT "THE ANGLE OF THE GUN AND THE MILLEMETER"
60 PRINT "SIZE,YOU WILL BE ABLE TO DESTROY YOUR"
70 PRINT "OPPONANT. EACH OF YOU IN TURN WILL TAKE"
80 PRINT "A SHOT AT YOUR OPPONANT WHILE TAKING"
90 PRINT "INTO ACCOUNT THE WIND SPEED. YOU WILL"
100 PRINT "ENTER THE DEGREE MEASURE(BETWEEN"
110 PRINT "20 AND 100 DEGREES).THIS WILL BE
120 PRINT "FOLLOWED BY THE MILLIMETER SIZE(45 TO"
130 PRINT "150 MM)"
131 PRINT
132 PRINT " -HIT RETURN TO CONTINUE-"
140 GET LOST$
150 HGR
160 HCOLOR= 6
170 G(1) = RND (1) * 117 + 8
180 G(2) = RND (1) * 117 + 125
190 IF G(2) - G(1) < 140 THEN 170
200 W1 = INT ( RND (1) * 41)
210 W2 = INT ( RND (1) + .5) - 1
220 IF W2 < 0 THEN 240
230 W2 = 1
240 HPLOT G(2) + 8,149 TO G(2),145
250 X = 1
260 HPLOT G(X) - 8,149 TO G(X),145
270 HPLOT G(2) + 8,150 TO G(2),146
280 HPLOT G(X) - 8,150 TO G(X),146
290 HPLOT G(2) + 4,145 TO G(2) - 3,137
300 HPLOT G(X) - 4,145 TO G(X) + 3,137
310 HPLOT G(2) + 5,144 TO G(2) - 7,136
320 HPLOT G(X) - 5,144 TO G(X) + 7,136
330 HPLOT G(2) + 2,135 TO G(2) - 2,150
340 HPLOT G(X) - 2,135 TO G(X) + 2,150
350 P1 = W2
360 GOSUB 1440
370 GOSUB 1630
380 FOR X8 = 1 TO 20
390 P2 = 0
400 P1 = P1 * ( - 1)
410 GOSUB 1290
420 PRINT : PRINT : PRINT : GOSUB 1580
430 PRINT "ENTER DEGREE (20-100) & MM SIZE (45-150) TO DESTROY THE OPPOSING CANNON"
440 INPUT A1,V1
441 IF A1 > 100 OR A1 < 20 THEN 445
442 IF V1 > 150 OR V1 < 45 THEN 445
443 GOTO 450
445 PRINT "": INVERSE : PRINT "ILLEGAL QUANTITY-TRY AGAIN": NORMAL : GOTO 430
450 A1 = A1 * 3.1415926 / 180
460 X1 = COS (A1) * V1
470 Y1 = SIN (A1) * V1
480 T1 = Y1 / 16
490 T2 = T1 / 24
500 W3 = W1 * T2 * P1
510 W5 = 0
520 FOR Y8 = 0 TO T1 STEP T2
530 W5 = W5 + W3
540 X = X1 * Y8
550 X = X + (W5 * W2)
560 X = INT (X + .5)
570 Y = Y1 * Y8 - 16 * Y8 ^ 2
580 Y = INT (Y + .5)
590 IF Y < 9 THEN 750
600 IF P1 < 0 THEN 680
610 G4 = G(1) + X
620 IF G4 < 1 OR G4 > 254 THEN 670
630 IF Y > 149 THEN 670
640 HCOLOR= 5
650 HPLOT X2,Y2 TO G4,150 - Y
660 X2 = G4:Y2 = 150 - Y
670 GOTO 750
680 G4 = G(2) - X
690 IF G4 < 0 OR G4 > 254 THEN 750
700 IF Y > 149 THEN 750
710 HCOLOR= 3
720 HPLOT X2,Y2 TO G4,150 - Y
730 X2 = G4:Y2 = 150 - Y
740 IF Y8 = 0 THEN 770
750 GOSUB 1060
760 IF P2 = 5 THEN 800
770 NEXT Y8
780 Y6 = 150
790 GOSUB 1160
800 IF G4 > G(1) + 5 OR G4 < G(1) - 5 THEN 850
810 PRINT : PRINT : PRINT
820 PRINT "GOOD WORK! RIGHT GUN SURVIVES."
830 T3 = T3 + 1
840 GOTO 930
850 IF G4 > G(2) + 5 OR G4 < G(2) - 5 THEN 900
860 PRINT : PRINT : PRINT
870 PRINT "NICE SHOOTING! LEFT GUN SURVIVES."
880 T4 = T4 + 1
890 GOTO 930
900 P2 = 0
910 G4 = 0
920 NEXT X8
930 PRINT : PRINT "DO YOU WANT TO PLAY AGAIN";
940 INPUT A$
950 IF A$ = "Y" THEN 150
951 IF A$ = "YES" THEN 150
960 HGR
970 TEXT
980 HOME
990 PRINT "SCORE"
1000 PRINT "-----"
1010 PRINT "LEFT ";T4
1020 PRINT "RIGHT ";T3
1045 D9$ = "CHR$(13)": PRINT D$
1050 END
1060 Y6 = 150
1070 G8 = Y7 + 2 * G3
1080 Y7 = G(1) + G2
1090 IF Y > G3 THEN 1280
1100 IF G4 < Y7 + Y THEN 1280
1110 IF G4 > G8 - Y THEN 1280
1120 P2 = 5
1130 P2 = 5
1140 Y6 = 150 - Y
1150 Y6 = 150 - Y
1160 FOR Z = 1 TO 5
1170 IF G4 < 0 OR G4 > 253 THEN 1240
1180 HPLOT G4,Y6 - Z
1190 HPLOT G4 + Z,Y6 - Z
1200 HPLOT G4 - Z,Y6 - Z
1210 HPLOT G4 + Z,Y6 - 1
1220 HPLOT G4 - Z,Y6 - 1
1230 X5 = PEEK ( - 16336)
1240 NEXT Z
1250 Y = 0
1260 X = 0
1270 GOSUB 1630
1280 RETURN
1290 IF P1 < 0 THEN 1360
1300 HPLOT 1,152 TO 4,152
1310 HPLOT 1,153 TO 4,153
1320 HPLOT 1,154 TO 4,154
1330 HPLOT 1,155 TO 4,155
1340 IF P1 < 0 THEN 1420
1350 HCOLOR= 0
1360 HPLOT 250,152 TO 254,152
1370 HPLOT 250,153 TO 254,153
1380 HPLOT 250,154 TO 254,154
1390 HPLOT 250,155 TO 254,155
1400 HCOLOR= 0
1410 IF P1 < 0 THEN 1300
1420 HCOLOR= 2
1430 RETURN
1440 G1 = (G(2) - G(1)) / 2
1450 G2 = RND (1) * (G1 - 1) + 1
1460 G3 = RND (1) * G1 / 2 + 10
1470 IF G3 < 30 THEN 1460
1480 IF G(2) - (G(1) + G2) > 2 * G3 THEN 1510
1490 G3 = G3 - 1
1500 GOTO 1480
1510 FOR M1 = 1 TO 252
1520 HCOLOR= 1
1530 HPLOT M1,150
1540 NEXT M1
1550 HPLOT G(1) + G2,150 TO G(1) + G2 + G3,150 - G3
1560 HPLOT G(1) + G2 + 2 * G3,150 TO G(1) + G2 + G3,150 - G3
1570 RETURN
1580 IF W2 < 0 THEN 1610
1590 PRINT "THE WIND IS TO THE RIGHT AT ";W1
1600 GOTO 1620
1610 PRINT "THE WIND IS TO THE LEFT AT ";W1
1620 RETURN
1630 IF P1 < 0 THEN 1660
1640 X2 = G(2):Y2 = 150
1650 GOTO 1670
1660 X2 = G(1):Y2 = 150
1670 RETURN