Rock Paper Scissors Game in Python
ROCK PAPER SCISSORS is a traditional two-player game. Each round, players begin by saying, “rock, paper, scissors, shoot!” Each player holds their fist for the rock, flat hand for the paper, or index and middle finger for scissors on “shoot.” The rock crushes the scissors, the scissors cut the paper, and the paper covers the rock.
In this article, we are going to build a classic rock paper scissors game in Python. We will be writing two programs for this –
- Basic Rock Paper Scissors Python Program – Beginner Level
- Rock Paper Scissors Game Application Using Tkinter – Intermediate Level
So, without further ado, let’s get started!
For the first program, we will be using the random module of Python to randomize the generated outputs simulating the throw of a dice.
Basic Rock Paper Scissors Python Program
To understand the program below, you should have a basic idea about the following Python concepts:
- Python Random module
- Python Loops
Here, we will use the randint() method of the random module. This function will generate a random number in the specified range. Let’s look at the stepwise Python implementation below:
- 1 Step: Import the random module and create a list of play options:
#Import random module import random #Create a list of play options play = ["Rock", "Paper", "Scissors"]
- 2 Step: Setup the player, i.e., the computer and you:
#Assign a random play to the system computer = play[random.randint(0,2)] #Set the player to False player = False
- 3 Step: Create the game using the while loop:
while player == False: #Set the player to True player = input("Rock, Paper, Scissors?") if player == computer: print("Tie!") elif player == "Rock": if computer == "Paper": print("You lose!", computer, "covers", player) else: print("You win!", player, "smashes", computer) elif player == "Paper": if computer == "Scissors": print("You lose!", computer, "cuts", player) else: print("You win!", player, "covers", computer) elif player == "Scissors": if computer == "Rock": print("You lose...", computer, "smashes", player) else: print("You win!", player, "cuts", computer) else: print("That's not a valid play. Check the spelling!") #Player was set to True, but we want it to be False so the loop continues player = False computer = play[random.randint(0,2)]
Output:
What have we done here?
- We first import the random module of Python.
- Then we set up the game players, i.e., the computer and the user. Here, we use the random.randint() method to generate a random number between 0-2, corresponding to each of the three play options for the computer.
- Next, we create a while loop that runs every time the player chooses a play option – Rock, Paper, or Scissors. Inside, we use a nested if-elif-else loop to determine who wins each time.
Thus, we have created a basic rock-paper-scissors game that will help beginners who are just delving into Python Programming think logically and practice their concepts while having fun!
Next, we are going to build yet another rock-paper-scissors game focusing more on the learners who are a little experienced in Python. This time around, we will be making use of the Tkinter module of Python.
Quick Intro to Tkinter
Tkinter is the most commonly used Graphical User Interface (GUI) package in Python. Its ease of use and powerful object-oriented interface provides a seamless way of creating Python GUI applications.
Let’s see how we will build our game application using Tkinter:
Best-suited Python courses for you
Learn Python with these high-rated online courses
Rock Paper Scissors Game Application Using Tkinter
o understand the program below, you should have a basic idea about the following Python concepts:
- Random package
- Tkinter package
- Python Loops
Here, we will develop a computer application that will play rock-paper-scissors with us.
- 1 Step: Download and install the Tkinter package on your terminal:
pip install tkinter
- 2 Step: Import the random and Tkinter packages:
import random import tkinter
- 3 Step: Initialize the window:
#Create Object root = tkinter.Tk() #Set geometry root.geometry("400x400") #Set title root.title("Shiksha Online Rock-Paper-Scissors Game")
What have we done here?
In this step, we have created a Tk root widget to build the main window of our game application.
- We created a root object.
- Set the dimensions of the application window using root.geometry().
- Set the tile of the application using root.title().
- 4 Step: Define a dictionary that takes in the play options for the computer:
#Computer Value computer_dict = { "0":"Rock", "1":"Paper", "2":"Scissors" }
- 5 Step: Create a function that resets the game:
#Reset the game def reset_game(): b1["state"] = "active" b2["state"] = "active" b3["state"] = "active" l1.config(text = "Player ") l3.config(text = "Computer") l4.config(text = "")
- 6 Step: Create a function to disable the button:
#Disable the button def button_disable(): b1["state"] = "disable" b2["state"] = "disable" b3["state"] = "disable"
- 7 Step: Create three functions based on the three play options to select the game winner:
#If player selects rock def player_rock(): c_v = computer_dict[str(random.randint(0,2))] if c_v == "Rock": match_result = "Tie!" elif c_v=="Scissors": match_result = "Player Wins" else: match_result = "Computer Wins" l4.config(text = match_result) l1.config(text = "Rock ") l3.config(text = c_v) button_disable()
#If player selects paper def player_paper(): c_v = computer_dict[str(random.randint(0, 2))] if c_v == "Paper": match_result = "Tie!" elif c_v=="Scissors": match_result = "Computer Wins" else: match_result = "Player Wins" l4.config(text = match_result) l1.config(text = "Paper ") l3.config(text = c_v) button_disable()
#If player selects scissors def player_scissors(): c_v = computer_dict[str(random.randint(0,2))] if c_v == "Rock": match_result = "Computer Wins" elif c_v == "Scissors": match_result = "Tie!" else: match_result = "Player Wins" l4.config(text = match_result) l1.config(text = "Scissors ") l3.config(text = c_v) button_disable()
- 8 Step: Create the Labels, Frames, and Buttons for our GUI application:
#Add Labels, Frames and Button tkinter.Label(root, text = 'Choose any one: Rock, Paper, Scissors', font = "Consolas", fg = "blue").pack(pady = 20)
frame = tkinter.Frame(root) frame.pack()
l1 = tkinter.Label(frame, text = "Player ", font = 10)
l2 = tkinter.Label(frame, text = "VS ", font = "Consolas")
l3 = tkinter.Label(frame, text = "Computer", font = 10)
l1.pack(side = 'left') l2.pack(side = 'left') l3.pack()
l4 = tkinter.Label(root, text = "", font = "Consolas", bg = "white", width = 15 , borderwidth = 2, relief = "solid") l4.pack(pady = 20)
frame1 = tkinter.Frame(root) frame1.pack()
b1 = tkinter.Button(frame1, text = "Rock", font = 8, width = 7, bg = "light blue", command = player_rock)
b2 = tkinter.Button(frame1, text = "Paper ", font = 8, width = 7, bg = "light blue", command = player_paper)
b3 = tkinter.Button(frame1, text = "Scissors", font = 8, width = 7, bg = "light blue", command = player_scissors)
b1.pack(side = 'left', padx = 10) b2.pack(side = 'left', padx = 10) b3.pack(padx = 10)
tkinter.Button(root, text = "Reset Game", font = 10, fg = "red", bg = "light grey", command = reset_game).pack(pady = 20)
#Execute Tkinter root.mainloop()
What have we done here?
In this step, we will create multiple labels:
- A head label that displays the title of the game, we will set its font and properties.
- A player label that displays the play options selected by the player on the left.
- A computer label that displays the play options selected by the computer on the right.
- A label to show the text “vs” between the player and the computer label.
- A result label that displays the result, we will set its font and properties.
Then we will create the buttons:
- Three push buttons for each play option – Rock, Paper, and Scissors.
- A reset button to reset the game.
We will also use the mainloop() function to execute the GUI and wait for the events to happen.
Output:
As you can see above, we have created our very own rock-paper-scissors game application! Let’s click on the Reset Game button again:
Looks pretty cool, doesn’t it?
Endnotes
Hope this article proved helpful and fun in teaching you how to build a rock-paper-scissors game in Python. If you wish to learn more about Python and practice Python programming, you can explore related articles here.
This is a collection of insightful articles from domain experts in the fields of Cloud Computing, DevOps, AWS, Data Science, Machine Learning, AI, and Natural Language Processing. The range of topics caters to upski... Read Full Bio