Motocross


Motocross consists of two games. In the first a motorcycle races across the screen from left to right, continuing down through several leves, and must leap over obstacles placed in its path.

In the second game, Stunt-Cycle, the motorcycle leaps over a line of buses and must be landed on the other side without loss of control. After each successful leap the number of buses is increased.

    1 REM *** BBC VERSION ***
    2 REM *** MOTOCROSS ***
   10  CLS:MODE1:VDU 23,1,0;0;0;0;
   20  LET HS=1000:LET WR=4
   30  GOSUB 620
   40  GOSUB 660
   50  CLS
   60  GOSUB 270
   70  FOR F=10TO-10 STEP-1:SOUND2,-12,F*3+(1
4-F),1:NEXT
   80  TIME=0
   90  COLOUR3:VDU31,X+4,Y+5,32,141
  100  FOR F=1TOS:NEXT
  110  X=X+1:IF X=31 THEN VDU31,35,Y+5,32:X=0
:Y=Y+5:IF Y=25 THEN GOTO 220
  120  IF FNSC(X+5,Y+5)<>32 THEN GOSUB 160
  130  IF INKEY$(10)="J" THEN GOTO 170
  140  S=S-(INKEY$(10)="D")+(INKEY$(10)="A"):
IF S<1 THEN S=1
  150  GOTO 90
  160  IF INKEY$(50)="J" THEN GOTO 190
  170  C=141:FOR F=X TO 30:VDU31,F+4,Y+5,32,C
:C=C-(C<145)+3*(C=144):SOUND2,-12,2*(F+6)+27,
2:NEXT
  180  CLS:COLOUR1:PRINTTAB(5,7)"Bad Luck! Yo
u crashed.":GOTO 700
  190  VDU31,X+4,Y+5,32,31,X+6,Y+4,141
  200  FOR F=1TO5:SOUND2,-14,50+25*F,1:NEXT
  210  VDU31,X+6,Y+4,32,31,X+7,Y+5,141:X=X+3:
RETURN
  220  T1=TIME:T=INT(T1/100):CLS
  230  PRINTTAB(5,6)"Your Time Was ";T;" Seco
nds."
  240  IF T<HS THEN COLOUR1:PRINTTAB(5,8)"Tha
t Is A New Fast Time!":HS=T
  250  PRINTTAB(5,10)"The Best Time Is ";HS;"
 Seconds."
  260  GOTO 700
  270  FOR G=21TO6 STEP -5:COLOUR1
  280  Z1=RND(20):Z2=RND(20):IF ABS(Z2-Z1)<3 
THEN GOTO 280
  290  VDU31,Z1+9,G+4,152,145,31,Z2+9,G+4,152
,145:COLOUR2:FOR F=0TO31:VDU31,F+4,G+5,151:NE
XT:NEXT
  300  Y=5:X=0:S=20
  310  RETURN
  320  BUSES=5:CLS
  330  Y=5:X=0:S=10
  340  COLOUR3:PRINTTAB(15,5);BUSES;" BUSES"
  350  GOSUB 590
  360  VDU31,X+4,Y+5,32,141
  370  FOR F=1TO S:NEXT
  380  X=X+1:IF X=31 THEN VDU31,35,Y+5,32:X=0
:Y=Y+5
  390  IF FNSC(X+5,Y+5)<>32 THEN GOTO 420
  400  S=S-(INKEY$(10)="D")+(INKEY$(10)="A"):
IF S<1 THEN S=1
  410  GOTO 360
  420  VDU31,X+4,Y+5,32,31,X+5,Y+4,141:FOR F=
1TO3:SOUND2,-12,F*F+80,1.:NEXT
  430  VDU31,X+4,Y+5,32,31,X+5,Y+4,141:FOR F=
1TO3:SOUND2,-12,F*F+80,1.:NEXT
  440  VDU31,X+5,Y+4,32,31,X+6,Y+3,141:SOUND2
,-12,53,2.
  450  X=X+2:FOR F=X TO (X+20-S):SOUND2,-12,8
5,1.:VDU31,F+4,Y+3,32,141:NEXT
  460  VDU31,F+4,Y+3,32,31,F+5,Y+4,141:SOUND2
