Space Traffic


As you travel about in the midst of an asteroid belt recovering lost satellites (well, someone has to do it), you are assailed by missiles and enemy spacecraft which you can either dodge or attack. Movement is either to left or right using the Z and X keys and your cannon can be fired with the M key, although this will lose you points.

The satellites are collected by manoeuvering your spaceship into them and points are gained for each one which you manage to recover. Collision with other objects results in destruction, although you are allocated five lives at the start of each game.

    1 REM **SPACE TRAFFIC ** *BBC VERSION*
    5 MODE7
   10 GOSUB9000
   20 GOSUB8000
   30 MODE2
   40 VDU 23,1,0;0;0;0;
   50 hs=0
   70 PRINT"-ASTEROIDS DETECTED-":FOR F=1 TO 
4:FOR d=97 TO 49 STEP-4:SOUND1,-15,4,1:NEXTd:
NEXTF
   90 x1=x
   99 *FX15,1
  100 LETx=x+(INKEY(-98)ANDx>5)-(INKEY(-67)AN
Dx<18)
  103 C%=FNATTR(x,7)
  105 IF C%=7 OR C%=1 THEN hit=1
  107 IF C%=2 THEN FOR d=0 TO 60 STEP20:SOUND
1,-15,d,1:NEXT:sc=sc+1
  110 PRINTTAB(x1,6);" ":PRINTTAB(31,19);" ":
FORI=0TO5:PRINTTAB(x1,I)" ":NEXT I:COLOUR2:PR
INTTAB(x,6)CHR$224
  112 IF q=6 THEN IF w=x THEN PROCBEEP(20):PR
OCBEEP(10):PROCBEEP(20):GOSUB4100
  115 IF hit=1 THEN hit=0:PROCBEEP(10):GOSUB4
100
  117 IF INKEY$(0)="M" THEN GOSUB 5000
  120  l=RND(18):g=RND(3)*2+1:COLOUR7:PRINTTA
B(l,30)a$;TAB(l,31)b$
  125  IF c>400 THEN l=RND(18):g=RND(3)*2+1:C
OLOUR7:PRINTTAB(l,30)a$;TAB(l,31)b$
  130 IF c=200 THEN a$=CHR$226+CHR$227+CHR$22
5+" "+CHR$234+" ":b$=CHR$228+CHR$229+"    "
  135 IF c=300 THEN a$=CHR$226+CHR$227+CHR$22
6+CHR$227+CHR$226+CHR$227:b$=CHR$228+CHR$229+
CHR$228;CHR$229+CHR$228+CHR$229
  140 IF RND(1)>.6 THEN COLOUR2:PRINTTAB(RND(
19),31);CHR$230
  150 IF RND(1)<.4 THEN COLOUR1:PRINTTAB(RND(
19),31);CHR$231
  155 Y%=0
  159 S%=0
  160 FOR L%=8 TO 11
  165   C%=FNATTR(x,L%)
  170   IF C%=1 THEN Y%=1 AND S%=L%
  175 NEXT
  180 IF Y%=1 THEN GOSUB 4000
  185 c=c+1
  187 IF c>400 THEN GOTO 90
  190 q=q-2:COLOUR6:PRINTTAB(w,q);CHR$232;TAB
(w,q+1);" ";TAB(w,q+2);" ";:IF q=0 THEN q=30:
w=x
  200 GOTO 90
 4000  IF S%=11 THEN d=88 ELSE IF S%=10 THEN 
d=96 ELSE IF S%=9 THEN d=104 ELSE IF S%=8 THE
N d=112
 4005  MOVE x*64+24,d*4:PLOT69,0,832-d*4:FOR 
f=35 TO 40:PROCBEEP(f):NEXTf:PLOT71,0,832-d*4
 4100 FOR g=1 TO 2:FOR f=5 TO 0 STEP-1:PRINTT
AB(x-5+f,f)".";TAB(x+5-f,f)".";TAB(x-5+f,10-f
)".";TAB(x+5-f,10-f)".";TAB(x,f);".";TAB(x,10
-f)".";TAB(x+5-f,5)".";TAB(x-5+f,5)"."
 4110 NEXTf:COLOUR0:NEXTg:COLOUR2:PRINTTAB(x,
5)" "
 4130 li=li-1:COLOUR11:PRINTTAB(0,0)"LIVES LE
