Toptrainer


This is a horseracing game in two parts. In the first section players are presented with a board on which their counters are randomly moved by the computer. This offers players the opportunity to buy and sell horses, win or lose money, train their nags and prepare for stage two, the actual race. Prior to the race itself, each player has the chance to decide which of his horses he wants to enter and how he wants to place his bets. After players have issued 'race instructions' to their jockeys, the race is run and the winner collects both the prize money and any returns due from bets placed. At the start of the game each player has £10,000, and throughout the game balances are presented so that you can keep track of your fortunes. Play continues until someone reaches six figures, or until only one player is left in credit.

    1 REM*****BBC VERSION******
    2 REM TOPTRAINER
   10 DATA Ant,Bee,Cola,Dash,Emu,Fox,Gus,Harp
,Ibex,Jinn,Kay,Lina,Mack,Nixy,Olly,Pug
   20 DIMH$(16),H(16),F(16),P(16),A$(8),A(8),
V(2,16),W(2,16),T(16),R(16),S(16),O(16),Q(4,1
6),B(8),D(8)
   30 FORI=1TO16:READH$(I):H(I)=RND(10):O(I)=
-1:NEXT
   40 DATA3,3,3,10,3,17,3,24,8,24,13,24,18,24
,18,17,18,10,18,3,13,3,8,3
   50 FORI=1TO12:READW(1,I),W(2,I):NEXT
   60 FORI=1TO12:V(1,I)=6-(4*((I-1)/4-INT((I-
1)/4))):V(2,I)=12-INT((I-1)/4):NEXT
   70 MODE7:INPUTTAB(0,10)"How many players (
1-8) ? "N
   80 IFN<1 OR N>8 GOTO70
   90 FORI=1TON:PRINT'"Enter name of player "
;I;
  100 INPUTA$(I):A$(I)=LEFT$(A$(I),5):A(I)=10
000:NEXT
  110 CLS:PRINTTAB(12,2)CHR$141;CHR$&82"Top T
rainer"'TAB(12)CHR$141;CHR$&82"Top Trainer"'T
AB(12)CHR$&91;STRING$(13,"`")
  120 PRINT'"You start with `10000 each. Each
 of you is an owner/trainer of horses which y
ou can buy,sell,train up and enter for     ra
ces."
  130 PRINT'"You make money either by winning
 races  or by betting on the horses - yours o
r  someone else's."
  140 PRINT'"Horses improve when they run wel
l but   lose value when they don't. It costs 
   `500 to enter a horse for the race."
  150 PRINT'"If you go bankrupt,you are out o
f the   game."
  160 GOSUB2490
  170 MODE1:VDU28,4,27,35,4,23,255,255,255,25
5,255,255,255,255,255,19,1,4;0;
  180 CLS:M=1:W3=0
  190 FORI=1TON:P(I)=1
  200   LIN=0:COL=0:IFI>4 LIN=1:COL=-4
  210 PRINTTAB(W(2,P(1))+I+COL,W(1,P(I))+LIN)
CHR$(48+I):NEXT
  220 COLOUR0:COLOUR129
  230 PRINTTAB(3,2)"START>"CHR$255"CHANCE"CHR
$255" SALE "CHR$255"TRAIN "
  240 GOSUB2530
  250 PRINTTAB(3,7)"TRAIN ";:COLOUR2:COLOUR12
8:PRINT" BANK BALANCE` ";:COLOUR0:COLOUR129:P
RINT" SALE "
  260 GOSUB2530
  270 PRINTTAB(3,12)"CHANCE";TAB(24,12)"CHANC
E"
  280 GOSUB2530
  290 PRINTTAB(3,17)" SALE "CHR$255"TRAIN "CH
R$255"CHANCE"CHR$255" SALE "
  300 GOSUB2530
  310 COLOUR128:FORJ=1TO8:PRINTTAB(10,7+J)SPC
