mirror of
https://github.com/rfivet/BCG101.git
synced 2024-11-17 18:06:05 -05:00
89 lines
2.3 KiB
QBasic
89 lines
2.3 KiB
QBasic
100 REM ARTILLERY FIRING GAME
|
|
110 DIM A$(3)
|
|
120 RANDOMIZE
|
|
130 PRINT "DO YOU WANT INSTRUCTIONS";
|
|
140 INPUT A$
|
|
150 PRINT
|
|
160 IF A$="NO" THEN 330
|
|
170 PRINT " THIS GAME TESTS YOUR ABILITY TO HIT A MOVING TARGET."
|
|
180 PRINT "YOU MUST DESTROY IT BEFORE IT DESTROYS YOU OR MOVES OUT"
|
|
190 PRINT "OF RANGE. THE TARGET WILL MOVE RANDOMLY."
|
|
200 PRINT
|
|
210 PRINT " TYPE CTRL/C TO TERMINATE THE PROGRAM. TO THE QUESTION"
|
|
220 PRINT "'ENTER SPEED' TYPE A NUMBER BETWEEN 1 AND 100. THIS IS THE"
|
|
230 PRINT "RELATIVE SPEED OF THE TARGET WHERE 1 IS SLOWEST AND 100"
|
|
240 PRINT "IS THE FASTEST."
|
|
250 PRINT
|
|
260 PRINT "TO THE QUESTION 'ENTER DISTANCE' ENTER THE MAXIMUM DISTANCE"
|
|
270 PRINT "YOU CAN HIT FROM THE TARGET AND STILL DESTROY IT. THIS IS"
|
|
280 PRINT "THE KILL RADIUS AND 5000 IS SUGGESTED FOR STARTERS."
|
|
290 PRINT
|
|
300 PRINT "ELEVATION IS THE ELEVATION OF YOUR GUN IN DEGREES WHEN YOU"
|
|
310 PRINT "FIRE AT THE TARGET. THE MAXIMUM RANGE IS AT 45 DEGREES"
|
|
320 PRINT
|
|
330 PRINT "ENTER SPEED";
|
|
340 INPUT S
|
|
350 IF S<1 THEN 330
|
|
360 IF S>100 THEN 330
|
|
370 PRINT "ENTER DISTANCE";
|
|
380 INPUT D
|
|
390 IF D<0 THEN 370
|
|
400 IF D>10000 THEN 370
|
|
410 M=100000-75000*RND(0)
|
|
420 PRINT
|
|
430 PRINT "THE MAXIMUM RANGE OF YOUR GUN IS "M" YARDS"
|
|
440 FOR K=1 TO M/10000
|
|
450 LET K1=RND(0)
|
|
460 NEXT K
|
|
470 R=.95*M-.6*M*RND(0)
|
|
480 LET N=0
|
|
490 GOTO 520
|
|
500 IF R>M THEN 840
|
|
510 IF R<=(M/2.5) THEN 860
|
|
520 PRINT "TARGET RANGE IS"R" YARDS"
|
|
530 PRINT "ELEVATION";
|
|
540 INPUT E
|
|
550 IF E<0 THEN 840
|
|
560 IF E> 89 THEN 800
|
|
570 IF E <1 THEN 820
|
|
580 N=N+1
|
|
590 K=INT(R-M*SIN(2*E/57.3))
|
|
600 K1=ABS(K)
|
|
610 IF K1<D THEN 650
|
|
620 IF K>D THEN 720
|
|
630 IF K<-D THEN 740
|
|
640 STOP
|
|
650 PRINT "*** TARGET DESTROYED ***"
|
|
660 GOSUB 940
|
|
670 D1=K
|
|
680 FOR K=1 TO N+D/100
|
|
690 K1=RND(0)
|
|
700 NEXT K
|
|
710 GOTO 410
|
|
720 PRINT "SHORT OF TARGET BY "K1" YARDS"
|
|
730 GOTO 745
|
|
740 PRINT "OVER TARGET BY ";K1"YARDS"
|
|
745 LET C=INT(2*RND(0)+1)
|
|
746 IF C=1 THEN 750
|
|
748 LET C=-1
|
|
749 GOTO 760
|
|
750 LET C=1
|
|
760 C1=M*S/100*RND(0)
|
|
770 C1=C*C1
|
|
780 R=R+C1
|
|
790 GOTO 500
|
|
800 PRINT "MAXIMUM ELEVATION IS 89 DEGREES"
|
|
810 GOTO 530
|
|
820 PRINT "MINIMUM ELEVATION IS 1 DEGREE"
|
|
830 GOTO 530
|
|
840 PRINT "* TARGET OUT OF RANGE *"
|
|
850 GOTO 670
|
|
860 PRINT "THE TARGET HAS DESTROYED YOU!"
|
|
870 GOTO 670
|
|
940 IF N=1 THEN 970
|
|
950 PRINT N" ROUNDS EXPENDED"
|
|
960 RETURN
|
|
970 PRINT "***** DIRECT HIT *****"
|
|
980 RETURN
|
|
990 END
|