'===========================================================================
' Subject: BOX-CAR RACES                      Date: 03-18-96 (18:06)       
'  Author: Justin Pasher                      Code: QB, QBasic, PDS        
'  Origin: FidoNet QUIK_BAS Echo            Packet: GAMES.ABC
'===========================================================================
'Try this code. Maybe looks a little nicer. I wrote this about 3 yrs ago
'and haven't looked at it since, so many improvements can be made.
ON ERROR GOTO 55000
MONEY = 50
1000000 CLS
SCREEN 8
PRINT "                          WELCOME TO THE BOX-CAR RACES  v1.3"
PRINT : PRINT "                          TODAY'S ODDS ARE AS FOLLOWS:"
 LOCATE 2, 1: PRINT "$"; STR$(MONEY); ".00"
RANDOMIZE TIMER
DEF FNODD1 = INT(10 * RND) + 1
DEF FNODD2 = INT(10 * RND) + 1
DEF FNODD3 = INT(10 * RND) + 1
DEF FNODD4 = INT(10 * RND) + 1
DEF FNODD5 = INT(10 * RND) + 1
A = FNODD1
B = FNODD2
C = FNODD3
D = FNODD4
E = FNODD5
COLOR 2
PRINT : PRINT "BOX #1 : "; A; " TO 1"
COLOR 3
PRINT : PRINT "BOX #2 : "; B; " TO 1"
COLOR 5
PRINT : PRINT "BOX #3 : "; C; " TO 1"
COLOR 6
PRINT : PRINT "BOX #4 : "; D; " TO 1"
COLOR 8
PRINT : PRINT "BOX #5 : "; E; " TO 1"
COLOR 15
IF MONEY = 1 THEN BET = 1: GOTO 24
23 LOCATE 14, 10: PRINT "                                              "
LOCATE 14, 1: PRINT "WHAT IS YOUR BET (IN DOLLAR AMOUNTS ONLY, " + "<ENTER> for ALL)--->";
INPUT BET
IF BET = 0 THEN BET = MONEY
IF BET > MONEY THEN
   LOCATE 16, 1: PRINT "YOU DON'T HAVE "; STR$(BET); " DOLLAR(S)!"
   GOSUB 50000: LOCATE 16, 1
   PRINT "                                         ": LOCATE 14, 65
   PRINT "        ": GOTO 23
ELSE IF BET < 0 GOTO 27
END IF
BET = INT(BET): IF BET = 0 GOTO 27
GOTO 24
27 PRINT : PRINT "YOU WIMP. AT LEAST BET 1 DOLLAR!": GOSUB 50000
   LOCATE 16, 1: PRINT "                                ": GOTO 23
24 LOCATE 16, 10: PRINT "                                  "
   LOCATE 16, 1: INPUT "WHICH BOX DO YOU WANT TO BET ON --->"; BETNUM
IF BETNUM < 1 OR BETNUM > 5 THEN LOCATE 18, 1: PRINT "BETWEEN 1 AND 5!": GOSUB 50000: LOCATE 18, 1: PRINT "                       ": GOTO 24
CLS
IF BETNUM = 1 THEN Z = A
IF BETNUM = 2 THEN Z = B
IF BETNUM = 3 THEN Z = C
IF BETNUM = 4 THEN Z = D
IF BETNUM = 5 THEN Z = E
LOCATE 24, 30: PRINT "BET : "; STR$(BET); ".00    #"; STR$(BETNUM);
PRINT ".  Odds : "; Z; "to 1."
' TRACK CONSTRUCTION
COLOR 4
LINE (0, 0)-(640, 0)
LINE (0, 20)-(640, 20)
LINE (0, 40)-(640, 40)
LINE (0, 60)-(640, 60)
LINE (0, 80)-(640, 80)
LINE (0, 100)-(640, 100)
LINE (600, 0)-(640, 100), 0, BF
LINE (600, 0)-(639, 100), , B
LOCATE 2, 78
COLOR 15
PRINT "F"
LOCATE 4, 78
PRINT "I"
LOCATE 6, 78
PRINT "N"
LOCATE 8, 78
PRINT "I"
LOCATE 10, 78
PRINT "S"
LOCATE 12, 78
PRINT "H"
LOCATE 2, 72
PRINT "1"
LOCATE 2, 2
PRINT "1"
LOCATE 4, 72
PRINT "2"
LOCATE 4, 2
PRINT "2"
LOCATE 7, 72
PRINT "3"
LOCATE 7, 2
PRINT "3"
LOCATE 9, 72
PRINT "4"
LOCATE 9, 2
PRINT "4"
LOCATE 12, 72
PRINT "5"
LOCATE 12, 2
PRINT "5"
LINE (20, 0)-(20, 100), 4
FOR I = 1 TO 1000: NEXT I
LOCATE 14, 2
PRINT "PRESS A KEY IF READY!"
DO
 kbd$ = INKEY$
LOOP WHILE kbd$ = ""
LINE (0, 101)-(200, 200), 0, BF
LOCATE 14, 2
PRINT "READY?"
LOCATE 14, 2
PLAY "MF O3 L3 C"
SLEEP 1
PRINT "SET?          "
LOCATE 14, 2
PLAY "MF O3 L3 C"
SLEEP 1
PRINT "GO!!!!!!!!!!"
PLAY "MB O5 L3 C"
' CAR'S SPEED
RANDOMIZE TIMER
A1 = 1
A2 = 1
A3 = 1
A4 = 1
A5 = 1
15 A1 = A1 + INT(RND * 10)
GOTO 30
25 A2 = A2 + INT(RND * 10)
GOTO 40
35 A3 = A3 + INT(RND * 10)
GOTO 50
45 A4 = A4 + INT(RND * 10)
GOTO 60
55 A5 = A5 + INT(RND * 10)
GOTO 70
30 IF A1 = 0 THEN GOTO 15 ELSE GOTO 25
40 IF A2 = 0 THEN GOTO 25 ELSE GOTO 35
50 IF A3 = 0 THEN GOTO 35 ELSE GOTO 45
60 IF A4 = 0 THEN GOTO 45 ELSE GOTO 55
70 IF A5 = 0 THEN GOTO 55 ELSE GOTO 10000