(13):NEXT
  320 COLOUR3:COLOUR128:FORJ=1TON
  330   PRINTTAB(16,7+J)"        "
  340   PRINTTAB(10,7+J);J" "A$(J);
  350 PRINTTAB(18,7+J);A(J);:NEXT
  360 COLOUR3:PRINTTAB(0,0);A$(M)"'s go..."
  370 THRO=RND(6)
  380 GOSUB2440
  390 PRINTTAB(15,0);THRO
  400 GOSUB2440
  410 LIN=0:COL=0:IFM>4 LIN=1:COL=-4
  420 COLOUR129:PRINTTAB(W(2,P(M))+M+COL,W(1,
P(M))+LIN)" "
  430 X=P(M)+THRO
  440 IFX>12 X=X-12
  450 P(M)=X
  460 LIN=0:COL=0:IFM>4 LIN=1:COL=-4
  470 PRINTTAB(W(2,P(M))+M+COL,W(1,P(M))+LIN)
CHR$(48+M)
  480 COLOUR128
  490 GOSUB2420
  500 IFX=1 GOTO580
  510 IFX=2 ORX=6 ORX=8 ORX=11 GOTO1980
  520 IFX=3 ORX=5 ORX=7 ORX=10 GOTO2030
  530 IFX=4 ORX=9 ORX=12 GOTO2300
  540 GOSUB2420
  550 M=M+1
  560 IFM>N M=1
  570 GOTO320
  580 CLS:PRINT"Someone landed on START, so i
t'stime for a race......"
  590 GOSUB2440:GOSUB2420:R=1:RR=0
  600 FORI=1TON
  610   FORJ=1TO16
  620     IFA(I)<500 GOTO700
  630     IFO(J)<>I GOTO690
  640     CLS:PRINTTAB(0,2)A$(I)
  650     PRINTTAB(0,5)H$(J)" cost `";H(J)*50
0:GOSUB1950
  660     PRINTTAB(0,8)"Will "H$(J)" race tod
ay ?"
  670     GOSUB2450
  680     IFY$="Y" A(I)=A(I)-500:S(J)=1:R=R+1
:X=INT(H(J)+F(J)/2):GOSUB1790
  690   NEXTJ
  700 NEXTI
  710 GOSUB1700
  720 RX=1
  730 M=RND(16):IFW3>400 GOTO1360
  740 IFS(M)=0 ORS(M)=5 W3=W3+1:GOTO730
  750 RR=RR+1:S(M)=5
  760 V(1,RR)=6-(4*((RR-1)/4-INT((RR-1)/4))):
V(2,RR)=12-INT((RR-1)/4)
  770 PRINTTAB(V(2,RR),V(1,RR))CHR$(64+M)
  780 Z=Z+H(M)+F(M)
  790 P(M)=RR
  800 IFR<>RR+1 GOTO730
  810 FORJ=1TO16
  820   IFS(J)<>5 GOTO860
  830   H9=H(J)+F(J):IFH9<=1 H9=1
  840   COLOUR2:PRINTTAB(0,0)"ODDS"TAB(0,RX+1
)LEFT$(H$(J),1)"=";INT(Z/H9)
  850   RX=RX+1
  860 NEXTJ
  870 FORI=1TON
  880   IFA(I)<=0 GOTO1000
  890   PRINTTAB(0,9)A$(I);" BET?(Y/N)"
  900   GOSUB2450
  910   IFY$="N" GOTO1000
  920   PRINT"Horses letter ?";
  930   GOSUB2450:PRINTY$
  940   FORJ=1TO16
  950     IFY$=LEFT$(H$(J),1) B(I)=J
  960   NEXT
  970   INPUT"How much money? "A
  980   IFA(I)-A<0 PRINT"Not enough in"'"the 
kitty!":GOSUB2440:GOTO1000
  990   D(I)=A:A(I)=A(I)-A
 1000   FORJ=9TO14:PRINTTAB(0,J)SPC(21):NEXT,
 1010   GOSUB2420
 1020   GOSUB1760
 1030   W=0:FORJ=1TO16
 1040     JA=P(J)
 1050     IFS(J)<>5 GOTO1200
 1060     R(JA)=1:IFV(2,JA)>24 R(JA)=2
 1070     IFV(1,JA)>16 R(JA)=3
 1080     IFR(JA)=3 ANDV(2,JA)<10 R(JA)=4
 1090     M=RND(5)-1
 1100     IFM>2 GOTO1130
 1110     IFM=2 ANDQ(R,JA),JA)>0 Q(R(JA),JA)=
