Newmarket


This is another game with an equestrian flavour, except this time around you'll require the skills of a budding Lester Piggot. There are eight horses in the race, and two things will happen once you have decided which one you want to ride. Firstly, all the other horses will gallop off at the start, leaving you floundering at half speed. You soon discover that your mount is one of those creatures that only pulls its weight when the finishing line is in sight and then it will go twice as fast as anything else on four legs.

The second problem is that the other horses have a (cleverly computed) desire to crowd you out of action. They will tend to close up in front of you and even steer straight at you from the side! There's no steward to protect you in this race, so aim for a gap in the field and hope you will be fast enough to avoid trouble. Any horses colliding with each other are flung randomly sideways and backwards, thus losing valuable speed. OK, you're under starter's orders . . .

    1 REM *** BBC VERSION ***
    2 REM ***  NEWMARKET  ***
   10 REM NEWMARKET...WALWYN
   20 REM HORSERACE GAME
   30 MODE 7
   40 PROCinstructions
   50 PROCcharacters
   60  
   70 REM GET SCREEN READY
   80 MODE 2
   90 *FX9,1
  100 *FX10,1
  110 REM TURN SCREEN BACKGROUND WHITE
  120 VDU 19,0,7,0,0,0 : VDU 19,7,0,0,0
  130 VDU 19,9,6,0,0,0 : VDU 19,8,10,0,0,0
  140 COLOUR 128+9 : PRINTTAB(0,31) : COLOUR 
128
  150 FOR I=1 TO 8 : PRINT TAB(0,I*4-2);I : N
EXT I
  160 COLOUR 128+6 : COLOUR 2
  170 REM WINNING POST
  180 FOR I= 1 TO 30 : PRINT TAB(18,I);CHR$(1
28) : NEXT I
  190 COLOUR 128+9 : COLOUR 7
  200 PRINT TAB(0,0);"CONTROLS:1=UP A=DOWN"
  210 VDU 5
  220 FOR I%=1 TO 8 : PROChorse(I%) : NEXT I%
  230 VDU 4
  240 COLOUR 128+7 : COLOUR 0
  250 REPEAT : PRINT TAB(0,1);SPC(18);CHR$(11
)
  260   INPUT "YOU HORSE 1-8 ",N
  270   UNTIL 0<N AND N<9
  280 COLOUR 128 : COLOUR 7 :PRINT TAB(0,1);S
PC(18)
  290  
  300 REM STAR GAME
  310 VDU 5 : C=1
  320 REPEAT
  330   M=RND(8) : PROCdirection
  340   MX=X(M):MY=Y(M)
  350   IF UP AND Y(M)<949 THEN Y(M)=Y(M)+12 
: X(M)=X(M)-4
  360   IF NOT UP AND Y(M)>107 THEN Y(M)=Y(M)
-12 : X(M)=X(M)-4
  370   IF X(M)<64 THEN X(M)=64
  380   IF C=1 AND X(N)>300 THEN VDU19,9,1,0,
0,0 : C=2
  390   FOR I=1 TO 8
  400     OX=X(I) : OY=Y(I)
  410     IF I=M THEN OX=MX:OY=MY
  420     J=RND(12)+4 : IF I<>N THEN 440
  430     IF C=1 THEN J=J DIV 2 ELSE J=J*2
  440     X(I)=X(I)+J : IFX(I)>1024 THEN X(I)
=1024
  450     IF I=8 THEN 550
  460     FOR J=I+1 TO 8
  470       IFABS(Y(J)-Y(I))>64 THEN 540
  480       IFABS(X(J)-X(I))>128 THEN 540
  490       X=X(J):Y=Y(J)
  500       IF J=M THEN X=MX:Y=MY
  510       PROCbump(J) : PROCerase(X,Y) : PR
OChorse(J)
  520       IF J=M THEN MX=X(J) : MY=Y(J)
  530       PROCbump(I)
  540       NEXT J
  550     PROCerase(OX,OY) : PROChorse(I)
  560     IF I=M THEN MX=X(I) : MY=Y(I)
  570     IF X(I)=1024 THEN PROCwin(I) : RUN
  580     NEXT I
  590   UNTIL FALSE
  600 END
  610  
  620 DEF PROCdirection
  630 UP=1
  640 IF INKEY(-49) THEN UP=TRUE : M=N
  650 IF INKEY(-66) THEN UP=FALSE : M=N
  660 IF UP=1 THEN UP=(RND(2)=2)
  670 IF M=N THEN 690
  680 IF X(M)>X(N)-80 AND ABS(Y(M)-Y(N))<240 