10000 ' DRAW CAR
LINE (A, 0)-(A + 20, 0), 4
LINE (A1, 5)-(A1 + 20, 15), 2, BF
LINE (A2, 25)-(A2 + 20, 35), 3, BF
LINE (A3, 45)-(A3 + 20, 55), 5, BF
LINE (A4, 65)-(A4 + 20, 75), 6, BF
LINE (A5, 85)-(A5 + 20, 95), 8, BF
IF A1 >= 580 OR A2 >= 580 OR A3 >= 580 OR A4 >= 580 OR A5 >= 580 THEN GOTO 100
LINE (A1, 5)-(A1 + 20, 15), 0, BF
LINE (A2, 25)-(A2 + 20, 35), 0, BF
LINE (A3, 45)-(A3 + 20, 55), 0, BF
LINE (A4, 65)-(A4 + 20, 75), 0, BF
LINE (A5, 85)-(A5 + 20, 95), 0, BF
COLOR 15
LOCATE 2, 72
PRINT "1"
LOCATE 2, 2
PRINT "1"
LOCATE 4, 72
PRINT "2"
LOCATE 4, 2
PRINT "2"
LOCATE 7, 72
PRINT "3"
LOCATE 7, 2
PRINT "3"
LOCATE 9, 72
PRINT "4"
LOCATE 9, 2
PRINT "4"
LOCATE 12, 72
PRINT "5"
LOCATE 12, 2
PRINT "5"
LINE (20, 0)-(20, 100), 4

GOTO 15
100 LOCATE 14, 2
PRINT "WE HAVE A WINNER!!!"

IF A1 > A5 THEN GOTO 2000
GOTO 1
2000 IF A1 < A4 THEN GOTO 1
IF A1 < A3 THEN GOTO 1
IF A1 < A2 THEN GOTO 1
GOTO 200

1 IF A2 > A1 THEN GOTO 3000
GOTO 2
3000 IF A2 < A3 THEN GOTO 2
IF A2 < A4 THEN GOTO 2
IF A2 < A5 THEN GOTO 2
GOTO 300

2 IF A3 > A1 THEN GOTO 4000
GOTO 3
4000 IF A3 < A2 THEN GOTO 3
IF A3 < A4 THEN GOTO 3
IF A3 < A5 THEN GOTO 3
GOTO 400

3 IF A4 > A1 THEN GOTO 5000
GOTO 4
5000 IF A4 < A2 THEN GOTO 4
IF A4 < A3 THEN GOTO 4
IF A4 < A5 THEN GOTO 4
GOTO 500

4 GOTO 600

FOR I = 1 TO 800: NEXT I
200 XX$ = "1"
XX = 1
GOTO 1000
300 XX$ = "2"
XX = 2
GOTO 1000
400 XX$ = "3"
XX = 3
GOTO 1000
500 XX$ = "4"
XX = 4
GOTO 1000
600 XX$ = "5"
XX = 5
GOTO 1000
1000 PRINT "THE WINNER IS THE BOX IN LANE "; XX$; "!!!!!!!!!!"
PRINT "DISTANCE OF CAR IN LANE 1="; A1
PRINT "DISTANCE OF CAR IN LANE 2="; A2
PRINT "DISTANCE OF CAR IN LANE 3="; A3; ""
PRINT "DISTANCE OF CAR IN LANE 4="; A4
PRINT "DISTANCE OF CAR IN LANE 5="; A5
IF BETNUM <> XX THEN PRINT : PRINT "YOU LOSE $"; LTRIM$(STR$(BET));
PRINT "!": MONEY = MONEY - BET: GOTO 700
IF BETNUM = 1 THEN BET = BET * A
IF BETNUM = 2 THEN BET = BET * B
IF BETNUM = 3 THEN BET = BET * C
IF BETNUM = 4 THEN BET = BET * D
IF BETNUM = 5 THEN BET = BET * E
PRINT : PRINT "CONGRATULATIONS. YOU HAVE WON $"; LTRIM$(STR$(BET)); "!"
MONEY = MONEY + BET
700 IF MONEY <= 0 THEN PRINT "UH-OH. IT LOOKS LIKE YOUR BROKE! " + "HA, HA. COME BACK SOME OTHER TIME.     ": END
PRINT "ANOTHER RACE?(Y\N)";
DO
 kbd$ = INPUT$(1)
 kbd$ = UCASE$(kbd$)
 IF kbd$ = "Y" THEN EXIT DO
 IF kbd$ = "N" THEN EXIT DO
 BEEP
LOOP
PRINT kbd$
IF kbd$ = "Y" THEN GOTO 1000000
IF kbd$ = "N" THEN END
END

' G O S U B   S E C T I O N

50000 SLEEP 2: RETURN
55000 SCREEN 0
      IF ERR = 53 THEN 56000
      PRINT : PRINT "Warning!! Error"; ERR; " occured! Aborting..."
      END
56000 PRINT : PRINT "Warning!! Error"; ERR; " occured! Aborting..."
      END

