!***************************************************************************!
! !
! HORSES.BAS !
! Bet on the horses at the track. !
! !
!***************************************************************************!
!Copyright (C) 1986 by Centauri. All Rights Reserved.
!(512) 631-9141
!Written by: Scot Brinkley
!
!Edit History:
!1.0 01-Mar-83 created. /SB
?TAB(-1,0);TAB(-1,29);
FOR CCSI = 1 TO 20
?TAB(12,20);" C E N T A U R I S T A K E S"
FOR CCSII = 1 TO 800 : NEXT CCSII
?TAB(12,20);"C E N T A U R I S T A K E S "
NEXT CCSI
?TAB(12,20);"C E N T A U R I S T A K E S "
?TAB(14,20);" by Scot Brinkley "
FOR CCSIII = 1 TO 10000 : NEXT CCSIII
?TAB(-1,0);TAB(-1,28);
REPLY = " "
?TAB(10,10);"DO YOU PREFER TO ENTER HORSES NAMES, YOURSELF <Y/N> :";:INPUT REPLY
IF UCS(REPLY[1,1]) <> "Y" GOTO AROUND5
RENAME:
CHANGES = " "
?TAB(12,20);"ENTER NAME OF HORSE #1 : ";:INPUT STALL(1) : STALL(1) = "#1 " + STALL(1)
?TAB(13,20);"ENTER NAME OF HORSE #2 : ";:INPUT STALL(2) : STALL(2) = "#2 " + STALL(2)
?TAB(14,20);"ENTER NAME OF HORSE #3 : ";:INPUT STALL(3) : STALL(3) = "#3 " + STALL(3)
?TAB(15,20);"ENTER NAME OF HORSE #4 : ";:INPUT STALL(4) : STALL(4) = "#4 " + STALL(4)
?TAB(16,20);"ENTER NAME OF HORSE #5 : ";:INPUT STALL(5) : STALL(5) = "#5 " + STALL(5)
?TAB(22,1);"ANY CHANGE ";:INPUT CHANGES
IF UCS(CHANGES[1,1]) = "Y" GOTO RENAME
AROUND5:
?TAB(-1,0);TAB(-1,29);
ODDS'CAL:
FOR HOSS = 1 TO 5
REHOSS:
ODDS = INT(RND(HOSS)*100)
IF ODDS <1 OR ODDS >20 GOTO REHOSS
TABLE(HOSS,2) = ODDS
NEXT HOSS
FOR X = 1 TO 10
HYPHEN = HYPHEN + "--------"
NEXT X
XCALL JOBNAM,JOBNAM
XCALL STRIP,JOBNAM
LOOKUP JOBNAM+".RAC",FOUND
IF FOUND CALL OLD'MONEY
IF WINNINGS=0 WINNINGS = 100
BEGIN1:
IF WINNINGS < -200 CALL BIT'THE'BIG'ONE : NO = 99 : GOTO BYE'BYE
COUNTER = COUNTER + 1
RUNS = 0
PLACES = 0
SWITCH = 0
CALL GROUND
IF COUNTER = 1 THEN CALL CROWD : CALL SHOW'BAL
CALL HORSES
CALL BETS
GOTO RACE
! GOTO END
LOOP1:
GROUND:
FOR X = 3 TO 18 STEP 3
?TAB(X,1);HYPHEN[1,78]
NEXT X
FOR ME = 1 TO 5
TABLE(ME,1) = 1
HOSS(ME) = "0"
PLACED(ME) = 0
NEXT ME
RETURN
HORSES:
S = 1
FOR H = 5 TO 17 STEP 3
?TAB(H,1);SPACE(80);
?TAB(H,1);CRITTER1;
IF TABLE(S,2) < 1 THEN TABLE(S,2) = 1
IF TABLE(S,2) >20 THEN TABLE(S,2) = 20
?TAB(H-1,1);STALL(S);" ODDS : ";TABLE(S,2);" TO 1";
S = S + 1
NEXT H
RETURN
CROWD:
FOR A = 1 TO 50
RERAND:
R=INT(RND(A)*100) !: ?TAB(1,60);"ROW = ";R;
C=INT(RND(A)*100) !: ?TAB(2,60);"COL = ";C;
IF R < 1 OR R > 2 GOTO RERAND
IF C < 1 OR C > 78 GOTO RERAND
IF A/30 = INT(A/30) THEN ?TAB(R,C);"~o";: GOTO BYE'CRD
IF A/20 = INT(A/20) THEN ?TAB(R,C);"\o/";: GOTO BYE'CRD
IF A/10 = INT(A/10) THEN ?TAB(R,C);"o|";: GOTO BYE'CRD
?TAB(R,C);"o";
BYE'CRD:
NEXT A
RETURN
BETS:
BET = 0
?TAB(19,1);SPACE(78)
?TAB(19,1);"(Enter 99 to exit)";TAB(-1,28);
?TAB(21,1);"PLACE YOUR BETS : 1) HORSE #";:INPUT NO
BYE'BYE:
IF NO = 99 CALL EXIT
IF NO < 1 OR NO > 5 GOTO BETS
FOR PLACET = 4 TO 16 STEP 3
?TAB(PLACET,4);SPACE(50);
FOR X = 1 TO 800 : NEXT X !Delay loop.
NEXT PLACET
?TAB(19,1);SPACE(20)
REODD:
ODDS = TABLE(NO,2)
IF ODDS <2 THEN ODDS = 2
IF ODDS >20 THEN ODDS = 20
IF ODDS = 2 : GOTO AFTER
?TAB(21,48);"ODDS ON HORSE #";NO;" ARE ";ODDS;"-TO-1";
GOTO WAYAFTER
AFTER:
?TAB(21,48);"ODDS ON HORSE #";NO;" ARE EVEN.";
WAYAFTER:
?TAB(22,1);SPACE(80)
?TAB(22,1);" 2) WAGER $";:INPUT BET
?TAB(23,1);SPACE(35)
IF BET <= 0 GOTO BETS
IF BET > WINNINGS AND WINNINGS > 0 CALL BAD'WAGER : GOTO BETS
PAYOFF = (BET*ODDS)
?TAB(22,48);"PAYOFF : ";PAYOFF USING "$#,###,###,###,###.##";
?TAB(-1,29);
RETURN
RACE:
RUNS = RUNS + 1
OVER:
HORSE = INT(RND(RUNS)*100)
IF HORSE <1 OR HORSE >5 GOTO OVER
SWITCH = 1
FOR TIMES = 1 TO 5
IF HOSS(TIMES) = "0" THEN SWITCH = 0
NEXT TIMES
IF SWITCH = 1 GOTO END
IF HOSS(HORSE) = "1" GOTO OVER
IF (RUNS/2) = INT(RUNS/2) THEN ?TAB((HORSE*3)+2,TABLE(HORSE,1)+4);CRITTER1;: GOTO BYE
?TAB((HORSE*3)+2,TABLE(HORSE,1)+4);CRITTER2;
BYE:
?TAB((HORSE*3)+2,TABLE(HORSE,1));CRITTER'SPACE;
TABLE(HORSE,1) = TABLE(HORSE,1) + 1
IF TABLE(HORSE,1) > 72 THEN HOSS(HORSE) = "1" : PLACES = PLACES + 1 : PLACED(HORSE) = PLACES
IF PLACED(HORSE) = 1 THEN ?TAB(5+(HORSE*3)-3,30);"WIN";: WINNER = HORSE
IF PLACED(HORSE) = 2 THEN ?TAB(5+(HORSE*3)-3,29);"PLACE";: PLACER = HORSE
IF PLACED(HORSE) = 3 THEN ?TAB(5+(HORSE*3)-3,30);"SHOW";: SHOWER = HORSE
IF PLACED(HORSE) = 4 THEN LOSSER1 = HORSE
IF PLACED(HORSE) = 5 THEN LOSSER2 = HORSE
GOTO RACE
END:
FOR SHOW = 1 TO 5
IF PLACED(SHOW) = 1 THEN TABLE(SHOW,2) = (TABLE(SHOW,2)-5)
IF PLACED(SHOW) = 2 THEN TABLE(SHOW,2) = (TABLE(SHOW,2)-2)
IF PLACED(SHOW) = 3 THEN TABLE(SHOW,2) = (TABLE(SHOW,2)-0)
IF PLACED(SHOW) = 4 THEN TABLE(SHOW,2) = (TABLE(SHOW,2)+2)
IF PLACED(SHOW) = 5 THEN TABLE(SHOW,2) = (TABLE(SHOW,2)+5)
NEXT SHOW
IF WINNER = NO THEN ?TAB(19,30);"YOU'RE A WINNER !!!" : WINNINGS = ((WINNINGS + PAYOFF) - BET)
IF PLACER = NO THEN ?TAB(19,30);"YOU PLACED !!! " : WINNINGS = ((WINNINGS + (PAYOFF*.30)) - BET)
IF SHOWER = NO THEN ?TAB(19,30);"YOU SHOWED !!! " : WINNINGS = ((WINNINGS + (PAYOFF*.10)) - BET)
IF NO <> WINNER AND NO <> PLACER AND NO <> SHOWER THEN WINNINGS = (WINNINGS - BET)
IF WINNINGS < 0 GOTO GO'TO1
?TAB(23,1);SPACE(80);
?TAB(23,1);"WINNINGS ARE : $";WINNINGS USING "#,###,###,###.##"
GOTO GO'TO2
GO'TO1:
?TAB(23,1);"LOSSES ARE : $";WINNINGS USING "#,###,###,###.##"
GO'TO2:
?TAB(-1,28);
?TAB(23,65);"CR TO CONTINUE";:INPUT LINE, A$
?TAB(23,50);SPACE(31);
?TAB(21,48);SPACE(33);
?TAB(22,1);SPACE(10);
?TAB(22,48);SPACE(33);
?TAB(21,34);SPACE(2);
?TAB(5,29);SPACE(10);
?TAB(8,29);SPACE(10);
?TAB(11,29);SPACE(10);
?TAB(14,29);SPACE(10);
?TAB(17,29);SPACE(10);
GOTO BEGIN1
BIT'THE'BIG'ONE:
?TAB(18,1);SPACE(80);
?TAB(19,1);SPACE(80);
?TAB(20,1);SPACE(80);
?TAB(21,1);SPACE(80);
?TAB(22,1);SPACE(80);
?TAB(23,1);SPACE(75);
?TAB(20,20);"YOU BIT IT - NO MORE CREDIT (AL WILL BE LOOKING FOR YOU!)"
?TAB(22,20);" LOSSES : ";WINNINGS USING "$ #,###.##"
FOR DELAY = 1 TO 15000 : NEXT DELAY
RETURN
BAD'WAGER:
?TAB(19,30);"CAN'T BET MORE THAN YOU HAVE !"
CALL SHOW'BAL
FOR DELAY = 1 TO 15000 : NEXT DELAY
?TAB(19,20);SPACE(50)
RETURN
SHOW'BAL:
?TAB(23,1);SPACE(80);
?TAB(23,1);"HOLDINGS ARE : $";WINNINGS USING " #,###,###,###.##"
?TAB(22,1);
RETURN
OLD'MONEY:
IF WINNINGS=100 RETURN
OPEN #1,JOBNAM+".RAC",INPUT
INPUT LINE #1,WINNINGS
CLOSE #1
RETURN
EXIT:
?TAB(24,1);TAB(-1,10);TAB(-1,28);
?TAB(24,79);TAB(-1,33);TAB(24,1);TAB(-1,32);
IF WINNINGS>1000 &
?"----------*------- CHICKEN! --------*-------";
IF WINNINGS<0 &
?"<<<<<<<<< YOU'RE IN BIG TROUBLE NOW!!!! >>>>>>>>>";
IF WINNINGS=0 &
?"******* THE BANK WILL OFFER CREDIT IF YOU WANT TO PLAY AGAIN. ****";
IF WINNINGS<1000 AND WINNINGS>0 &
?"^^^^^ SORRY, CAN'T TAKE YOUR WINNINGS WITH YOU! ^^^^";
?CHR(7);
FOR DELAY = 1 TO 10000 : NEXT DELAY
OPEN #1,JOBNAM+".RAC",OUTPUT
PRINT #1,WINNINGS
CLOSE #1
END