SHOOTER .3 This game was intended to be an improvement on a very old Apple ][+ Applesoft BASIC game titled 'The Dreaded Bird' (or something like that). The game draws two 'stick' guns in the lower corners of the screen and 'aims' them along a trajectory according to where the invisible user-controlled mouse cursor is located. This was to simulate some sort of rudimentary 3D effect. A square (I never did go on to create enemy 'bird' graphics) would fly across the screen and the player had to shoot it. But the player could only guess where his shot would go based on the 'aim' of the two guns and then by watching the shot. The idea was to use as few shots as possible to destroy the square. Oh, and the square shot back at random times and at random locations. If the square's shot landed in an area designated as the 'kill-zone' (more for the 3D effect) the game ended with some small graphic display and the player's score was displayed. The game actually worked very well and I wound up spending more time playing it than I did working on it. In fact, it became somewhat popular amongst my friends and family. Unfortunately, when MS Basic no longer worked on Macs (at least the version I used), the game fell into disuse. WINDOW 1,,(0,20)-(520,400),3 GOSUB 50 HIDECURSOR RANDOMIZE TIMER N=TIMER G=0 H=0 P=0 U=0 10 A=MOUSE(1)/6 B=MOUSE(2)/6+267 IF A>=60 THEN A=60 IF B<=280 THEN B=280 IF B>=312 THEN B=312 LINE (0,310)-(A,B),1 LINE (10,320)-(A,B),1 LINE (510,310)-((A+450),B),1 LINE (500,320)-((A+450),B),1 IF I=1 THEN GOSUB 140 C=MOUSE(1) D=MOUSE(2) 20 IF MOUSE(0)=(-1) THEN 30 IF INKEY$=" "THEN 40 IF I=0 THEN GOSUB 90 IF I=1 THEN GOSUB 140 O=TIMER IF O>=(N+60) THEN 130 IF MOUSE(1)=C AND MOUSE(2)=D THEN 20 LINE (0,310)-(A,B),0 LINE (10,320)-(A,B),0 LINE (510,310)-((A+450),B),0 LINE (500,320)-((A+450),B),0 GOTO 10 30 E=A*8.5 F=(320-((320-B)*8)) LINE (A-2,B-2)-(E,F),1 LINE (A+452,B-2)-(E,F),1 LINE (A+2,B+2)-(E,F),1 LINE (A+448,B+2)-(E,F),1 CIRCLE (E,F),6,1 LINE (A-2,B-2)-(E,F),0 LINE (A+452,B-2)-(E,F),0 LINE (A+2,B+2)-(E,F),0 LINE (A+448,B+2)-(E,F),0 CIRCLE (E,F),6,0 LET P=P+1 GOSUB 110 LET H=H+1 LINE (0,310)-(A,B),0 LINE (10,320)-(A,B),0 LINE (510,310)-((A+450),B),0 LINE (500,320)-((A+450),B),0 GOTO 10 40 SHOWCURSOR GOTO 42 41 LET G=0 HIDECURSOR GOTO 20 42 IF DIALOG(0)=1 THEN 60 IF INKEY$=" "THEN 41 GOTO 42 50 BUTTON 1,1,"Stop",(230,295)-(280,320),1 BUTTON 2,1,"Run",(290,295)-(340,320),1 RETURN 60 IF DIALOG(1)=1 THEN SYSTEM IF DIALOG(1)=2 THEN RUN 80 U=U+1 IF U=100 THEN 81 GOTO 20 81 U=0 H=0 GOTO 20 90 J=INT(RND(1)*99+1) IF J>80 THEN GOSUB 100 RETURN 100 K=INT(RND(1)*399+55) L=INT(RND(1)*199+30) LINE (K-10,L-10)-(K+10,L-10),1 LINE (K+10,L-10)-(K+10,L+10),1 LINE (K+10,L+10)-(K-10,L+10),1 LINE (K-10,L+10)-(K-10,L-10),1 I=1 RETURN 110 IF (E>=K-16) AND (E<=K+16) AND (F>=L-16) AND (F<=L+16) THEN 120 RETURN 120 BEEP I=0 Q=0 H=0 LINE (K-10,L-10)-(K+10,L-10),0 LINE (K+10,L-10)-(K+10,L+10),0 LINE (K+10,L+10)-(K-10,L+10),0 LINE (K-10,L+10)-(K-10,L-10),0 LET M=M+1 LOCATE 1,1:PRINT M LOCATE 2,1:PRINT P LOCATE 3,1:PRINT 60-(O-N) 125 IF MOUSE(0)<>0 THEN 125 GOTO 20 130 LOCATE 10,22:PRINT "You lived." LOCATE 11,22:PRINT "You took";P;"shots." LOCATE 12,22:PRINT "You scored";M;"hits." LOCATE 13,22:PRINT "Total run time was";O-N;"seconds." LOCATE 14,22:PRINT "Your score is ";(INT(M*10)-(P*2))+(O-N) GOTO 40 140 LET K=K+3 LET Q=Q+1 IF K>=500 THEN 150 IF Q=16 THEN GOSUB 160 LINE (K-10,L-10)-(K+10,L-10),1 LINE (K+10,L-10)-(K+10,L+10),1 LINE (K+10,L+10)-(K-10,L+10),1 LINE (K-10,L+10)-(K-10,L-10),1 LINE (K-13,L-10)-(K-11,L+10),0,bf LINE (K+7,L-9)-(K+7,L+9),0 141 RETURN 150 I=0 Q=0 LINE (K-10,L-10)-(K+10,L-10),0 LINE (K+10,L-10)-(K+10,L+10),0 LINE (K+10,L+10)-(K-10,L+10),0 LINE (K-10,L+10)-(K-10,L-10),0 LINE (K-13,L-10)-(K-11,L+10),0,bf LINE (K+7,L-9)-(K+7,L+9),0 GOTO 20 160 Q=0 LINE (125,125)-(385,125),1 LINE (385,125)-(385,195),1 LINE (385,195)-(125,195),1 LINE (125,195)-(125,125),1 FOR PAUSE=1 TO 500:NEXT PAUSE R=INT(RND(1)*509+1) S=INT(RND(1)*319+1) LINE (K,L)-(R,S-2),1 LINE (K,L)-(R,S+2),1 LINE (R-6,S)-(R+6,S),1 LINE (R-6,S-1)-(R+6,S-1),1 LINE (R-6,S+1)-(R+6,S+1),1 LINE (R-6,S-2)-(R+6,S-2),1 LINE (R-6,S+2)-(R+6,S+2),1 LINE (R-5,S-3)-(R+5,S-3),1 LINE (R-5,S+3)-(R+5,S+3),1 LINE (R-5,S-4)-(R+5,S-4),1 LINE (R-5,S+4)-(R+5,S+4),1 LINE (R-4,S-5)-(R+4,S-5),1 LINE (R-4,S+5)-(R+4,S+5),1 LINE (R-2,S-6)-(R+2,S-6),1 LINE (R-2,S+6)-(R+2,S+6),1 LINE (K,L)-(R,S-2),0 LINE (K,L)-(R,S+2),0 IF (R>=125) AND (R<=385) AND (S>=125) AND (S<=195) THEN 170 LINE (R-6,S)-(R+6,S),0 LINE (R-6,S-1)-(R+6,S-1),0 LINE (R-6,S+1)-(R+6,S+1),0 LINE (R-6,S-2)-(R+6,S-2),0 LINE (R-6,S+2)-(R+6,S+2),0 LINE (R-5,S-3)-(R+5,S-3),0 LINE (R-5,S+3)-(R+5,S+3),0 LINE (R-5,S-4)-(R+5,S-4),0 LINE (R-5,S+4)-(R+5,S+4),0 LINE (R-4,S-5)-(R+4,S-5),0 LINE (R-4,S+5)-(R+4,S+5),0 LINE (R-2,S-6)-(R+2,S-6),0 LINE (R-2,S+6)-(R+2,S+6),0 LINE (125,125)-(385,125),0 LINE (385,125)-(385,195),0 LINE (385,195)-(125,195),0 LINE (125,195)-(125,125),0 GOTO 141 170 FOR T=1 TO 5 BEEP NEXT T FOR T=1 TO 30 R=INT(RND(1)*509+1) S=INT(RND(1)*319+1) LINE (K,L)-(R,S) LINE (R-6,S)-(R+6,S),1 LINE (R-6,S-1)-(R+6,S-1),1 LINE (R-6,S+1)-(R+6,S+1),1 LINE (R-6,S-2)-(R+6,S-2),1 LINE (R-6,S+2)-(R+6,S+2),1 LINE (R-5,S-3)-(R+5,S-3),1 LINE (R-5,S+3)-(R+5,S+3),1 LINE (R-5,S-4)-(R+5,S-4),1 LINE (R-5,S+4)-(R+5,S+4),1 LINE (R-4,S-5)-(R+4,S-5),1 LINE (R-4,S+5)-(R+4,S+5),1 LINE (R-2,S-6)-(R+2,S-6),1 LINE (R-2,S+6)-(R+2,S+6),1 NEXT T FOR T=1 TO 400 R=INT(RND(1)*509+1) S=INT(RND(1)*319+1) LINE (255,160)-(R,S) NEXT T GOSUB 50 LOCATE 10,22:PRINT "You died." LOCATE 11,22:PRINT "You took";P;"shots." LOCATE 12,22:PRINT "You scored";M;"hits." LOCATE 13,22:PRINT "Total run time was";O-N;"seconds." LOCATE 14,22:PRINT "Your score is ";(INT(M*10)-(P*2))+(O-N)-50 GOTO 40