from random import random print("Slalom".rjust(39)) print("Creative Computing Morristown, New Jersey\n\n\n".rjust(57)) medals = { "gold": 0, "silver": 0, "bronze": 0, } max_speeds = [14,18,26,29,18,25,28,32,29,20,29,29,25,21,26,29,20,21,20,18,26,25,33,31,22] def ask(question): print(question, end="? ") return input().upper() def ask_int(question): reply = ask(question) return int(reply) if reply.isnumeric() else -1 def pre_run(): print("\nType \"INS\" for instructions") print("Type \"MAX\" for approximate maximum speeds") print("Type \"RUN\" for the beginning of the race") cmd = ask("Command--") while cmd != "RUN": if cmd == "INS": print("\n*** Slalom: This is the 1976 Winter Olypic Giant Slalom. You are") print(" the American team's only hope for a gold medal.\n") print(" 0 -- Type this if you want to see how long you've taken.") print(" 1 -- Type this if you want to speed up a lot.") print(" 2 -- Type this if you want to speed up a little.") print(" 3 -- Type this if you want to speed up a teensy.") print(" 4 -- Type this if you want to keep going the same speed.") print(" 5 -- Type this if you want to check a teensy.") print(" 6 -- Type this if you want to check a little.") print(" 7 -- Type this if you want to check a lot.") print(" 8 -- Type this if you want to cheat and try to skip a gate.\n") print(" The place to use these options is when the Computer asks:\n") print("Option?\n") print(" Good Luck!\n") cmd = ask("Command--") elif cmd == "MAX": print("Gate Max") print(" # M.P.H.") print("----------") for i in range(0, gates): print(f" {i + 1} {max_speeds[i]}") cmd = ask("Command--") else: cmd = ask(f"\"{cmd}\" is an illegal command--Retry") def run(): global medals print("The starter counts down...5...4...3...2...1...Go!") time = 0 speed = int(random() * (18 - 9) + 9) print("You're off") for i in range(0, gates): while True: print(f"\nHere comes gate #{i + 1}:") print(f" {int(speed)} M.P.H.") old_speed = speed opt = ask_int("Option") while opt < 1 or opt > 8: if(opt == 0): print(f"You've taken {int(time)} seconds.") else: print("What?") opt = ask_int("Option") if opt == 8: print("***Cheat") if random() < .7: print("An official caught you!") print(f"You took {int(time + random())} seconds.") return else: print("You made it!") time += 1.5 else: match opt: case 1: speed += int(random() * (10 - 5) + 5) case 2: speed += int(random() * (5 - 3) + 3) case 3: speed += int(random() * (4 - 1) + 1) case 5: speed -= int(random() * (4 - 1) + 1) case 6: speed -= int(random() * (5 - 3) + 3) case 7: speed -= int(random() * (10 - 5) + 5) print(f" {int(speed)} M.P.H.") if speed > max_speeds[i]: if random() < ((speed - max_speeds[i]) * .1) + .2: print(f"You went over the maximum speed and {'snagged a flag' if random() < .5 else 'wiped out'}!") print(f"You took {int(time + random())} seconds") return else: print("You went over the maximum speed and made it!") if speed > max_speeds[i] - 1: print("Close one!") if speed < 7: print("Let's be realistic, ok? Let's go back and try again...") speed = old_speed else: time += max_speeds[i] - speed + 1 if speed > max_speeds[i]: time += .5 break print(f"\nYou took {int(time + random())} seconds.") avg = time / gates if avg < 1.5 - (lvl * .1): print("Yout won a gold medal!") medals["gold"] += 1 elif avg < 2.9 - (lvl * .1): print("You won a silver medal!") medals["silver"] += 1 elif avg < 4.4 - (lvl * .01): print("You won a bronze medal!") medals["bronze"] += 1 while True: gates = ask_int("How many gates does this course have (1 to 25)") if gates < 1: print("Try again,") else: if(gates > 25): print("25 is the limit.") break pre_run() while True: lvl = ask_int("Rate yourself as a skier, (1=Worst, 3=Best)") if lvl < 1 or lvl > 3: print("The bounds are 1-3.") else: break while True: run() while True: answer = ask("Do you want to play again?") if answer == "YES" or answer == "NO": break else: print("Please type \"YES\" or \"NO\"") if answer == "NO": break print("Thanks for the race") if medals["gold"] > 0: print(f"Gold medals: {medals['gold']}") if medals["silver"] > 0: print(f"Silver medals: {medals['silver']}") if medals["bronze"] > 0: print(f"Bronze medals: {medals['bronze']}")