Exocet


A group of enemy ships randomly make their way across the horizon, and it's up to you to sink as many of them as possible by firing missiles using the space bar. A mobile sight is printed slightly below the line of the horizon. There are three sizes of enemy ships, and the smaller the target the more points you score for a hit. Occasionally the enemy's electronic defence system will succeed in confusing you missile and deflecting it from its course.

   10 REM *** BBC VERSION ***
   20 REM ***   EXOCET    ***
   30 REM Exocet @ Robert Erskine 1983
   40 REM Converted to 32K BBC Micro by C.R.T
anner
   50 MODE 7
   60 GOSUB 880
   70 GOSUB 600
   80 MODE 1
   90 VDU 23;8202;0;0;0;28,4,27,35,4,19,0,130
,0,0,0,19,1,4,0,0,0
  100 GOSUB 370
  110 GOSUB 430
  120 hs=0
  130 COLOUR 2
  140 FOR x=1 TO 632
  150   IF 664-x>31 PRINT TAB(0,10);:COLOUR 1
29:COLOUR 2:FOR A%=x TO x+31:PRINT CHR$(?(A%+
MEM));:NEXT
  160   COLOUR 128:PRINT TAB(COL,LIN);" "
  170   IF INKEY(-98) AND FLAG=0 AND COL>0 TH
EN COL=COL-1:T=T-8
  180   IF INKEY(-67) AND FLAG=0 AND COL<26 T
HEN COL=COL+1:T=T+8
  190   COLOUR 3:COLOUR 128:PRINT TAB(COL,LIN
);"+"
  200   IF FLAG=1 THEN GOTO 240
  210   IF INKEY(-99) ELSE GOTO 330
  220   L=0:D=1:FLAG=1:Y=127
  230   EX=EX-1
  240   GCOL 0,1:PLOT 70,(Y+32)*4,(L+32)*4
  250   LL=L:YY=Y
  260   SOUND 1,-15,50,1
  270   IF L>=112 THEN D=0
  280   IF RND(1)>.8 THEN GOTO 310
  290   L=L+(8 AND D=1)-(8 AND D=0)
  300   Y=Y+(ABS(Y-T)/2 AND T>Y)-(ABS(Y-T)/2 
AND T<Y)
  310   GCOL 0,0:PLOT 70,(YY+32)*4,(LL+32)*4
  320   IF L<=95 AND D=0 THEN GOSUB 730
  330   IF FLAG=0 THEN TIME=0:REPEAT UNTIL TI
ME>10
  340   IF EX<0 THEN x=632:NEXT:GOTO 520
  350 NEXT x
  360 GOTO 520
  370 CLG:LIN=11:COL=15:T=123:FLAG=0:EX=10
  380 FOR X=0 TO 10
  390   FOR Y=0 TO 31
  400     COLOUR 129:PRINT TAB(Y,X);" "
  410     NEXT:NEXT
  420 RETURN
  430 DATA 224,32,32,32,32,32,225,226,32,32,3
2,32,227,228,229,32,32,32,32
  440 RESTORE
  450 FORA%=1 TO 3:FORB%=1 TO 6:READ C%:G(A%,
B%)=C%:NEXT:NEXT
  460 FORA%=4 TO 10:FOR B%=1 TO 6:G(A%,B%)=32
:NEXT:NEXT
  470 FORA%=1 TO 32:?(MEM+A%)=32:NEXT
  480 FORA%=1 TO 594 STEP 6:C%=INT(RND(9)+1)
  490   FORB%=1 TO 6:?(MEM+31+B%+A%)=G(C%,B%)
:NEXT:NEXT
  500 sc=0:FORA%=1 TO 32:?(MEM+A%+632)=32:NEX
T
  510 RETURN
  520 CLS:PRINT TAB(6,10);"Your score was ";s
c
  530 sc=0:EX=10
  540 *FX15,1
  550 PRINT TAB(3,20);"Press any key to resta
rt"
  560 IF INKEY$(1000)="" THEN GOTO 560
  570 GOSUB 370
  580 GOSUB 430
  590 GOTO 140
  600 CLS:PRINT TAB(0,0);CHR$(141);CHR$(129);
"-------------- EXOCET --------------"'CHR$(1
41);CHR$(129);"-------------- EXOCET --------
-----"
  610 PRINT'" The object of this game is to s
ink the enemy ships with Exocet missiles as t
heycros the horizon."
  620 PRINT'" The controls are:-"
  630 PRINT'CHR$(133);"       Z = move sight 
left"'
  640 PRINT'CHR$(133);"       X = move sight 
right"'
  650 PRINT'CHR$(133);"    <SPACE> = fire mis
sile"'
  660 PRINT " You can score:-"'
  670 PRINT CHR$(134);"  10 Points on hitting
 a large ship"'
  680 PRINT CHR$(134);"  20 Points on hitting
 a medium ship"'
  690 PRINT CHR$(134);"  30 Points on hitting
 a small ship"
  700 PRINT TAB(6,24);CHR$(136);"Press any ke
y to start";
  710 IF INKEY$(1000)="" THEN GOTO 710
  720 RETURN
  730 IF POINT((Y+32)*4,548)<>2 THEN GOTO 830
  740 IF ?(MEM+x+COL)=224 THEN sc=sc+30
  750 IF (?(MEM+x+COL)=225 AND ?(MEM+x+COL+1)
=226) OR (?(MEM+x+COL-1)=225 AND ?(MEM+x+COL)
=226) THEN sc=sc+20
  760 IF (?(MEM+x+COL)=227 AND ?(MEM+x+COL+1)
=228 AND?(MEM+x+COL+2)=229) OR (?(MEM+x+COL-2
)=227 AND ?(MEM+x+COL-1)=228 AND?(MEM+x+COL)=
228 AND?(MEM+x+COL+1)=229) THEN sc=sc+10
  770 RESTORE 810
  780 FOR z=1 TO 15:SOUND 1,-15,60,1
  790   PLOT 69,(Y+32)*4,(L+48)*4:READ YY,LL:
GCOL 0,2:PLOT 1,YY*4,LL*4
  800   NEXT z
  810 DATA -4,4,-4,5,-3,6,-3,7,-2,8,-2,9,-1,1
0,0,11,1,10,2,9,2,8,3,7,3,6,4,5,4,4
  820 FOR A%=(MEM+x+COL-3) TO (MEM+x+COL+3):?
A%=32:NEXT
  830 FLAG=0
  840 COLOUR 129:PRINT TAB(COL,LIN-2);" ";TAB
(COL,LIN-1);" "
  850 IF sc>hs THEN hs=sc
  860 PRINT TAB(0,0);"SCORE:";sc;" EXOS:";EX;
" HIGH SCORE:";hs
  870 RETURN
  880 VDU 23,224,0,0,0,0,0,0,16,255
  890 VDU 23,225,0,0,0,0,1,39,255,127
  900 VDU 23,226,0,0,0,0,128,230,255,254
  910 VDU 23,227,0,0,0,0,1,255,127,63
  920 VDU 23,228,0,24,60,63,255,255,255,255
  930 VDU 23,229,0,0,0,0,192,255,254,252
  940 DIM G(10,6),MEM 800
  950 RETURN