HeidiHeff

rock-Spock-paper-lizard-scissors

Oct 16th, 2012
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.97 KB | None | 0 0
  1. # rock-Spock-paper-lizard-scissors game
  2. # Ode to Big Bang Theory television show
  3. # http://www.codeskulptor.org/#user2-LHdperqFop-0.py
  4. # Heidi A. Heffelfinger
  5. # October 16, 2012
  6. # Code is based on Rice University template
  7.  
  8. # This program determines winner by equating strings:
  9. # "rock", "paper", "scissors", "lizard", "Spock" to numbers
  10. # as follows:
  11. #
  12. # 0 - rock
  13. # 1 - Spock
  14. # 2 - paper
  15. # 3 - lizard
  16. # 4 - scissors
  17.  
  18. import random
  19.  
  20. def number_to_name(number):
  21.     '''(int) -> str
  22.  
  23.    Returns a string matching the corresponding number.
  24.    Precondition: string must be 0, 1, 2, 3, or 4
  25.  
  26.    >>> number_to_name(0)
  27.    'rock'
  28.    >>> number_to_name(2)
  29.    'paper'
  30.    >>> number_to_name(4)
  31.    'scissors'
  32.    '''
  33.    
  34.     if (number == 0):
  35.         return 'rock'
  36.     elif (number == 1):
  37.         return 'Spock'
  38.     elif (number == 2):
  39.         return 'paper'
  40.     elif (number == 3):
  41.         return 'lizard'
  42.     elif (number == 4):
  43.         return 'scissors'
  44.    
  45. def name_to_number(name):
  46.     '''(str) -> int
  47.  
  48.    Returns an integer between 0 and 4 for given string, name.
  49.    Precondition: name must be 'rock', 'Spock', 'paper', 'lizard', or 'scissors'
  50.  
  51.    >>> name_to_number('rock')
  52.    0
  53.    >>> name_to_number('paper')
  54.    2
  55.    >>> name_to_number('scissors')
  56.    4
  57.    '''
  58.    
  59.     if (name == 'rock'):
  60.         return 0
  61.     elif (name == 'Spock'):
  62.         return 1
  63.     elif (name == 'paper'):
  64.         return 2
  65.     elif (name == 'lizard'):
  66.         return 3
  67.     elif (name == 'scissors'):
  68.         return 4
  69.  
  70. def rpsls(guess):
  71.     '''(str) -> str
  72.  
  73.    Prints player's choice (guess), prints randomly generated computer choice, and
  74.    returns and prints winner between player's choice and computer choice.
  75.  
  76.    rpsls("rock") ## with random number generation of 1
  77.    >>>
  78.    Player chooses rock
  79.    Computer chooses Spock
  80.    Computer wins!
  81.  
  82.    rpsls("scissors") ## with random number generation of 4
  83.    >>>
  84.    Player chooses scissors
  85.    Computer chooses scissors
  86.    Player and Computer tie.
  87.  
  88.    rpsls("lizard") ## with random number generation of 2
  89.    >>>
  90.    Player chooses lizard
  91.    Computer chooses paper
  92.    Player wins!
  93.    '''
  94.    
  95.     player_number = name_to_number(guess) #converts players guess to number
  96.     comp_number = random.randrange(0,5) #computes a random guess for computer
  97.  
  98.     win_value = (comp_number - player_number) % 5 #computes win_value
  99.     if win_value == 0: # if difference is 0, both tie
  100.         winner = "Player and Computer tie."
  101.     elif win_value >= 3: # if difference is 3 or 4, the Player wins
  102.         winner = "Player wins!"
  103.     else: # if difference is 1 or 2, the Computer wins
  104.         winner = "Computer wins!"
  105.    
  106.     # print results
  107.     print("Player chooses " + number_to_name(player_number))
  108.     print("Computer chooses " + number_to_name(comp_number))
  109.     print(winner)
  110.     print()
  111.    
  112. # test code
  113. rpsls("rock")
  114. rpsls("Spock")
  115. rpsls("paper")
  116. rpsls("lizard")
  117. rpsls("scissors")
Advertisement
Add Comment
Please, Sign In to add comment