View.Set ("graphics:600,300;position:center,center;nocursor") randomize var lgTahoma : int := Font.New ("tahoma:16") var smTahoma : int := Font.New ("tahoma:10") var chars : array char of boolean proc Intro (var players : int) drawfill (0, 0, green, green) Font.Draw ("Welcome to the D'OC Racetrack!", 170, 275, lgTahoma, yellow) loop exit when hasch delay (50) end loop Input.Flush locate (5, 1) colorback (green) color (yellow) loop put "How many players?" get players exit when players <= 4 and players >= 1 if players > 4 then put "4 players maximum." elsif players <= 0 then put "Must have at least one player" end if end loop cls end Intro proc updateHUD (money : array 1 .. * of int) drawfillbox (10, 250, 120, 280, green) for i : 1 .. upper (money) Font.Draw ("Player " + intstr (i) + ": $" + intstr (money (i)), 10, 260 - (i * 15), smTahoma, yellow) end for end updateHUD proc newRace (var money : array 1 .. * of int, horses : array 1 .. 6 of int, var betAmount : array 1 .. * of int, var horseNum : array 1 .. * of int) var temp : char (1) Font.Draw ("The D'OC Racetrack", 180, 275, lgTahoma, yellow) updateHUD (money) for i : 1 .. 6 drawfillbox (375, 100 + (i * 24), 400, 100 + (i * 24) + 25, i) drawbox (374, 100 + (i * 24) - 1, 401, 100 + (i * 24) + 26, black) Font.Draw (intstr (i), 385, 107 + (i * 24), smTahoma, white) end for for i : 1 .. upper (money) drawfillbox (420, 245, 500, 265, green) Font.Draw ("Player " + intstr (i) + ", choose a horse:", 420, 250, smTahoma, yellow) % This detects for each player's bets! loop Input.KeyDown (chars) if chars ('1') then horseNum (i) := 1 elsif chars ('2') then horseNum (i) := 2 elsif chars ('3') then horseNum (i) := 3 elsif chars ('4') then horseNum (i) := 4 elsif chars ('5') then horseNum (i) := 5 elsif chars ('6') then horseNum (i) := 6 end if delay (100) if horseNum (i) > 0 then drawfillbox (420, 245, 600, 265, green) loop locate (13, 28) Font.Draw ("What is your bet? $", 20, 95, smTahoma, yellow) get betAmount (i) if betAmount (i) <= money (i) then Font.Draw ("Player " + intstr (i) + " bets on horse #" + intstr (horseNum (i)) + " with $" + intstr (betAmount (i)), 350, 100 - (i * 15), smTahoma, yellow) drawfillbox (20, 90, 250, 120, green) exit else locate (15, 15) betAmount (i) := 0 put "You do not have enough money." end if drawfillbox (20, 90, 280, 120, green) end loop exit end if end loop end for end newRace function runRace (horses : array 1 .. * of int) : int var temp : int := 0 var horsesX : array 1 .. 6 of int := init (0, 0, 0, 0, 0, 0) drawfillbox (0, 0, maxx, maxy, green) Font.Draw ("Welcome to the D'OC Racetrack!", 170, 275, lgTahoma, yellow) for i : 1 .. 6 drawfillbox (100 + (i * 24), 200, 125 + (i * 24), 225, i) drawbox (99 + (i * 24), 199, 126 + (i * 24), 226, black) Font.Draw (intstr (i), 108 + (i * 24), 208, smTahoma, white) end for loop randint (temp, 1, 6) horsesX (temp) += 2 for i : 1 .. 6 drawfillbox (0, 20 + (i * 21), horsesX (i), 40 + (i * 21), i) drawbox (0, 20 + (i * 21), horsesX (i), 41 + (i * 21), black) if horsesX (i) = 600 then % Is a 'horse' done the race? result i end if end for delay (10) end loop end runRace % ------------------------------ MAIN PROGRAM LOOP ---------------------------- var racing : boolean := false var players : int var horses : array 1 .. 6 of int := init (1, 2, 3, 4, 5, 6) Intro (players) var money : array 1 .. players of int var bet, horseChoice : array 1 .. players of int for i : 1 .. upper (money) bet (i) := 0 horseChoice (i) := 0 locate (5, 1) colorback (green) color (yellow) put "How much money does player ", i, " have? $" .. get money (i) cls end for newRace (money, horses, bet, horseChoice) put runRace (horses) % Returns horse number which won race