Files
2023-10-03 16:10:16 -07:00

171 lines
4.5 KiB
Plaintext

print " "*33 + "Slalom"
print " "*15 + "Creative Computing Morristown New Jersey"
print; print; print
gateSpeeds = [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]
medals = {}
medals.gold = 0
medals.silver = 0
medals.bronze = 0
while true
qtyGates = input("How many gates does this course have (1 to 25)? ").val
if qtyGates > 25 then
print "25 is the limit."
qtyGates = 25
end if
if qtyGates >= 1 then break
print "Try again,"
end while
print "Type ""ins"" for instructions"
print "Type ""max"" for approximate maximum speeds"
print "Type ""run"" for the beginning of the race"
while true
cmd = input("Command--").lower
if cmd == "ins" then
print
print "*** Slalom: This is the 1976 Winter Olympic Giant Slalom. You are"
print " the American team's only hope of a gold medal."
print
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."
print
print " The place to use these options is when the computer asks:"
print
print "Option?"
print
print " Good luck!"
print
else if cmd == "max" then
print "GATE MAX"
print " # M.P.H."
print "-----------"
for i in range(1, qtyGates)
print " " + i + " "*(i<10) + " " + gateSpeeds[i-1]
end for
else if cmd == "run" then
break
end if
end while
while true
skill = input("Rate yourself as a skier, (1=worst, 3=best)? ").val
if 1 <= skill <= 3 then break
print "The bounds are 1-3"
end while
doOneRace = function
print "The starter counts down...5...4...3...2...1..GO!"
time = 0
speed = floor(rnd * 9 + 9)
print
print "You're off!"
gate = 0
while gate+1 <= qtyGates
gate += 1
gateSpeed = gateSpeeds[(gate-1) % gateSpeeds.len]
print
print "Here comes gate #" + gate + ":"
print speed + " M.P.H."
prevSpeed = speed
while true
opt = input("Option? ").val
if opt == 0 then
print "You've taken " + time + " seconds."
else if opt < 1 or opt > 8 then
print "What?"
else
break
end if
end while
if opt == 1 then
speed += floor(rnd*(10-5)+5)
else if opt == 2 then
speed += floor(rnd*(5-3)+3)
else if opt == 3 then
speed += floor(rnd*(4-1)+1)
else if opt == 4 then
// (no change)
else if opt == 5 then
speed -= floor(rnd*(4-1)+1)
else if opt == 6 then
speed -= floor(rnd*(5-3)+3)
else if opt == 7 then
speed -= floor(rnd*(10-5)+5)
else if opt == 8 then
print "***CHEAT"
if rnd < 0.7 then
print "An official caught you!"
print "You took " + round(time+rnd, 3) + " seconds."
break
else
print "You made it!" + char(7)
time += 1.5
continue
end if
end if
print speed + " M.P.H."
if speed > gateSpeed then
if rnd < (speed - gateSpeed)*0.1 + 0.2 then
msg = "You went over the maximum speed and "
if rnd < 0.5 then msg += "snagged a flag!" else msg += "wiped out!"
print msg
print "You took " + round(time+rnd, 3) + " seconds."
else
print "You went over the maximum speed and made it!"
end if
else if speed > gateSpeed - 1 then
print "Close one!"
end if
if speed < 7 then
print "Let's be realistic, OK? Let's go back and try again..."
speed = prevSpeed
gate -= 1
continue
end if
time += gateSpeed - speed + 1
if speed > gateSpeed then time += 0.5
end while
print
print "You took " + round(time+rnd, 3) + " seconds."
avg = time / qtyGates
if avg < 1.5 - (skill * 0.1) then
print "You won a gold medal!"
medals.gold += 1
else if avg < 2.9 - (skill * 0.1) then
print "You won a silver medal"
medals.silver += 1
else if avg < 4.4 - (skill * 0.01) then
print "You won a bronze medal"
medals.bronze += 1
end if
end function
while true
doOneRace
while true
yesno = input("Do you want to race again? ").lower + " "
if yesno[0] == "y" or yesno[0] == "n" then break
print "Please type 'yes' or 'no'"
end while
if yesno[0] == "n" then break
print
end while
print
print "Thanks for the race"
if medals.gold then print "Gold medals: " + medals.gold
if medals.silver then print "Silver medals: " + medals.silver
if medals.bronze then print "Bronze medals: " + medals.bronze