######################################################## # # 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. # ########################################################