00100 '  NAME--GUNNER.BAS
00110 '
00120 '  DESCRIPTION--GENERATES GAME OF TARGET PRACTICE
00130 '
00140 '  SOURCE--KENNETH A. ASCHER, EASTERN MICHIGAN UNIVERSITY
00150 '          YPSILANTI, MICHIGAN 48197   U.S.A.
00160 '
00170 '  COPYRIGHT--1974 BY KENNETH A. ASCHER
00180 '
00190 '  WRITTEN--SEPTEMBER 5, 1968  REVISED JANUARY 11, 1974
00200 '
00210 '  INSTRUCTIONS--TYPE "RUN" AND FOLLOW INSTRUCTIONS
00220 '
00230 '
00240 '  *  *  *  *  *  *  *  *  *  MAIN PROGRAM  *  *  *  *  *  *  *  *  *
00250 '
00260 RANDOMIZE 
00270 '  "N" IS THE INITIAL DISTANCE OF THE TARGET
00280 LET N=RND*10
00290 LET M1=46500
00300 PRINT"THIS IS THE GAME OF GUNNER WRITTEN BY KENNETH A. ASCHER"
00310 PRINT"WOULD YOU LIKE TO SEE THE INSTRUCTIONS...";
00320 INPUT R$
00330 IF R$="YES" THEN 390
00340 IF R$="Y" THEN 390
00350 IF R$="NO" THEN 550
00360 IF R$="N" THEN 550
00370 PRINT"PLEASE ANSWER 'YES' OR 'NO'...TRY AGAIN...";
00380 GO TO 320
00390 PRINT
00400 PRINT"YOU ARE AN ARTILLERY OFFICER WHO GIVES FIRING ORDERS TO A GUN"
00410 PRINT"CREW, TELLING THEM THE DEGREES OF ELEVATION WHICH YOU THINK"
00420 PRINT"WILL PLACE THE PROJECTILE ON TARGET.  MAXIMUM RANGE OF YOUR"
00430 PRINT"GUN IS 46,500 METERS.  A HIT WITHIN 100 METERS OF THE TARGET"
00440 PRINT"WILL DESTROY IT, HOWEVER WIND GUSTS CAN CAUSE UP TO 200 METER"
00450 PRINT"ERRORS.....AND...YOUR TARGET WILL BE SHOOTING BACK, SO MAKE"
00460 PRINT"ALL OF YOUR SHOTS COUNT..."
00470 PRINT"BUT FIRST, PLEASE TELL ME YOUR FIRST NAME...";
00480 INPUT A$
00490 IF A$ = " " THEN 510
00500 GO TO 580
00510 PRINT"YOU INDICATE THAT YOU DO NOT HAVE A NAME. YOU ARE A VERY WEIRD"
00520 PRINT"PERSON.   PLEASE GIVE YOURSELF A NAME AND TRY AGAIN..."
00530 PRINT"NOW...WHAT IS YOUR FIRST NAME...";
00540 GO TO 480
00550 PRINT
00560 PRINT"BEFORE WE BEGIN, PLEASE TELL ME YOUR FIRST NAME...";
00570 GO TO 480
00580 LET S7=0
00590 LET Z=0
00600 LET Y=0
00610 FOR I=1 TO N
00620 LET X=RND(X)
00630 NEXT I
00640 LET N=N+1
00650 LET Q9=0
00660 PRINT
00670 PRINT"ENTER YOUR FIRING ORDERS AS REQUESTED."
00680 ' T=DISTANCE TO TARGET
00690 ' I=DISTANCE OF SHOT
00700 ' E=DISTANCE OVER (NEGATIVE), OR UNDER (POSITIVE) TARGET
00710 LET M2=30000
00720 LET T=43000-30000*RND(X)
00730 LET Y=Y+1
00740 LET S=0
00750 GO TO 1500
00760 PRINT"MINIMUM ELEVATION OF GUN IS ONE DEGREE."
00770 GO TO 790
00780 PRINT"MAXIMUM ELEVATION OF GUN IS 89 DEGREES."
00790 PRINT"YOU ARE WASTING VALUABLE SHOTS, "A$".  ARE YOU TRYING TO"
00800 PRINT"BECOME A FRAGGING CANDIDATE?  LET'S AIM THAT GUN WHERE"
00810 PRINT"IT WILL DO SOME GOOD."
00820 GO TO 2010
00830 PRINT"OVER TARGET BY";ABS(E);"METERS."
00840 GO TO 1890
00850 PRINT"SHORT OF TARGET BY";ABS(E);"METERS."
00860 GO TO 1890
00870 PRINT
00880 '  DON'T WORRY ABOUT THE CONTROL GEES IN THE NEXT LINE...
00890 PRINT"<<<<<TARGET DESTROYED>>>>>"
00900 LET X$="ROUNDS"
00910 '  THE NEXT INSTRUCTIONS TAKE CARE OF PLURALS...
00920 IF S=1 THEN 940
00930 GO TO 950
00940 LET X$="ROUND"
00950 PRINT S""X$" EXPENDED."
00960 IF S=1 THEN 980
00970 GO TO 1040
00980 PRINT
00990 PRINT"***EXCELLENT SHOT "A$". YOU KILLED THE TARGET ON THE FIRST TRY!!"
01000 PRINT"KEEP UP THE GREAT WORK!!!"
01010 PRINT
01020 PRINT"		     SINCERELY,"
01030 PRINT"		     THE PRESIDENT"
01040 LET Z=Z+1
01050 LET M2=S*5000
01060 PRINT
01070 PRINT"THE FORWARD OBSERVER HAS LOCATED A NEW TARGET."
01080 LET M1=46500
01090 LET M3=0
01100 PRINT"CAN YOU CONTINUE FIRING...";
01110 INPUT B$
01120 IF B$="YES" THEN 720
01130 IF B$="Y" THEN 720
01140 IF B$="NO" THEN 1250
01150 '  IF "NAME" IS TYPED, THEN A NEW PLAYER'S NAME MAY BE USED
01160 IF B$="N" THEN 1250
01170 IF B$="NAME"THEN 2540
01180 '  IF "I" IS TYPED, THE GAME WILL RESTART GIVING THE FIRST
01190 '  SET OF INSTRUCTIONS AGAIN
01200 IF B$="I" THEN 1240
01210 PRINT"COME ON, "A$", YOU CAN ONLY ANSWER THIS QUESTION YES OR NO."
01220 PRINT"TRY AGAIN, "A$", BUT THIS TIME BE MORE ACCURATE IN YOUR TYPING...";
01230 GO TO 1110
01240 LET Q9=2
01250 PRINT
01260 LET X$="ROUNDS"
01270 IF S7=1 THEN 1290
01280 GO TO 1300
01290 LET X$="ROUND"
01300 PRINT"YOU EXPENDED"S7""X$" TOTAL."
01310 LET Y$=X$="TARGETS"
01320 IF Y=1 THEN 1350
01330 IF Z=1 THEN 1370
01340 GO TO 1380
01350 LET Y$="TARGET"
01360 GO TO 1330
01370 LET X$="TARGET"
01380 PRINT"YOU DESTROYED"Z""X$" OUT OF"Y""Y$"."
01390 LET Z=(Z/Y)*100
01400 PRINT"YOUR EFFICIENCY RATING, "A$", IS"Z"%."
01410 IF Z=100 THEN 2590
01420 IF Z=0 THEN 2680
01430 ON INT((Z/10)+.999999)GO TO 2720,2740,2760,2800,2830,2860,2880,2900,2930,2960,2590
01440 IF Q9=1 THEN 2560
01450 IF Q9=2 THEN 2990
01460 PRINT
01470 PRINT"DISMISS YOUR CREW, ";A$;", AND WE'LL"
01480 PRINT"LET YOU BUY THE BEER AND CHECKOUT THE ACTION!!!"
01490 STOP
01500 PRINT
01510 LET Q2=Q2 + 0.1
01520 PRINT"DISTANCE TO THE TARGET IS";INT(T);"METERS."
01530 PRINT
01540 PRINT"ELEVATION ";
01550 INPUT B
01560 IF B>180 THEN 1850
01570 IF B<0 THEN 1850
01580 LET S=S+1
01590 LET S7=S7 + 1
01600 IF B=90 THEN 1730
01610 IF B>89 THEN 780
01620 IF B=0 THEN 2500
01630 IF B<1 THEN 760
01640 LET B2=2*B/57.3
01650 LET I=46500*SIN(B2)
01660 LET X=T-I
01670 LET N=RND(-N)*400-200
01680 LET E=INT(X)
01690 LET E=E+INT(N)
01700 IF E>100 THEN 850
01710 IF E<-100 THEN 830
01720 GO TO 870
01730 PRINT A$",";
01740 PRINT" YOU SHOT STRAIGHT UP......"
01750 PRINT"THE PROJECTILE WENT STRAIGHT UP....."
01760 PRINT"THE PROJECTILE CAME STRAIGHT DOWN....."
01770 PRINT"YOU JUST BLEW YOUR HEAD OFF, YOU STUPID IDIOT..."
01780 PRINT
01790 PRINT"TOO BAD....."
01800 PRINT"WE WILL MAKE YOU ALIVE AGAIN, BUT THIS TIME,"
01810 PRINT"DON'T BLOW YOURSELF UP!!!"
01820 PRINT"IF YOUR WOUNDS ARE NOT TOO GREAT, ";A$;", AND"
01830 PRINT"YOU WANT TO PLAY AGAIN, TYPE IN 'YES'"
01840 GO TO 1110
01850 PRINT"THAT'S IMPOSSIBLE, YOU NITWIT."
01860 PRINT"KEEP IT UP, "A$", AND YOU'LL END UP AS A PRIVATE."
01870 PRINT"LET'S TRY AGAIN, "A$", BUT THIS TIME USE YOUR HEAD."
01880 GO TO 1540
01890 IF ABS(E)<1000 THEN 2010
01900 IF M1-ABS(E)>0 THEN 2010
01910 PRINT A$", YOU CAME CLOSER LAST TIME...ARE YOU TRYING TO GET"
01920 IF M3=1 THEN 1950
01930 PRINT"A PURPLE HEART?"
01940 GO TO 2000
01950 PRINT"KILLED?"
01960 PRINT"...OR MAYBE YOU WANT YOUR CREW TO QUESTION THE"
01970 PRINT"MARITAL STATUS OF YOUR PARENTS"
01980 LET M3=0
01990 GO TO 2010
02000 LET M3=1
02010 LET M5=RND(X)
02020 LET M1=ABS(INT(E))
02030 LET X=-T/1000
02040 IF M5<.05 THEN 2010
02050 IF M5>.45 THEN 2010
02060 LET M2=INT(M2*M5)
02070 IF M2<=100 THEN 2120
02080 PRINT A$", THE TARGET RETURNED FIRE AND...MISSED YOU BY";M2;"METERS."
02090 IF M2<350 THEN 2440
02100 IF S<3 THEN 1530
02110 ON INT(10*RND(X)+1) GO TO 2200,2220,2240,2260,2300,2320,2340,2360,2380,2400,2420
02120 PRINT A$", THE TARGET RETURNED FIRE AND...STRUCK!!!"
02130 PRINT"BACK TO O.C.S."
02140 PRINT
02150 PRINT
02160 PRINT"YOU NOW HAVE A NEW CREW... BE MORE CAREFUL THIS TIME."
02170 PRINT
02180 LET M2=ABS((9-S)*10000)
02190 GO TO 1070
02200 PRINT"ARE YOU TRYING TO GET KILLED? WATCH IT..."
02210 GO TO 1530
02220 PRINT"THAT WAS CLOSE, TRY AGAIN..."
02230 GO TO 1530
02240 PRINT"WHAT A BREAK.  MISSED..."
02250 GO TO 1530
02260 PRINT"WHEW...";
02270 GO TO 1530
02280 PRINT"GULP...  THAT'S TOO CLOSE FOR COMFORT."
02290 GO TO 1530
02300 PRINT"YOU HAD BETTER MAKE THIS ONE COUNT...OR ELSE..."
02310 GO TO 1530
02320 PRINT"AW, COME ON..."
02330 GO TO 1530
02340 PRINT"AHEMMM..."
02350 GO TO 1530
02360 PRINT"LOOK OUT... NOW YOU'RE IN TROUBLE..."
02370 GO TO 1530
02380 PRINT"BETTER DUCK...TRY AGAIN BUT BE MORE CAREFUL..."
02390 GO TO 1530
02400 PRINT"WANT TO BET ON THE NEXT ONE????"
02410 GO TO 1530
02420 PRINT"NOW HE HAS THE RANGE... LOOK OUT FOR THE NEXT ONE..."
02430 GO TO 1530
02440 IF M2<200 THEN 2480
02450 PRINT"YOU SUSTAINED MINOR INJURIES THAT TIME."
02460 PRINT"BETTER GET HIM."
02470 GO TO 1530
02480 PRINT"YOU SUSTAINED MAJOR INJURIES THAT TIME."
02490 GO TO 2460
02500 PRINT
02510 PRINTA$;", ARE YOU TRYING TO DIG A CANAL??"
02520 PRINT"GET THAT GUN UP WHERE IT WILL DO SOME GOOD."
02530 GO TO 2010
02540 LET Q9=1
02550 GO TO 1250
02560 PRINT
02570 PRINT"WHAT IS YOUR FIRST NAME";
02580 GO TO 480
02590 PRINT"YOU'RE ONE HELL OF A SHOT, "A$".  YOU HIT EVERY TARGET."
02600 PRINT"***CONGRAGULATIONS --- NOW JOIN THE RIOT SQUAD OF YOUR LOCAL POLICE***"
02610 GO TO 1440
02620 PRINT"YOU CHEATER...HOW CAN YOU DESTROY MORE TARGETS THAN"
02630 PRINT"WERE AVAILABLE???????"
02640 GO TO 1440
02650 PRINT"THIS MUST BE A COMPUTER ERROR SINCE YOU CAN'T GET LESS"
02660 PRINT"THAN ZERO PERCENT!!!!!"
02670 GO TO 1440
02680 PRINT"DO YOU REALIZE JUST HOW BAD OF A SHOT YOU ARE?"
02690 PRINT"YOUR SHOOTING STINKS!!!!!  YOU DIDN'T EVEN HIT ONE"
02700 PRINT"SINGLE TARGET.  PATHETIC, "A$".  JUST PATHETIC."
02710 GO TO 1440
02720 PRINT"ONE OF THE POOREST EXHIBITIONS OF SHOOTING I HAVE EVER SEEN."
02730 GO TO 1440
02740 PRINT"EXTREMELY POOR.  I WISH YOU WERE ON THEIR SIDE."
02750 GO TO 1440
02760 PRINT"YOU ARE WAY BELOW AVERAGE, "A$", AND YOU NEED HELP IN"
02770 PRINT"LEARNING WHICH END OF THE GUN TO SHOOT.  BY THE WAY, WHEN DID"
02780 PRINT"YOU LAST HAVE YOUR EYSIGHT CHECKED?"
02790 GO TO 1440
02800 PRINT A$", YOU ARE BELOW AVERAGE.  YOU NEED ONE HELL OF ALOT OF"
02810 PRINT"PRACTICE TO BEAT THE LONE RANGER!!!"
02820 GO TO 1440
02830 PRINT"ONLY AVERAGE...YOU WILL NEED MUCH MORE PRACTICE IF YOU"
02840 PRINT"EVER WANT TO MAKE IT TO THE TOP, "A$"."
02850 GO TO 1440
02860 PRINT"A LITTLE BETTER THAN AVERAGE....BUT NOT MUCH!!!!!"
02870 GO TO 1440
02880 PRINT"YOU ARE RATED 'O.K.', WHICH IS A LONG WAY FROM GOOD."
02890 GO TO 1440
02900 PRINT"YOU SCORED FAR SUPERIOR THAN MOST PEOPLE I KNOW...NEXT TIME,"
02910 PRINT"TRY FOR A HIGHER SCORE..."
02920 GO TO 1440
02930 PRINT"VERY GOOD. A LOT OF PEOPLE NEVER GET THIS HIGH"
02940 PRINT"EXCEPT ON POT.  CONSIDER YOURSELF A SHARPSHOOTER!!!"
02950 GO TO 1440
02960 PRINT"EXCELLENT...YOU ARE A REAL CRACK SHOT...TRY TO GET ALL"
02970 PRINT"OF THE TARGETS NEXT TIME..."
02980 GO TO 1440
02990 PRINT
03000 PRINT"NEW GAME:"
03010 PRINT
03020 GO TO 400
03030 END
