Create a text-based rock, paper, scissors game using Python
Creating a rock, paper, scissors game is one of those coding exercises that one would find on almost every other “top ten coding projects for beginners” website. Coding this simple game involves using almost all the basics of programming, such as: conditionals, loops, and I/O operations.
In this tutorial, we’ll develop and code the logic of a text-based rock, paper, scissors game using Python. We’ll create a single-round user vs. computer game, then extend it to support multiple rounds. So, without further ado, let’s start!
User and computer input
The first step is making the user and the computer choose between the three options.
Note: Please enter our choice in the designated area before running the code: 1 for Rock, 2 for Paper, and 3 for Scissors.
import randomoptions = ['Rock', 'Paper', 'Scissors']userOption = int(input('Press 1 for Rock, 2 for Paper, 3 for Scissors: \n'))userChoice = options[userOption-1]computerChoice = options[random.randint(0,2)]print(f'You chose: {userChoice}')print(f'Computer chose: {computerChoice}')
Enter the input below
Code explanation
-
Line 1: We import Python’s
randomlibrary, which we’ll use to make the computer choose randomly between the three available choices. -
Line 3: We create an array containing all the possible choices the user can make.
-
Line 5: We prompt the user to choose an option using the
input()function. We use theint()function to ensure the conversion of the input string numeral to the typeint. -
Line 4: We map the user’s input to the corresponding option using array indexing for the user’s choice.
-
Line 8: We use the
random.randint()function to generate a random number between0and2(both inclusive). We then map the generated random number to the corresponding option using array indexing for the computer’s choice. -
Lines 10–11: We display the user’s and computer’s choices.
Game logic
The next step is to create the game logic. This is straightforward; we compare the user and computer choices using nested if statements. Here is the first set of possibilities:
result = "It's a tie!"if userChoice == "Rock":if computerChoice == "Paper":result = "Computer Won!"elif computerChoice == "Scissors":result = "You Won!"
Code explanation
-
Line 1: We create a variable to store the result and set the default value to
"It's a tie!". -
Lines 3–7: We consider the case that the user chose
Rock, check whether the computer chosePaperorScissors, and update theresultvariable accordingly. If the computer also choseRock, the default value ofresultwill not change. Hence all the cases are catered for.
We’ll now extend this logic to handle the cases where the user chooses Paper or Scissors.
import randomoptions = ['Rock', 'Paper', 'Scissors']userOption = int(input('Press 1 for Rock, 2 for Paper, 3 for Scissors: \n'))userChoice = options[userOption-1]computerChoice = options[random.randint(0,2)]print(f'You chose: {userChoice}')print(f'Computer chose: {computerChoice}')result = "It's a tie!"if userChoice == "Rock":if computerChoice == "Paper":result = "Computer Won!"elif computerChoice == "Scissors":result = "You Won!"elif userChoice == "Paper":if computerChoice == "Scissors":result = "Computer Won!"elif computerChoice == "Rock":result = "You Won!"elif userChoice == "Scissors":if computerChoice == "Rock":result = "Computer Won!"elif computerChoice == "Paper":result = "You Won!"print(result)
Enter the input below
-
Lines 15–31: We implement the game logic as discussed above.
-
Line 33: We display the
result.
With this, our single-round rock paper scissors game is complete. We can extend this to multiple rounds using a for loop. The player with the most round victories becomes the winner.
Multiple rounds
Let’s modify our game to play multiple rounds before declaring a winner:
import random
options = ['Rock', 'Paper', 'Scissors']
userScore, computerScore = 0, 0
totalRounds = 3
for i in range(totalRounds):
userOption = int(input('Press 1 for Rock, 2 for Paper, 3 for Scissors: '))
userChoice = options[userOption-1]
computerChoice = options[random.randint(0,2)]
print(f'You chose: {userChoice}')
print(f'Computer chose: {computerChoice}')
result = "It's a tie!"
if userChoice == "Rock":
if computerChoice == "Paper":
result = "Computer won this round!"
computerScore += 1
elif computerChoice == "Scissors":
result = "You won this round!"
userScore += 1
elif userChoice == "Paper":
if computerChoice == "Scissors":
result = "Computer won this round!"
computerScore += 1
elif computerChoice == "Rock":
result = "You won this round!"
userScore += 1
elif userChoice == "Scissors":
if computerChoice == "Rock":
result = "Computer won this round!"
computerScore += 1
elif computerChoice == "Paper":
result = "You won this round!"
userScore += 1
print(result + '\n')
print(f'Your score: {userScore}')
print(f"Computer's score: {computerScore}")
if userScore > computerScore:
print('You won most rounds!')
elif computerScore > userScore:
print('Computer won most rounds!')
else:
print("It's a draw")Code explanation
-
Line 5: We declare two variables to keep track of the user’s and computer’s scores.
-
Line 6: We set the total number of rounds to
3. We can change this to any number we like. -
Line 8: We start our
forloop. The total number of iterations will be the same as thetotal round, i.e.,3in this case. -
Lines 9–43: We move these lines inside the for loop as the choices will now be made and evaluated in every iteration of the
forloop. -
Lines 22, 30, and 38: We increase the
computerScoreby1if the computer wins a round. -
Lines 25, 33, and 41: We increase the
user scoreby1if the user wins a round. -
Lines 45–46: We display the user and computer scores after all the rounds have been played.
-
Lines 48–53: We compare the two scores and determine the winner accordingly.
Free Resources