	REM----------------------------------------------------
	REM		C  A  N  N  O  N  S
	REM----------------------------------------------------

	REM			JUNE 15, 1977

	PRINT TAB(10);"C  A  N  N  O  N  S"
	PRINT TAB(10);"-------------------"
	PRINT:PRINT:PRINT
	PRINT TAB(10);"ENTER YOUR NAME, COMMANDER ";
	INPUT NAME$
     PRINT 
	RANDOMIZE
	PRINT TAB(5);"YOU GET TO FIRE AN ARTILLERY PIECE AT A"
	PRINT TAB(5);"DISTANT TARGET.  YOU MAY USE AS MANY SHOTS"
	PRINT TAB(5);"AS YOU NEED BUT THE FEWER SHOTS, THE BETTER"
	PRINT TAB(5);"YOUR SCORE."
	PRINT TAB(5);"   YOU MUST GIVE THE COMPUTER THE ANGLE AT"
	PRINT TAB(5);"WHICH TO AIM THE CANNON SO THAT THE PROJECTILE"
	PRINT TAB(5);"WILL STRIKE THE TARGET.  THE ANGLE IS ENTERED"
	PRINT TAB(5);"IN DEGREES AND MAY BE A DECIMAL FRACTION."
	PRINT TAB(5);"IF THE PROJECTILE STRIKES WITHIN 100 YARDS OF"
	PRINT TAB(5);"THE TARGET IT IS CONSIDERED A HIT"
	PRINT TAB(5);"THE MAXIMUM RANGE IS 46,500 YARDS"
	PRINT
	PRINT TAB(5);"       G O O D      L U C K !"
	PRINT:PRINT
     LET W2=0
200  LET TGT.DIST=43000-30000*RND
     LET ROUNDS.FIRED=0
     PRINT
     IF W2 = 0 THEN GOTO 640
     GOTO 680
250  PRINT "MINIMUM ELEVATION IS 1 DEGREE."
     GOTO 690
     PRINT "MAXIMUM ELEVATION IS 89 DEGREES."
     GOTO 690
290  IF B>45 THEN GOTO 320
     PRINT "OVER TARGET BY ";ABS(MISS.DIST);"YARDS - LOWER YOUR ELEVATION."
     GOTO 690
320  PRINT "OVER TARGET BY ";ABS(MISS.DIST);"YARDS - RAISE YOUR ELEVATION."
     GOTO 690
340  IF B>45 THEN GOTO 370
     PRINT "SHORT OF TARGET BY ";ABS(MISS.DIST);"YARDS - RAISE YOUR ELEVATION."
     GOTO 690
370  PRINT "SHORT OF TARGET BY ";ABS(MISS.DIST);"YARDS - LOWER YOUR ELEVATION."
     GOTO 690
400	REM-------A    H I T !!------------------------------
	PRINT
	PRINT CHR$(7)
	PRINT
	PRINT "                  ***           ***"
	PRINT "         *     ***** *  **** * **"
	PRINT "            **********   ******        *"
	PRINT "        ********* ********* ********* *    *"
	PRINT "        ************* ********** ********"
	PRINT "          ****** B    A    N    G *********"
	PRINT "       *     ***************************      *"
	PRINT "          *      *   *****************   ** ***"
	PRINT "      *       ***************** *    * * * *"
	PRINT "                 ********       ****"
	PRINT "                    ***             **"
	PRINT "                    **"
	PRINT
	PRINT
     PRINT TAB(15);ROUNDS.FIRED;" ROUNDS EXPENDED!"
	IF ROUNDS.FIRED>20 THEN \
		ROUNDS.FIRED=20
	ON ROUNDS.FIRED GOSUB 1000,1100,1200,1300,1400,1400,1600, \
			      1700,1800,1900,2000,2100,2200,2300, \
			      2400,2500,2600,2700,2800,2900
	PRINT
	PRINT