,-12,85,1.
  470  IF FNSC(F+5,Y+5)<>148 THEN IF FNSC(F+5
,Y+5)<>149 THEN IF FNSC(F+5,Y+5)<>150 THEN GO
TO 540
  480  FOR X=F+1 TO30:VDU31,X+4,Y+4,32,141
  490    SOUND2,-12,89,1
  500    IF FNSC(X+5,Y+5)=32 THEN VDU31,X+5,Y
+4,32:Y=Y+1
  510    NEXT
  520  CLS:BUSES=BUSES+1
  530  GOTO 330
  540  VDU31,F+5,Y+4,32:C=141:FOR X=F+1 TO 31
:SOUND2,-12,20,1:VDU31,X+4,Y+5,32,C:C=C-(C<14
5)+3*(C=144):NEXT
  550  CLS:PRINTTAB(4,5)"You Failed In Your A
ttempt":PRINTTAB(4,6)"At ";BUSES;" BUSES."
  560  IF BUSES-1>WR THEN COLOUR1:PRINTTAB(4,
8)"However, Your Successful Jump ":PRINTTAB(4
,9)"Over ";BUSES-1;" Buses Is A":PRINTTAB(4,1
0)"New World Record!!!!":WR=BUSES-1
  570  PRINTTAB(4,12)"The World Record Is ";W
R;" Buses."
  580  GOTO 700
  590  FOR F=21TO6 STEP-5:FOR G=0TO31:COLOUR2
:VDU31,G+4,F+5,151:NEXT:NEXT
  600  COLOUR3:VDU31,8,25,146:FOR F=1TO BUSES
:COLOUR1:VDU31,8+F,25,147:NEXT:COLOUR3:VDU31,
8+F,25,148,149,150
  610  RETURN
  620  VDU23,141,32,62,50,254,152,90,231,66:V
DU23,142,2,119,82,92,124,242,23,26:VDU23,143,
66,231,90,25,127,76,124,4:VDU23,144,88,232,79
,62,58,74,238,64
  630  VDU23,145,0,0,0,0,0,32,112,248:VDU23,1
46,1,3,7,15,31,63,127,255:VDU23,147,126,66,12
6,126,66,126,126,36:VDU23,148,224,252,255,255
,255,255,255,255:VDU23,149,0,0,128,240,254,25
5,255,255:VDU23,150,0,0,0,0,0,192,248,255
  640  VDU23,151,255,255,255,255,0,0,0,0:VDU2
3,152,0,0,0,0,0,0,4,0
  650  RETURN
  660  LET A$="MOTOCROSS":PRINTTAB(14,26)A$:C
OLOUR1:FOR F=1TO9:FOR G=20TO0 STEP-1:SOUND2,-
12,F*3+53,1:PRINTTAB(F+13,G+5) MID$(A$,F,1):V
DU31,F+13,G+6,32:NEXT:NEXT:FOR I=1TO1000:NEXT
  670  FOR F=4TO34:SOUND2,-12,47,1.5:COLOUR2:
VDU 31,F,7,32,141:FOR J=1TO100:NEXT:NEXT:VDU3
1,35,7,32
  680  PRINTTAB(4,7) "This Program Consists O
f Two":PRINTTAB(4,8) "Motorbike Games.":COLOU
R1:PRINTTAB(4,10) "For  ""Moto-cross"", jump 
with J":PRINTTAB(4,11) "only when you reach t
he obstacle"
  690  COLOUR3:PRINTTAB(4,14)"For both progra
ms, acceleration":PRINTTAB(4,15)"and decelara
tion are possible":PRINTTAB(4,16)"by holding 
A or D."
  700  COLOUR1:PRINTTAB(4,18)"Press the key w
hich corresponds":PRINTTAB(4,19)"to what you 
want to do."
  710  COLOUR2:PRINTTAB(4,21)"1...Moto-cross"
:COLOUR1:PRINTTAB(4,22)"2...Stunt-cycle":COLO
UR3:PRINTTAB(4,23)"3...Exit from the program.
"
  720  G$=GET$
  730  IF G$="1" THEN GOTO 50
  740  IF G$="2" THEN GOTO 320
  750  IF G$="3" THEN STOP
  760  GOTO 720
  770  DEF FNSC(X,Y):LOCAL A%,LASTX,LASTY,C:L
ASTX=POS:LASTY=VPOS:VDU31,X,Y:A%=135:C=USR(&F
FF4):C=C AND &FFFF:C=C DIV &100:VDU31,LASTX,L
ASTY:=C