mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-23 07:29:02 -08:00
Merge pull request #183 from qequ/main
Added Python port of Russian Roulette
This commit is contained in:
92
76 Russian Roulette/python/russianroulette.py
Normal file
92
76 Russian Roulette/python/russianroulette.py
Normal file
@@ -0,0 +1,92 @@
|
||||
########################################################
|
||||
#
|
||||
# Russian Roulette
|
||||
#
|
||||
# From Basic Computer Games (1978)
|
||||
#
|
||||
# In this game, you are given by the computer a
|
||||
# revolver loaded with one bullet and five empty
|
||||
# chambers. You spin the chamber and pull the trigger
|
||||
# by inputting a "1", or, if you want to quit, input
|
||||
# a "2". You win if you play ten times and are still
|
||||
# alive.
|
||||
# Tom Adametx wrote this program while a student at
|
||||
# Curtis Jr. High School in Sudbury, Massachusetts.
|
||||
#
|
||||
########################################################
|
||||
|
||||
|
||||
from random import random
|
||||
|
||||
NUMBER_OF_ROUNDS = 9
|
||||
|
||||
|
||||
def initial_message():
|
||||
print(" " * 28 + "Russian Roulette")
|
||||
print(" " * 15 + "Creative Computing Morristown, New Jersey\n\n\n")
|
||||
print("This is a game of >>>>>>>>>>Russian Roulette.\n")
|
||||
print("Here is a Revolver.")
|
||||
|
||||
|
||||
def parse_input():
|
||||
correct_input = False
|
||||
while not correct_input:
|
||||
try:
|
||||
i = int(input('? '))
|
||||
correct_input = True
|
||||
except ValueError:
|
||||
print('Number expected...')
|
||||
return i
|
||||
|
||||
|
||||
initial_message()
|
||||
while True:
|
||||
dead = False
|
||||
n = 0
|
||||
print("Type \'1\' to Spin chamber and pull trigger")
|
||||
print("Type \'2\' to Give up")
|
||||
print("Go")
|
||||
while not dead:
|
||||
i = parse_input()
|
||||
|
||||
if i == 2:
|
||||
break
|
||||
|
||||
if random() > 0.8333333333333334:
|
||||
dead = True
|
||||
else:
|
||||
print("- CLICK -\n")
|
||||
n += 1
|
||||
|
||||
if n > NUMBER_OF_ROUNDS:
|
||||
break
|
||||
if dead:
|
||||
print("BANG!!!!! You're Dead!")
|
||||
print("Condolences will be sent to your relatives.\n\n\n")
|
||||
print("...Next victim...")
|
||||
else:
|
||||
if n > NUMBER_OF_ROUNDS:
|
||||
print("You win!!!!!")
|
||||
print("Let someone else blow his brain out.\n")
|
||||
else:
|
||||
print(" Chicken!!!!!\n\n\n")
|
||||
print("...Next victim....")
|
||||
|
||||
|
||||
########################################################
|
||||
# Porting Notes
|
||||
#
|
||||
# Altough the description says that accepts "1" or "2",
|
||||
# the original game accepts any number as input, and
|
||||
# if it's different of "2" the program considers
|
||||
# as if the user had passed "1". That feature was
|
||||
# kept in this port.
|
||||
# Also, in the original game you must "pull the trigger"
|
||||
# 11 times instead of 10 in orden to win,
|
||||
# given that N=0 at the beginning and the condition to
|
||||
# win is "IF N > 10 THEN 80". That was fixed in this
|
||||
# port, asking the user to pull the trigger only ten
|
||||
# times, tough the number of round can be set changing
|
||||
# the constant NUMBER_OF_ROUNDS.
|
||||
#
|
||||
########################################################
|
||||
Reference in New Issue
Block a user