565	REM------WANT ANOTHER TRY?------------------------------
	PRINT TAB(10);"WOULD YOU LIKE TO TRY AGAIN, COMMANDER ";NAME$;
	INPUT ANS$
	IF LEFT$(ANS$,1)="Y" THEN \
		GOTO 640
	IF LEFT$(ANS$,1)<>"N" THEN \
		PRINT TAB(10);"I DON'T UNDERSTAND YOU, COMMANDER" :\
		GOTO 565
	PRINT:PRINT
	PRINT TAB(15);"THIS IS FIRE CONTROL . . ."
	PRINT TAB(15);"         SIGNING OFF"
	PRINT
	STOP

640  PRINT
	PRINT TAB(10);"THE TARGET IS IN SIGHT!"
     LET W2=1
     PRINT
     GOTO 200
680	REM
	PRINT TAB(10);"DISTANCE TO TARGET IS ";INT(TGT.DIST);"YARDS."
690  PRINT
     PRINT "ELEVATION:";
     INPUT ELEVATION
     IF ELEVATION = 90 THEN GOTO 820
     IF ELEVATION<1 THEN GOTO 250
     LET ROUNDS.FIRED = ROUNDS.FIRED + 1
     LET B2=2*ELEVATION/57.3
     LET SHOT.DIST=46500*SIN(B2)
     LET MISS.DIST=INT(TGT.DIST-SHOT.DIST)
     IF ABS(MISS.DIST)<100 THEN 400
     IF MISS.DIST>100 THEN 340
     IF MISS.DIST<-100 THEN 290
820  PRINT
     PRINT "---------------> BANG!!  YOU BLEW YOURSELF UP!!  DING-A-LING!!"
     PRINT
     GOTO 565

1000	REM-----ONE SHOT!
	PRINT TAB(10);"       WOW!!"
	PRINT
	PRINT TAB(10);"THAT WAS GREAT! IT ONLY TOOK YOU ONE SHOT!"
	PRINT
	RETURN
1100	REM-----TWO SHOTS
	PRINT TAB(10);"VERY FINE GUNNERY, COMMANDER ";NAME$
	RETURN
1200	REM-----3
	PRINT TAB(10);"YOU MAY GET A PROMOTION FOR THIS, ";NAME$;", SIR"
	RETURN
1300	REM-----4
	PRINT TAB(10);"WELL DONE"
	RETURN
1400	REM-----5
	PRINT TAB(10);"GOOD JOB, WE NEED MORE OFFICERS LIKE YOU"
	RETURN
1500	REM-----6
	PRINT TAB(10);"THAT WAS A SATISFACTORY PERFORMANCE"
	RETURN
1600	REM-----7
	PRINT TAB(10);"THAT WAS OK"
	RETURN
1700	REM-----8
	PRINT TAB(10);"I THINK THAT WITH SOME PRACTICE, YOU COULD DO OK"
	RETURN
1800	REM-----9
	PRINT TAB(10);"YOU WERE A LITTLE WASTEFUL OF AMMO, ";NAME$
	RETURN
1900	REM-----10
	PRINT TAB(10);"I DON'T THINK THAT YOU WERE EVEN TRYING"
	RETURN
2000	REM-----11
	PRINT TAB(10);"BETTER LUCK NEXT TIME"
	RETURN
2100	REM-----12
	PRINT TAB(10);"YOU'RE A PRETTY LOUSY SHOT, ";NAME$
	RETURN
2200	REM-----13
	PRINT TAB(10);"NOT BAD FOR A FOUR YEAR OLD"
	RETURN
2300	REM-----14
	PRINT TAB(10);"MAYBE YOU SHOULD STAY INSIDE WITH THE COOK"
	RETURN
2400	REM-----15
	PRINT TAB(10);"THAT WAS AWFUL"
	RETURN
2500	REM-----16
	PRINT TAB(10);"C'MON, GIVE SOMEONE ELSE A CHANCE!"
	RETURN
2600	REM-----17
	PRINT TAB(10);"TAKE COVER! RUN FOR YOUR LIFE!"
	RETURN
2700	REM-----18
	PRINT TAB(10);"I THINK YOU BLEW UP HEADQUARTERS"
	RETURN
2800	REM-----19
	PRINT TAB(10);"YOU GET THE GUNNERY BOOBY PRIZE"
	RETURN
2900	REM-----20
	PRINT TAB(10);"YOU ARE THE WORST SHOT I EVER SAW!!"
	RETURN
