10 REM Race12 20 REM by Graham Kendall 30 : 40 GOSUB 130 :REM Init_1 Routine 50 WHILE NEWGAME% = 0 60 GOSUB 310 REM Init_2 Routine 70 GOSUB 360 :REM Input Horse Routine 80 GOSUB 1160 :REM Decide Bet Routine 90 GOSUB 7000 :REM Ask Question Routine 100 WEND 110 END 120 : 130 REM Init_1 Routine 140 DIM QUES$(3), HEADINGS1$(5), HEADINGS2$(5), HORSES$(100), ODDS%(100,2), STAKE(100,2), TAX(100,2), WIN(100,2) 150 FOR I% = 1 TO 3:READ QUES$(I%):NEXT I% 160 FOR I% = 1 TO 5:READ HEADINGS1$(I%):NEXT I% 170 FOR I% = 4 TO 5:READ HEADINGS2$(I%):NEXT I% 180 SCRHEAD1$ = LEFT$("No " + HEADINGS1$(1) + STRING$(28," "),28) 190 FOR I% = 2 TO 5 200 IF I% = 4 THEN GAP% = 20 ELSE GAP% = 10 210 SCRHEAD1$ = SCRHEAD1$ + LEFT$(HEADINGS1$(I%) + STRING$(GAP%," "),GAP%) 220 NEXT I% 230 SCRHEAD2$ = STRING$(44," ") 240 GAP% = 19 250 FOR I% = 4 TO 5 260 REM IF I% = 4 THEN GAP% = 17 270 SCRHEAD2$ = SCRHEAD2$ + LEFT$(HEADINGS2$(I%) + STRING$(GAP%," "),GAP%) 280 NEXT I% 290 RETURN 300 : 310 REM Init_2 Routine 320 PREVHORSE$ = "" 330 HORSECNT% = 1 340 RETURN 350 : 360 REM Input Horse Routine 370 ACROSS% = 5 380 WHILE HORSES$(HORSECNT% -1) <> "end" 390 CLS:DOWN% = 4:ACROSS% = 5:TEXT$ = "Last Horse Entered was " + PREVHORSE$ 400 IF PREVHORSE$ <> "" THEN GOSUB 5500 :REM Print Text Routine 410 GOSUB 6500 :REM Print Heading Routine 420 TEXT$ = QUES$(1) 430 ACROSS% = 5:DOWN% = 6:GOSUB 5500 :REM Print Text Routine 440 INPUT HORSES$(HORSECNT%) 450 TEXT$ = LEFT$(QUES$(1) + STRING$(30," "),30) + " - " + HORSES$(HORSECNT%) 460 GOSUB 5500 :REM Print Text Routine 470 IF HORSES$(HORSECNT%) <> "end" THEN GOSUB 540 :REM Odds Input Routine 480 PREVHORSE$ = HORSES$(HORSECNT%) 490 HORSECNT% = HORSECNT% +1 500 WEND 510 HORSECNT% = HORSECNT% -2 520 RETURN 530 : 540 REM Odds Input Routine 550 ACROSS% = 5:DOWN% = 6 560 FOR P% = 1 TO 2 570 DOWN% = DOWN% +1 580 ODDS%(HORSECNT%,P%) = -1 590 WHILE ODDS%(HORSECNT%,P%) <1 600 TEXT$ = QUES$(P% +1) 610 GOSUB 5500 :REM Print Text Routine 620 INPUT ODDS%(HORSECNT%,P%) 630 WEND 640 TEXT$ = LEFT$(QUES$(P% +1) + STRING$(30," "),30) + " -" + STR$(ODDS%(HORSECNT%,P%)) 650 GOSUB 5500 :REM Print Text Routine 660 NEXT P% 670 GOSUB 700 :REM Calculate Money Routine 680 RETURN 690 : 700 REM Calculate Money Routine 710 FOR P% = 1 TO HORSECNT% 720 STAKE(P%,1) = INT((ODDS%(P%,2) / (ODDS%(P%,1) + ODDS%(P%,2)) *100)*100)/100 730 STAKE(P%,2) = STAKE(P%,1) 740 TAX(P%,1) = INT((STAKE(P%,1) + (STAKE(P%,1)/10))*100)/100 750 TAX(P%,2) = TAX(P%,1) 760 WIN(P%,1) = INT((STAKE(P%,1) + (STAKE(P%,1)/ODDS%(P%,2)) * ODDS%(P%,1))*100)/100 770 WIN(P%,2) = WIN(P%,1) 780 NEXT P% 790 RETURN 800 : 810 REM Display Race Routine 820 GOSUB 1100 :REM Screen Headings Routine 830 TOTSTAKE = 0:TOTTAX = 0 840 LINECNT% = 0 : LINEDOWN% = 4 850 FOR P% = 1 TO HORSECNT% 860 TOTSTAKE = TOTSTAKE + STAKE(P%,1) : TOTTAX = TOTTAX + TAX(P%,1) 870 TEXT$ = LEFT$(MID$(STR$(P%),2,2) + STRING$(3," "),3) 880 TEXT$ = TEXT$ + LEFT$(HORSES$(P%) + STRING$(23," "),23) 890 TEXT$ = TEXT$ + RIGHT$(STRING$(4," ") + MID$(STR$(ODDS%(P%,1)),2,LEN(STR$(ODDS%(P%,1))) -1),4) 900 TEXT$ = TEXT$ + "-" 910 TEXT$ = TEXT$ + LEFT$(MID$(STR$(ODDS%(P%,2)),2,2) + STRING$(7," "),7) 920 TEXT$ = TEXT$ + LEFT$(MID$(STR$(STAKE(P%,1)),2,5) + STRING$(10," "),10) 930 TEXT$ = TEXT$ + LEFT$(MID$(STR$(TAX(P%,1)),2,5) + STRING$(20," "),20) 940 TEXT$ = TEXT$ + LEFT$(MID$(STR$(WIN(P%,1)),2,5) + STRING$(10," "),10) 950 LINEDOWN% = LINEDOWN% +1:DOWN% = LINEDOWN% 960 LINECNT% = LINECNT% +1 970 GOSUB 5500 :REM Print Text Routine 980 IF LINECNT% = INT(LINECNT%/14)*14 THEN LINEDOWN% = 4: LINECNT% = 0:GOSUB 1730: GOSUB 1100 :REM More Follows and Screen Headings Routine 990 NEXT P% 1000 TEXT$ = "Totals" + STRING$(5," ") 1010 TEMP% = (INSTR(STR$(TOTSTAKE),".") +1) 1020 IF TEMP% = 1 THEN TEMP% = LEN(STR$(TOTSTAKE)) 1030 TEXT$ = TEXT$ + LEFT$(MID$(STR$(TOTSTAKE),2,TEMP%) + STRING$(10," "),10) 1040 TEMP% = (INSTR(STR$(TOTTAX),".") +1) 1050 IF TEMP% = 1 THEN TEMP% = LEN(STR$(TOTTAX)) 1060 TEXT$ = TEXT$ + LEFT$(MID$(STR$(TOTTAX),2,TEMP%) + STRING$(10," "),10) 1070 DOWN% = 20 : ACROSS% = 28 :GOSUB 5500 :REM Print Text Routine 1080 RETURN 1090 : 1100 REM Screen Headings Routine 1110 CLS:GOSUB 6500 :REM Print Heading Routine 1120 TEXT$ = SCRHEAD1$:ACROSS% = 1:DOWN% = 3: GOSUB 5500 :REM Print Text Routine 1130 TEXT$ = SCRHEAD2$:ACROSS% = 1:DOWN% = 4: GOSUB 5500 :REM Print Text Routine 1140 RETURN 1150 : 1160 REM Decide Bet Routine 1170 OPT$ = "" 1180 WHILE (OPT$ <> "E") AND (OPT$ <> "e") 1190 GOSUB 810 :REM Display Race Routine 1200 TEXT$ = LEFT$("(D)elete a Horse, (E)xit, (R)einstate a Horse or (S)tart Again" + STRING$(79," "),79) 1210 DOWN% = 21:ACROSS% = 1:GOSUB 5500 :REM Print Text Routine 1220 OPT$ = "" 1230 WHILE INSTR(" DdEeRrSs",OPT$) <2 1240 OPT$ = INKEY$ 1250 WEND 1260 IF (OPT$ = "D") OR (OPT$ = "d") THEN GOSUB 1320 :REM Delete Horse Routine 1270 IF (OPT$ = "R") OR (OPT$ = "r") THEN GOSUB 1450 :REM Re-instate Horse Routine 1280 IF (OPT$ = "S") OR (OPT$ = "s") THEN GOSUB 1580 :REM Start Again Routine 1290 WEND 1300 RETURN 1310 : 1320 REM Delete Horse Routine 1330 HORSENUM% = -1 1340 WHILE (HORSENUM% < 1) OR (HORSENUM% > HORSECNT%) 1350 TEXT$ = "Please enter the number of the horse you would like to delete " 1360 TEXT$ = LEFT$(TEXT$ + "(1 to" + STR$(HORSECNT%) + ")" + STRING$(79," "),79) 1370 DOWN% = 21:ACROSS% = 1:GOSUB 5500 :REM Print Text Routine 1380 INPUT HORSENUM% 1390 WEND 1400 STAKE(HORSENUM%,1) = 0 1410 TAX(HORSENUM%,1) = 0 1420 WIN(HORSENUM%,1) = 0 1430 RETURN 1440 : 1450 REM Re-instate Horse Routine 1460 HORSENUM% = -1 1470 WHILE (HORSENUM% < 1) OR (HORSENUM% > HORSECNT%) 1480 TEXT$ = "Please enter the number of the horse you would like to re-instate " 1490 TEXT$ = LEFT$(TEXT$ + "(1 to" + STR$(HORSECNT%) + ")" + STRING$(79," "),79) 1500 DOWN% = 21:ACROSS% = 1:GOSUB 5500 :REM Print Text Routine 1510 INPUT HORSENUM% 1520 WEND 1530 STAKE(HORSENUM%,1) = STAKE(HORSENUM%,2) 1540 TAX(HORSENUM%,1) = TAX(HORSENUM%,2) 1550 WIN(HORSENUM%,1) = WIN(HORSENUM%,2) 1560 RETURN 1570 : 1580 REM Start Again Routine 1590 FOR P% = 1 TO HORSECNT% 1600 STAKE(P%,1) = STAKE(P%,2) 1610 TAX(P%,1) = TAX(P%,2) 1620 WIN(P%,1) = WIN(P%,2) 1630 NEXT P% 1640 RETURN 1650 : 1730 REM More Follows Routine 1740 TEXT$ = "More Follows" 1750 DOWN% = 21:ACROSS% = 60:GOSUB 5500 :REM Print Text Routine 1760 GOSUB 6000 :REM Press Space Routine 1770 RETURN 1780 : 5000 REM Print Centred Text Routine 5010 PRINT CHR$(11) 5020 FOR I% = 1 TO DOWN% -1:PRINT CHR$(10);:NEXT 5030 ACROSS% = (79-LEN(TEXT$))/2 5040 PRINT TAB(ACROSS%);TEXT$ 5050 RETURN 5060 : 5500 REM Print Text on Screen Routine 5510 PRINT CHR$(11) 5520 FOR I% = 1 TO DOWN% -1:PRINT CHR$(10);:NEXT 5530 PRINT TAB(ACROSS%);TEXT$ 5540 RETURN 5550 : 6000 REM Press Space Routine 6010 TEXT$ = "Press Space to Continue" 6020 DOWN% = 22:GOSUB 5000 : REM Centre Text Routine 6030 WHILE INKEY$ <> " " 6040 WEND 6050 RETURN 6060 : 6500 REM Print Heading Routine 6510 TEXT$ = "Racing Program 12" 6520 DOWN% = 2:GOSUB 5000 : REM Centre Text Routine 6530 RETURN 6540 : 7000 REM Ask Question Routine 7010 A% = 0 7020 WHILE A% = 0:CLS:GOSUB 6500 :REM Print Heading Routine 7030 TEXT$ = "Do you want to play again?" 7040 DOWN% = 10:GOSUB 5000 :REM Centre Text Routine 7050 A$ = "" 7060 WHILE INSTR(" YyNn",A$) <2 7070 A$ = INKEY$ 7080 WEND 7090 A% = INSTR("YyNn",A$) 7100 WEND 7110 IF A%=3 OR A%=4 THEN NEWGAME% = -1 7120 RETURN 7130 : 7140 DATA "Name or number of the horse" 7150 DATA "Left hand side of the odds" 7160 DATA "Right hand side of the odds" 7170 : 7180 DATA "Horse Name or Number" 7190 DATA "Odds" 7200 DATA "Stake" 7210 DATA "Bet" 7220 DATA "Return" 7230 : 7240 DATA "(inclu tax)" 7250 DATA "(inclu stake)"