5    STRSIZ 16
10   ?TAB(31);"HORSERACE"
20   !THIS PROGRAM IS BASED ON THE HORSE RACE GAME IN BASIC COMPUTER GAMES
25   !IT HAS BEEN CONVERTED TO SCREEN DISPLAY AND MONEY BETTING BY
27   !NANCY HERYFORD AND DON PENLAND, SURPRISE VALLEY HIGH SCHOOL
30   ?:?:?
35   RANDOMIZE
50   DIM S(8),D(10),P(10),W$(10),Q(10),V$(8),M(10),Y(10),MNY(10),TP(10),TM(10)
55   ?"WELCOME TO THE SURPRISE VALLEY SAGEBRUSH RACETRACK"
60   ?"DO YOU WANT DIRECTIONS ?"
70   INPUT X$ : IF X$="N" OR X$="NO" THEN 140
80   ?"UP TO 10 MAY PLAY. A TABLE OF ODDS WILL BE PRINTED."
90   ?"YOU MAY BET UP TO 10,000 ON ONE HORSE.  DURING THE RACE"
100  ?"THE HORSE WILL BE SHOWN BY IT'S NUMBER."
120  ?"THE HORSES WILL RACE DOWN THE SCREEN."
130  ?
140  ?"HOW MANY PEOPLE WANT TO BET ON THE RACE? "
150  INPUT C                         !C=NUMBER OF PLAYERS
160  ?"WHEN ? APPEARS, TYPE IN YOUR NAME."
170  FOR A=1 TO C
180  INPUT W$(A)                     !W$ IS ARRAY FOR PLAYERS NAMES
185  ?W$(A);:INPUT " HOW MUCH DO YOU HAVE TO SPEND ";MNY(A)
187  IF MNY(A)<1 THEN ?"IF YOU DON'T HAVE MORE THAN A DOLLAR YOU ";
188  IF MNY(A)<1 THEN ?"CAN'T PLAY. ":GOTO 185
190  NEXT A                             !MNY IS MONEY TO SPEND ARRAY
200  ?:E=0
210  ?"  HORSE"," ","NUMBER","   ODDS"
215  ?"  ====="," ","======","   ===="
220  ?
230  FOR I=1 TO 8:S(I)=0:TP(I)=0:TM(I)=0:NEXT I
235  RN=0:PLC=0
240  R=0
250  FOR A=1 TO 8
260  LET D(A)=INT(10*RND(1)+1)       !LOAD ARRAY D WITH RANDOM # BETEWWN 1&10
270  NEXT A
280  FOR A=1 TO 8
290  LET R=R+ D(A)                   !FIND SUM OF ARRAY D
300  NEXT A
310  V$(1)="AFFIRMED"
320  V$(2)="SEATTLE SLEW"
330  V$(3)="SECRETARIAT"
340  V$(4)="FOOLISH PLEASURE"        !LOADS ARRAY WITH HORSES NAMES
350  V$(5)="ALYDAR"
360  V$(6)="JACKMAN KLUGMAN"
370  V$(7)="BOLD FORBES"
380  V$(8)="GENUINE RISK"
390  FOR N=1 TO 8
395  OD=R/D(N)
400  ?V$(N);TAB(29);:?USING "#            ####:1",N,OD
410  NEXT N
420  ?:?"IT'S TIME TO PLACE YOUR BETS."
430  FOR J=1 TO C
435  IF W$(J)="" THEN 498
440  ?W$(J);                          !PRINTS PLAYERS NAME
445  INPUT " WHAT IS THE NUMBER OF THE HORSE YOU WANT ";Q(J)
447  IF Q(J)<1 OR Q(J)>8 THEN ?"CHOOSE ONE OF THE HORSES LISTED.":GOTO 440
450  INPUT "HOW MUCH IS YOUR BET ? ";P(J)
455  IF INT(P(J))>INT(MNY(J)) THEN 495
460  IF P(J)<1 THEN 480
470  IF P(J)>10000 THEN 490
475  GOTO 498
480  ?"!!YOU CHEAPSKATE!!--YOU HAVE TO BET AT LEAST A BUCK!":GOTO 440
490  ?"AT THIS TIME THE TRACK WILL NOT LET YOU BET MORE THAN 10,000":GOTO 440
495  ?W$(J);" YOU CAN'T BET THAT MUCH YOU ONLY HAVE $";MNY(J);"."
496  GOTO 440
498  NEXT J
500  ?TAB(-1,0)
510  ?TAB(1,1);" 1 2 3 4 5 6 7 8"
520  ?TAB(2,1);"*****START******"
525  ?TAB(23,1);"*****FINISH*****"
526  ?TAB(1,30);"THE HORSES ARE IN THE STARTING GATE..."
527  FOR I=1 TO 1000:NEXT I
528  ?CHR$(7);TAB(2,30);"AND THEIR OFF !!!"
530  FOR I=1 TO 8
550  M(I)=I
560  Y(M(I))=INT(100*RND(1)+1)
570  IF Y(M(I))<10 THEN 640
580  S=INT(R/D(I)+.5)
590  IF Y(M(I))<(S+17) THEN 650
600  IF Y(M(I))<(S+37) THEN 660
610  IF Y(M(I))<(S+57) THEN 670
620  IF Y(M(I))<(S+77) THEN 680
630  IF Y(M(I))<(S+92) THEN 690
640  Y(M(I))=7 : GOTO 770
650  Y(M(I))=1 : GOTO 770
660  Y(M(I))=2 : GOTO 770
670  Y(M(I))=3 : GOTO 770
680  Y(M(I))=4 : GOTO 770
690  Y(M(I))=5 : GOTO 770
700  Y(M(I))=6
770  NEXT I
780  M=I
790  FOR I=1 TO 8
800  S(M(I))=S(M(I))+Y(M(I))
810  NEXT I
830  FOR L=1 TO 8
840  FOR I=1 TO 8-L
850  IF S(M(I))<(S(M(I+1))) THEN 890
860  H=M(I)
865  M(I)=M(I+1)
870  M(I+1)=H
890  NEXT I
900  NEXT L
902  T=S(M(8))
912 ?TAB(1,1);"                "
920  FOR I=1 TO 8
925  IF E=0 THEN 945
930  RN=TP(I):CN=TM(I)
935  IF RN=2 THEN RN=3
940  ?TAB(RN,CN);"  ";
945  RN=S(M(I)):CN=M(I)*2-1
947  IF RN>23 THEN RN=23
950  IF S(M(I))>23 THEN 1080
955  IF RN=2 THEN RN=3
960  TP(I)=RN:TM(I)=CN
965  ?TAB(RN,CN);M(I);
970  IF PLC=0 AND RN>12 THEN ?TAB(12,25);"IN THE BACKSTRECH IT'S ";V$(M(I))
975  IF PLC=0 AND RN>12 THEN ?TAB(13,25);"IN THE LEAD !!":PLC=1
980  FOR K=1 TO 200:NEXT K
985  NEXT I
990  E=1
1080 IF T<23 THEN 530
1081 ?CHR$(7);:FOR I=1 TO 4:?TAB(23,1);"                ";
1082 FOR K=1 TO 500:NEXT
1083 ?TAB(23,1);"*****FINISH*****";:FOR K=1 TO 500:NEXT K:NEXT I
1084 ?TAB(21,25);"THE WINNER IS HORSE NO.";M(8);",";V$(M(8))
1085 ?TAB(23,25);"IN A MOMENT THE COMPLETE RESULTS:"
1086 FOR K=1 TO 3000:NEXT K
1087 ?TAB(-1,0)
1090 ? "THE RACE RESULTS ARE:"
1100 Z9=1
1110 FOR I=8 TO 1 STEP-1
1120 F=M(I)
1130 ?
1140 ?Z9;"PLACE HORSE NO.";F,"AT  ";:?USING "####:1",R/D(F)
1145 Z9=Z9+1
1150 NEXT I
1160 FOR J=1 TO C
1164 IF W$(J)<>"" THEN 1170
1166 NEXT J
1168 GOTO 1300
1170 FOR J=1 TO C
1175 IF W$(J)="" THEN 1230
1180 IF Q(J)<>M(8) THEN 1223
1200 N=Q(J)
1210 ?:WN=(R/D(N))*P(J)
1220 ?W$(J);:?USING " WINS $$#########.##",WN;:MNY(J)=MNY(J)+WN
1221 ?USING " AND NOW HAS $$#########.##",MNY(J)
1222 GOTO 1230
1223 MNY(J)=MNY(J)-P(J)
1225 ?W$(J);
1226 ?USING" YOU LOST $$######.## AND NOW HAVE $$#########.##",P(J),MNY(J)
1227 IF MNY(J)<1 THEN ?"YOU HAD BETTER QUIT BEFORE YOU LOSE YOUR SHIRT TOO?"
1228 IF MNY(J)<1 AND MNY(J)>0 THEN ?USING "TAKE YOUR .## AND GO HOME",MNY(J)
1229 IF MNY(J)<1 THEN W$(J)="":Q=0:P=0
1230 NEXT J
1232 FOR I=1 TO 8:IF W$(I)<>"" THEN 1240
1234 NEXT I:GOTO 1300
1235 ?
1240 ? "DO YOU WANT TO PLAY THE PONIES AGAIN?"
1250 INPUT "YES OR NO ";O$
1260 IF O$="Y" OR O$="YES" THEN 210
1270 GOTO 9999
1300 ?:?"EVERYONE IS BROKE.  IF YOU STILL WANT TO PLAY THE HORSES"
1310 ?"YOU WILL HAVE TO GET SOMEMORE MONEY."
1320 ?:INPUT" DO YOU STILL WANT TO PLAY ";O$
1330 IF O$="Y" OR O$="YES" THEN 140
1340 ?:?:?"COME BACK AGAIN SOMETIME.  BYE."
9999 END