FT:";li;TAB(12,0)"SCORE:";sc:FOR f=-30 TO 0:P
ROCBEEP(f):NEXTf
 4135 IF li<>0 THEN RETURN
 4137 FOR f=1 TO 4:PROCBEEP(f):PROCBEEP(2*f):
FOR g=1 TO 20:NEXTg:NEXTf
 4140 CLS:PRINTTAB(0,5)"You scored ";sc;" pts
."
 4145 PRINTTAB(0,7)"High score ";hs
 4150  IF sc>hs THEN hs=sc:PRINTTAB(0,9)"CONG
RATULATIONS"
 4160  PRINTTAB(0,11)"ANY KEY TO PLAY"
 4165  *FX15,0
 4170  X=GET:CLS:GOSUB 9110:GOTO70
 5000  sc=sc-1:flag=0:FOR f=7 TO 25
 5010    PRINTTAB(x,f)".":PROCBEEP(1)
 5020    PRINTTAB(x,f)" ":Z=FNATTR(f+1,x):IF 
Z<>0 THEN flag=1
 5025  NEXTf
 5030  Z=FNATTR(x,f+1):IF Z=7 THEN RETURN
 5040  PRINTTAB(x,f+1)" ":FOR d=1 TO 3 :PROCB
EEP(d):NEXT
 5050  IF RND(1)>.4 THEN RETURN
 5055  t=RND(4)+1 
 5060  FOR d=0 TO t:COLOUR7:PRINTTAB(x-d,f+1-
d)CHR$225;TAB(x+d,f+1-d)CHR$225;TAB(x-d,f+1+d
)CHR$225;TAB(x+d,f+1+d)CHR$225
 5070    IF d<t THEN PRINTTAB(x-d,f+1-d)" ";T
AB(x+d,f+1-d)" ";TAB(x-d,f+1+d)" ";TAB(x+d,f+
1+d)" "
 5080  NEXT d:RETURN
 8000 PRINTCHR$141"SPACE TRAFFIC @ Paul Stanl
ey"
 8001 PRINTCHR$141"SPACE TRAFFIC @ Paul Stanl
ey"
 8010 PRINT:PRINT"    You are flying through 
space when   suddenly you encounter an astero
id belt."
 8020 PRINTCHR$130;"Enemy craft will fire at 
you given the":PRINTCHR$130;"chance,and other
 missiles are aimed   ":PRINTCHR$130;"right a
t you."
 8030 PRINT:PRINT"To score you have to recove
r lost       satellites in the process."
 8040  PRINT:PRINTCHR$132;"If you are despara
te you can fire at  ":PRINTCHR$132;"asteroids
, but you lose a satellite in":PRINTCHR$132;"
the process."
 8050  PRINT:PRINT"Move LEFT---Z,RIGHT---X,FI
RE---M"
 8060  PRINT:PRINT"Any key to start.":X=GET:R
ETURN
 9000 VDU23,224,254,124,40,124,40,56,16,16
 9010 VDU23,225,0,48,72,84,72,48,0,0
 9020 VDU23,226,1,2,60,64,160,132,136,129
 9030 VDU23,227,224,152,8,136,70,8,17,145
 9040 VDU23,228,130,144,121,5,4,5,6,3
 9050 VDU23,229,133,3,20,72,16,32,32,192
 9060 VDU23,230,129,66,60,36,36,60,66,129
 9070 VDU23,231,16,16,56,84,84,56,16,124
 9080 VDU23,232,0,16,8,16,32,16,16,56
 9090 VDU23,233,24,54,41,66,169,130,84,56
 9100 VDU23,234,38,91,162,152,130,106,60,4
 9110 a$=CHR$225+" "+CHR$233+" "+CHR$234
 9120 b$="      "
 9130 x=9:c=0:hit=0:sc=0
 9140 q=30:w=x:li=5
 9150 RETURN
10000 DEF FNATTR(X%,Y%)
10010 LOCALA%,B%,R%
10020 C=0
10030 A%=(X%+1)*64-32
10040 B%=(Y%+1)*-32+1032
10050 FOR R%=1 TO 12
10060   Z=POINT(A%+R%,B%+R%)
10070   IF Z<>0 THEN C=Z
10080 NEXT
10090 =C
11000  DEFPROCBEEP(d)
11010 SOUND1,-15,d,1
11020 ENDPROC