Q(R(JA),JA)-1:GOTO1130
 1120     GOTO1200
 1130     ONR(JA) GOSUB1370,1410,1440,1440
 1140     IFM=1 GOTO1200
 1150     PRINTTAB(V(2,JA),V(1,JA))" "
 1160     V(1,JA)=V(1,JA)+Y
 1170     V(2,JA)=V(2,JA)+X
 1180     PRINTTAB(V(2,JA),V(1,JA))LEFT$(H$(J
),1)
 1190     IFR(JA)=4 ANDV(2,JA)<5 W=J
 1200   NEXTJ
 1210   IFW=0 GOTO1030
 1220   GOSUB2420
 1230   PRINTTAB(0,0)"The winner is ";H$(W):E
$=H$(W)
 1240   R=RR*1000
 1250   PRINTTAB(0,1)A$(O(W))" gets `";R" pri
ze":A(O(W))=A(O(W))+R
 1260   GOSUB2480
 1270   GOSUB2420
 1280   Z=INT(Z/(H(W)+F(W))):IFZ<1 Z=1
 1290   GOSUB1470:PRINTTAB(0,2)E$" won at odd
s of ";Z" to 1"
 1300   FORK=1TON
 1310     IFB(K)=W A(K)=A(K)+B(K)*Z+B(K):PRIN
TA$(K)"'s bet wins"
 1320   NEXTK
 1330   GOSUB2480
 1340   R=1:RR=1
 1350   FORJ=1TO16:R(J)=1:S(J)=0:P(J)=0:NEXT
 1360   CLS:GOTO170
 1370   X=1
 1380   FORY=1 TO-1 STEP-1:IFFNAT(V(2,JA)+X,V
(1,JA)+Y)=32 RETURN
 1390   NEXTY
 1400   M=1:RETURN
 1410   Y=1
 1420   FORX=-1TO1:IFFNAT(V(2,JA)+X,V(1,JA)+Y
)=32 RETURN
 1430   NEXTX:M=1:RETURN
 1440   X=-1
 1450   FORY=1TO-1 STEP-1:IFFNAT(V(2,JA)+X,V(
1,JA)+Y)=32 RETURN
 1460   NEXTY:M=1:RETURN
 1470   GOSUB2420
 1480   PRINTTAB(0,0)"Form changes as result 
of race"
 1490   FORI=0TO15:PRINTSPC(31):NEXT:PRINTTAB
