10 REM SNIPER
20 ENV 1,8,-1,1
30 ENT 1,8,1,1
40 ENV 2,30,-3,10,15,-2,5
50 DEFINT A-Z
60 BASE$=" "+CHR$(160)+" "
70 SPIES=0
80 HITS=0
90 SPYFLAG=0
100 SPYCH=250
110 REM NEW SNIPER LOOP
120 MY=0
130 BASE=10
140 MODE 0
150 LOCATE 1,25
160 PAPER 7:PEN 4
170 FOR Q=1 TO 20
180 PRINT CHR$(127);
190 NEXT Q:PAPER 0
200 BORDER 5
210 INK 2,7
220 PEN 11
230 LOCATE BASE-1,24:PRINT BASE$;
240 REM MAIN LOOP
250 IF MY<>0 THEN GOSUB 580
260 FLAG=0
270 IF INKEY(8)=0 AND BASE>2 THEN BASE=BASE-1:FLAG=1
280 IF INKEY(1)=0 AND BASE<19 THEN BASE=BASE+1:FLAG=1
290 IF FLAG=1 THEN PEN 11:LOCATE BASE-1,24:PRINT BASE$;
300 IF INKEY(9)=0 AND MY=0 THEN MY=23:MX=BASE:SOUND 130,0,50,15,2,15
310 GOSUB 410
320 IF SPIES<>10 THEN GOTO 240
330 REM ALL SPIES RUN AWAY OR SHOT
340 CLS:PRINT"ALL SPIES HAVE BEEN KILLED"
350 LOCATE 1,5:PRINT"YOU HIT ";HITS;" OF THEM"
360 IF HITS>8 THEN PRINT"    ( there may be a medal in this for you )"
370 IF INKEY$=" " THEN GOTO 370
380 IF INKEY$<>" " THEN GOTO 380
390 RUN
400 END
410 REM PERFORM SPY ACTIONS
420 IF SPYFLAG=1 THEN GOTO 460
430 IF RND(1)>0.007 THEN RETURN
440 SPYPOS=INT(RND(1)*10)+6:SPYDIR=1:IF RND(1)>0.5 THEN SPYDIR=-1
450 GOTO 570
460 REM SPY IS PRESENT
470 IF SPYPOS=1 OR SPYPOS=19 THEN LOCATE SPYPOS+1,5: PRINT" ";:GOTO 560
480 IF RND(1)>0.09 THEN GOTO 550
490 SOUND 1,0,10,3,1,1,6
500 SPYPOS=SPYPOS+SPYDIR
510 LOCATE SPYPOS,5
520 PEN 3
530 SPYCH=501-SPYCH
540 PRINT " ";CHR$(SPYCH);" ";
550 RETURN
560 PRINT" ";:SPIES=SPIES+1
570 SPYFLAG=1-SPYFLAG:RETURN
580 REM MOVE MISSILE UP
590 LOCATE MX,MY:PRINT " ";
600 MY=MY-1
610 IF MY=0 THEN RETURN
620 LOCATE MX,MY
630 IF MX=SPYPOS+1 AND MY=5 THEN HITS=HITS+1:PRINT " ";:SPYFLAG=0:MY=0:SOUND 3,200+20*SPIES,15:SPYPOS=0:RETURN
640 PEN 9:PRINT CHR$(148);
650 RETURN