THEN UP=(Y(N)>Y(M))
  690 ENDPROC
  700  
  710 DEF PROCcharacters
  720 DIM X(8),Y(8)
  730 VDU 23,128,&55,&AA,&55,&AA,&55,&AA,&55,
&AA
  740 VDU 23,129,&0,&C1,&6F,&1F,&1F,&7C,&84,&
2
  750 VDU 23,130,&CE,&9D,&FF,&F9,&F8,&C,&32,&
1
  760 REM POSITION HORSES
  770 FOR I=1 TO 8 : X(I)=64 : Y(I)=1060-120*
I
  780   NEXT I
  790 ENDPROC
  800  
  810 DEF PROChorse(I)
  820 MOVE X(I),Y(I) : GCOL 0,I : VDU 129,130
  830 SOUND 0,-8,4,1
  840 ENDPROC
  850  
  860 DEF PROCerase(X,Y)
  870 MOVE X,Y : GCOL 0,0 : VDU 129,130
  880 ENDPROC
  890  
  900 DEF PROCbump(I)
  910 REM HORSE NUMBER 'I' IN COLLISION
  920 X(I)=X(I)-RND(20)-20 : Y(I)=Y(I)+RND(65
)-32
  930 IF X(I)<64 THEN X(I)=64
  940 IF Y(I)<96 THEN Y(I)=96
  950 IF Y(I)>960 THEN Y(I)=960
  960 ENDPROC
  970  
  980 DEF PROCwin(I)
  990 VDU 4
 1000 COLOUR 128+9 : COLOUR 7
 1010 PRINT TAB(0,0);SPC(20)
 1020 IF I=N THEN 1050
 1030 PRINT TAB(0,0);"WINNER = HORSE ";I
 1040 GOTO 1060
 1050 PRINT TAB(0,0);"YOU WON! WELL DONE"
 1060 VDU 5
 1070 FOR I%=1 TO 40
 1080   PROCerase(X(I),Y(I))
 1090   FOR J%=1 TO 300 : NEXT J%
 1100   PROChorse(I)
 1110   FOR J%=1 TO 300 : NEXT J%
 1120   NEXT I%
 1130 PRINT TAB(0,0);"   PRESS ANY KEY   "
 1140 *FX15,1
 1150 A$=GET$
 1160 ENDPROC
 1170  
 1180 DEF PROCinstructions
 1190 PRINT SPC(13);CHR$(129);"NEWMARKET"
 1200 PRINT'"IN THIS HORSE-RACE GAME, YOU RID
E"
 1210 PRINT"ANY HORSE FROM 1-8."
 1220 PRINT"YOU HAVE TO STEER A PATH AVOIDING
 THE"
 1230 PRINT"OTHER HORSES SINCE ANY HORSE IN A
"
 1240 PRINT"COLLISION WITH ANOTHER WILL BE BL
OCKED"
 1250 PRINT"AND FORCED SIDEWAYS AND BACKWARDS
."
 1260 PRINT'"'EASY', YOU MIGHT SAY..."
 1270  PRINTCHR$(130);"BUT";CHR$(135);"YOUR H
ORSE IS A VERY SLOW STARTER"
 1280 PRINT"AND WILL ONLY RUN AT SPEED AFTER 
THE"
 1290 PRINT"SCREEN BORDER TURNS 'RED'. THIS O
CCURS"
 1300  PRINT"WHEN YOU HAVE RIDDEN A THIRD OF 
THE WAY"
 1310 PRINT"DOWN THE TRACK SO YOU WILL ALWAYS
 HAVE"
 1320 PRINT"OTHER HORSES IN FRONT OF YOU."
 1330 PRINT"TO MAKE IT HARDER STILL, ALL HORS
ES"
 1340 PRINT"WITHIN TWENTY FEET OF YOU WILL AT
TEMPT"
 1350 PRINT"TO BLOCK YOUR PATH OR CRASH INTO 
YOU!"
 1360 PRINT'"PUSH LETTER 'A' TO MOVE DOWN THE
 SCREEN"
 1370 PRINT"PUSH NUMBER '1' TO MOVE UP THE SC
REEN."
 1380 PRINT"BEWARE: ANY COURSE ALTERATION WIL
L"
 1390 PRINT"ALSO REDUCE YOUR SPEED!"
 1400  PRINTCHR$(129);"GOOD LUCK!. PRESS ANY 
KEY TO START.";
 1410 *FX15,1
 1420 A$=GET$
 1430 ENDPROC