10 '###########################################################################
20 '# ##
30 '# TARGET: AN ARCADE-TYPE SHOOTING GAME ##
40 '# BY ##
50 '# BRIAN D. MANN ##
60 '# 628 ELGIN TERRACE, RICHMOND VA. 23225 (804) 320-4901 ##
70 '# IF YOU DISCOVER ANY PROBLEMS WITH THIS CODE, OR HAVE ANY ##
80 '# QUESTIONS, PLEASE FEEL FREE TO CALL ME. ##
90 '# ##
100 '# ##
110 '# COPYRIGHT OCTOBER, 1982 BY BRIAN D. MANN. FOR NONPROFIT DISTRIBUTION ##
120 '# ONLY. ALL RIGHTS RESERVED. ##
130 '##########################################################################
140 R = INT(VAL(RIGHT$(TIME$,2))*544):RANDOMIZE(R)
150 DIM X(297):DIM Y(297)
160 KEY OFF
170 FOR I=1 TO 10:KEY I,"":NEXT:KEY 1,"RUN"+CHR$(13):KEY 2,"WIDTH 80"+CHR$(13)
180 SCREEN 1,0
190 CLS
200 WIDTH 40
210 LOCATE 12,17:PRINT "TARGET"
220 LOCATE 15,19: PRINT "by"
230 LOCATE 18,14:PRINT "BRIAN D. MANN"
240 LOCATE 24,10:PRINT "PRESS ANY KEY TO BEGIN"
250 A$=INKEY$:IF A$="" THEN 250
260 GOSUB 400
270 GOSUB 1290
280 GOSUB 950
290 CLS
300 LOCATE 10,20:PRINT "TARGET"
310 LOCATE 12,1:PRINT "DO YOU WISH EASY(3), MODERATE(4), HARD(5), OR IMPOSSIBLE(6)"
320 A$ = INKEY$:IF A$ = "" THEN 320
330 SPEED = VAL(A$)
340 SCREEN 1,0
350 LOOP = 0
360 HIT=0:MISS=0
370 DEF SEG
380 IF REPEAT = 1 THEN GOTO 530
390 GOTO 530
400 REM DRAW AND SAVE CROSSHAIRS (CRSHRS%)
410 LINE (5,4)-(5,25)
420 LINE (5,4)-(10,4)
430 LINE (5,25)-(10,25)
440 LINE (35,4)-(35,25)
450 LINE (30,4)-(35,4)
460 LINE (30,25)-(35,25)
470 CIRCLE (20,14),8
480 LINE (16,14)-(24,14)
490 LINE (20,10)-(20,18)
500 DIM CRSHRS%(150)
510 GET(0,0)-(35,25),CRSHRS%
520 RETURN
530 CLS' BEGINNING OF MAIN LOOP
540 FOR I = 1 TO 100
550 X=(RND(1)*318)+1:Y=(RND(1)*198)+1
560 PSET(X,Y)
570 NEXT
580 X1=140:Y1=80
590 POKE 106,0
600 YS=7:XS=10
610 P = 0
620 S1=INT(RND*170+1):S2=INT(RND*170)+1
630 IF X1<1 THEN X1=1
640 IF X1>280 THEN X1=280
650 IF Y1<1 THEN Y1=1
660 IF Y1>170 THEN Y1=170
670 PUT(X1,Y1),CRSHRS%,XOR
680 P =P+SPEED:IF P >297 THEN 1130
690 X(P) = P
700 Y(P) = INT(((S2-S1)/297)*X(P))+S1
710 PUT (X(P),Y(P)),S%,XOR
720 FOR D1=1 TO 10:NEXT
730 POKE 160,0
740 A$=""
750 A$ = INKEY$: PUT(X(P),Y(P)),S%,XOR:IF LEN(A$) < 2 AND A$<> " " THEN 680 ELSE A =ASC(RIGHT$(A$,1))
760 IF A=32 THEN PUT(X1,Y1),CRSHRS%,XOR:GOTO 910
770 PUT(X1,Y1),CRSHRS%,XOR
780 ON A-70 GOSUB 800,810,820,830,840,850,860,870,880,890,900
790 GOTO 630
800 SOUND 100,1:X1=X1-XS:Y1=Y1-YS:RETURN
810 SOUND 125,1:Y1=Y1-YS:RETURN
820 SOUND 150,1:X1=X1+XS:Y1=Y1-YS:RETURN
830 RETURN
840 SOUND 200,1:X1=X1-XS:RETURN
850 RETURN
860 SOUND 200,1:X1=X1+XS:RETURN
870 RETURN
880 SOUND 300,1:X1=X1-XS:Y1=Y1+YS:RETURN
890 SOUND 325,1:Y1=Y1+YS:RETURN
900 SOUND 350,1:X1=X1+XS:Y1=Y1+YS:RETURN
910 SOUND 40,1:LINE (1,199)-(X1+16,Y1+10),3:LINE (319,199)-(X1+16,Y1+10),3:FOR W1=1 TO 3:NEXT
920 LINE (1,199)-(X1+16,Y1+10),0:LINE (319,199)-(X1+16,Y1+10),0:POKE 160,0
930 IF X1>X(P) -16 AND X1Y(P) - 20 AND Y1 < Y(P)-6 THEN 940 ELSE 630
940 PUT (X1,Y1),E%,XOR:FOR I%=100 TO 1000 STEP 25:SOUND I%,1:NEXT:PUT (X1,Y1),E%,XOR:HIT=HIT+1:LOOP=LOOP+1:IF LOOP=5 THEN 1160 ELSE 580
950 DEF SEG
960 CLS
970 LOCATE 1,10:PRINT "YOUR ENEMY.":LOCATE 5,1:PRINT "YOUR MISSION: DESTROY HIM":PRINT
980 PRINT "USE THE KEY PAD TO MOVE YOUR SIGHTS"
990 PUT (120,60),CRSHRS%,PSET
1000 LOCATE 13,1:PRINT "ON TO THE ENEMY SHIP AND THEN PRESS":PRINT:PRINT" THE SPACE BAR TO FIRE."
1010 PRINT
1020 PRINT "YOU WILL HAVE 5 CHANCES"
1030 PRINT:PRINT "PRESS ANY KEY TO BEGIN"
1040 REM DRAW AND SAVE SHIP (S%)
1050 CIRCLE (28,5),2
1060 LINE (26,6)-(20,5),,BF
1070 LINE (20,6)-(10,4),,BF
1080 LINE (13,6)-(15,9),,BF
1090 LINE (8,9)-(17,11),,BF
1100 DIM S%(150)
1110 GET (8,5)-(30,11),S%
1120 A$ = INKEY$:IF A$="" THEN 1120 ELSE RETURN
1130 PUT(X1,Y1),CRSHRS%,XOR
1140 SOUND 40,20
1150 LOOP =LOOP+1:IF LOOP=5 THEN 1160 ELSE 580
1160 REM **********END OF ROUND SUMMARY
1170 CLS: PRINT"YOU HIT ";HIT;" SHIPS OUT OF FIVE."
1180 PRINT:PRINT
1190 IF HIT<=2 THEN PRINT "YOU COULDN'T HIT THE BROAD SIDE OF A VULCAN MOON!!
1200 IF HIT=3 THEN PRINT "WITH TRAINING, YOU MIGHT BE ABLE TO CLEAN THE GUN!"
1210 IF HIT=4 THEN PRINT "WELL, NOT BAD BUT THE ONE THAT GOT AWAY JUST DESTROYED YOUR HOME PLANET!"
1220 IF HIT=5 THEN PRINT "GOOD SHOOTING!!! CAN YOU DO IT AGAIN?"
1230 PRINT:PRINT
1240 INPUT "DO YOU WISH TO PLAY AGAIN (Y/N)?";A$
1250 POKE 106,0
1260 IF A$ = "Y" OR A$ = "y" THEN GOTO 1280
1270 IF A$ = "N" OR A$ = "n" THEN END ELSE GOTO 1230
1280 REPEAT = 1: GOTO 290
1290 REM ############# EXPLOSION DRAW AND SAVE
1300 CLS
1310 DEF SEG
1320 DEFINT E
1330 DIM E%(130)
1340 'CLS
1350 OPEN "TARGET.PIC" FOR INPUT AS #1
1360 FOR Z = 0 TO 129
1370 INPUT#1, E%(Z)
1380 NEXT
1390 CLOSE
1400 RETURN