(0,3);
 1500   RX=0
 1510   FORJ=1TO11
 1520     FORI=1TO3
 1530       IFFNAT(2+J,15+I)=32 GOTO1600
 1540       X=FNAT(2+J,15+I)-64
 1550       RX=RX+1
 1560       PRINTRX" ";H$(X);
 1570       IFJ>=9 PRINT"Will lose points";
 1580       PRINT
 1590       F(X)=F(X)+INT((13-J)*.75)
 1600     NEXT,
 1610     PRINT'''"Any horse not mentioned sh
ould  have stayed at home."
 1620     GOSUB2440:GOSUB2490:CLS
 1630     PRINTTAB(0,4)"Horse  Owner  ` befor
e  ` now"
 1640     FORI=1TO16:IFS(I)<>5 GOTO1680
 1650       F(I)=F(I)-4
 1660       PRINTTAB(0,I+5)H$(I);TAB(7,I+5)A$
(O(I))
 1670       PRINTTAB(14,I+5);T(I);TAB(22,I+5)
;H(I)*500+F(I)*250
 1680     NEXTI
 1690     RETURN
 1700     CLS:PRINTTAB(8,2)STRING$(19,"T");TA
B(8,7)STRING$(15,"T");TAB(0,15)STRING$(24,"T"
);TAB(0,19)STRING$(28,"T")
 1710     FORI=2TO19:PRINTTAB(27,I)"T":NEXT
 1720     FORI=7TO15:PRINTTAB(23,I)"T":NEXT
 1730     FORI=3TO6:PRINTTAB(14,I)"T":NEXT
 1740     PRINTTAB(4,15)"O"TAB(13,15)" "
 1750     RETURN
 1760     FORI=0 TO6:PRINTTAB(14,I)" ":NEXT
 1770     FORI=1TO16:T(I)=INT(H(I)*500+F(I)*2
50):NEXT
 1780     RETURN
 1790     IFX<=0 PRINT"This horse is badly of
f form":GOTO1930
 1800     PRINT"Points available for race..."
;X
 1810     FORM=1TO4
 1820       IFM=4 PRINT"The 4th quarter must 
be ";X:Q(M,J)=X:GOTO1910
 1830       PRINT"Orders for quarter no.";M;"
 (0-9)";
 1840       GOSUB2450
 1850       IFASC(Y$)<48 ORASC(Y$)>57 GOTO184
0
 1860       B=VAL(Y$)
 1870       X=X-B
 1880       IFX<0 B=B+X:X=0
 1890       PRINT;B
 1900       Q(M,J)=B
 1910     NEXTM
 1920     GOTO2480
 1930     GOSUB2480
 1940     FORM=1TO4:Q(M,J)=0:NEXT:RETURN
 1950     PRINT"Current value `":F(J)*250+H(J
)*500
 1960     IF(F(J)*250+H(J)*500)<=0 PRINT"Whic
h is bad news!!"
 1970     RETURN
 1980     X=RND(6)
 1990     X=-250*X
 2000     IFRND(1)>.5 X=-X
 2010     A(M)=A(M)+X
 2020     GOTO540
 2030     PRINTTAB(0,0)"Do you wish to sell a
 horse?":GOSUB2450
 2040     IFY$="N" GOTO2210
 2050     GOSUB2420
 2060     FORI=1TO16
 2070       IFO(I)<>M GOTO2200
 2080       PRINTTAB(0,0)"Do you wish to sell
 ";H$(I):GOSUB2450
 2090       IFY$="N" GOTO2190
 2100       GOSUB2420:BB=INT(H(I)*500+F(I)*25
0):IFBB<0 BB=0
 2110       PRINTTAB(0,0)H$(I)" Cost `";H(I)*
500" Now worth `";BB
 2120       INPUTTAB(0,1)"Buyer no. (if none 
type 0)"B
 2130       GOSUB2430
 2140       IFB=0 GOSUB2420:PRINTTAB(0,0)"OK,
 I'll take it for `";BB:GOSUB2440
 2150       IFB=0 O(I)=-1:A(M)=A(M)+BB:GOTO21
90
 2160       IFB>N GOTO2120
 2170       INPUTTAB(0,1)"At what price `"A
 2180       O(I)=B:A(M)=A(M)+A:A(B)=A(B)-A
 2190       GOSUB2420
 2200     NEXTI
 2210     OFER=RND(15)
 2220     IFO(OFER)<>-1 GOTO2210
 2230     GOSUB2420
 2240     PRINTTAB(0,0)"I'll sell you "H$(OFE
R)" for `";H(OFER)*500
 2250     GOSUB2450
 2260     GOSUB2420
 2270     IFY$<>"Y" GOTO540
 2280     PRINTTAB(0,0)"OK-Done"
 2290     O(OFER)=M:A(M)=A(M)-H(OFER)*500:GOT
O540
 2300     FORI=1TO16
 2310       IFO(I)<>M GOTO2400
 2320       IFA(M)<0 PRINTTAB(0,0)"You're BAN
KRUPT":GOSUB2440:GOSUB2420:GOTO2400
 2330       PRINTTAB(0,0)"How much money to t
rain ";H$(I)
 2340       INPUTTAB(0,1)"` "A
 2350       IFA(M)-A<0 GOSUB2420:PRINTTAB(0,0
)"Not enough cash in the kitty!":GOSUB2440:GO
TO2390
 2360       X=RND(5)+1
 2370       B=INT(X+A/3000):IFB>5 B=5
 2380       F(I)=F(I)+B:A(M)=A(M)-A
 2390       GOSUB2420
 2400     NEXTI
 2410     GOTO540
 2420     PRINTTAB(0,0)SPC(32)
 2430     PRINTTAB(0,1)SPC(32):RETURN
 2440     TIME=0:REPEATUNTILTIME>200:RETURN
 2450     *FX15
 2460     Y$=GET$
 2470     RETURN
 2480     PRINTTAB(0,0)"Press any key to cont
inue.":GOTO2450
 2490     PRINTTAB(0,22)"Press any key."
 2500     GOTO2450
 2510     PRINT''"cashless............"
 2520     RETURN
 2530     FORI=1TO3:PRINTCHR$255;CHR$255;CHR$
255;STRING$(4,"      "+CHR$255):NEXT:RETURN
 2540     C%=POS:D%=VPOS
 2550     VDU31,X%,Y%
 2560     A%=135:A%=USR&FFF4 AND&FFFF
 2570     VDU31,C%,D%
 2580     =A% DIV256