In: Computer Science
Rock, Paper, Scissors Game
Write a Python program rps.py that lets the user play the game of Rock, Paper, Scissors against the computer.
The program should work as follows:
You can set these constant global variables at the top outside of your main function definition:
COMPUTER_WINS = 1
PLAYER_WINS = 2
TIE = 0
INVALID = 3
ROCK = 1
PAPER = 2
SCISSORS = 3
For this program 1 represents rock, 2 represents paper, and 3 represents scissors.
In your main function:
- Ask the user to choose rock, paper, or scissors like so: 'Enter 1 for rock, 2 for paper, 3 for scissors: ' set the value to a variable called 'player'.
- Generate a random number between 1 and 3 for the computer. Set that value to a variable called 'computer'. If the number is 1, then the computer has chosen rock. If the number is 2, then the computer has chosen paper. If the number is 3, then the computer has chosen scissors. (Don't display the computer's choice yet.)
- Call your choiceString(choice) function to print the computer's hand like so:
'Computer chose ....'
- Call your choiceString(choice) function to print the player's hand like so:
'Player chose ....'
- Call your value returning function rockPaperScissors(computer, player) to get the result of the round between the computer and player.
- If the result is tie, print 'You made the same choice as the computer. Starting over' and repeat the process until there is no tie.
- Declare if the computer is the winner with 'The computer wins the game' or whether the player is the winner with 'You win the game' or if there was an invalid choice print 'You made an invalid choice. No winner'. If they made an invalid choice you do not need to loop through again.
In the main, please comment each of the above bullet points (5 points)
Outside of your main, define the following functions:
rockPaperScissors(computer, player):
[value returning function]
This takes in integers representing the computer and player's 'hand' so to speak of rock, paper, or scissors as arguments.
It returns one of the following values:
TIE
PLAYER_WINS
COMPUTER_WINS
INVALID
Using conditionals, based on the arguments passed into the function, determine which value to return based on these rules:
If one player chooses rock and the other player chooses scissors, then rock wins.
(Rock smashes scissors.)
If one player chooses scissors and the other player chooses paper, then scissors wins.
(Scissors cuts paper.)
If one player chooses paper and the other player chooses rock, then paper wins. (Paper
wraps rock.)
If both players make the same choice, the game must be played again to determine the
Winner.
choiceString(choice)
Value returning function that takes in the argument choice (the number representing rock, paper, or scissors) and return one of the following strings:
'rock'
'paper'
'scissors'
'Something went wrong'
In other words, the function returns the string value of the integer being passed in as an argument.
import random
COMPUTER_WINS = 1
PLAYER_WINS = 2
TIE = 0
INVALID = 3
ROCK = 1
PAPER = 2
SCISSORS = 3
def choiceString(choice):
if choice==1:#set the string based on choice
computer="rock"
elif choice==2:
computer="paper"
elif choice==3:
computer="scissors"
else:
return "Something went wrong"
return computer#return rock,paper, or scissor
def rockPaperScissors(computer, player):
if player==computer:
return "TIE"
elif computer=="rock" and player=="paper":#return the result based
on conditions provided
return "PLAYER_WINS"
elif computer=="rock" and player=="scissors":
return "COMPUTER_WINS"
elif computer=="paper" and player=="rock":
return "COMPUTER_WINS"
elif computer=="paper" and player=="scissors":
return "PLAYER_WINS"
elif computer=="scissors" and player=="rock":
return "PLAYER_WINS"
elif computer=="scissors" and player=="paper":
return "COMPUTER_WINS"
else:
return "INVALID"
while True:
player=int(input("Enter 1 for rock, 2 for paper, 3 for scissors:
"))
computer=random.randint(1,3)#generate radom number 1,2,3
print("Computer choose ",choiceString(computer))#call function and
print the choice of computer
computer=choiceString(computer)
print("Player choose ",choiceString(player))#call function and
print the choice of player
player=choiceString(player)
res=rockPaperScissors(computer, player)#call function to get the
result
if res=="TIE":#print the result based on returned value and
continue game if it is a tie
print("You made the same choice as the computer. Starting
over")
continue
elif res=="COMPUTER_WINS":
print("The computer wins the game")
break
elif res=="PLAYER_WINS":
print("You win the game")
break
elif res=="INVALID":
print("You made an invalid choice. No winner")
Screenshots:
The screenshots are attached below for reference.
Please follow them for output and proper indentation.
Please upvote my answer. Thank you.