How To Make Rock Paper Scissors In Python

In this tutorial, we will learn How To Make Rock Paper Scissors In Python with the help of example source codes.

What is Rock Paper Scissors In Python?

Rock Paper Scissors is a hand game that started in China. It is usually played by two people, and each player makes one of three shapes with their hands at the same time. “Rock,” “Paper,” and “Scissors” are the names of these shapes.

How To Make Rock Paper Scissors In Python With Source Code

Here are the steps on How To Code Rock Paper Scissors.

Step 1: Import Libraries

First, Import all required libraries for the Rock Paper Scissors.

from tkinter import *
import random

Step 2: Add A Tkinter Form

Next, we will create a screen display of the game and name the screen “Rock, Paper, Scissors Game”.

from tkinter import *
import random

root = Tk()
root.title("Rock, Paper, Scissors Game")
width = 625
height = 600
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width / 2) - (width / 2)
y = (screen_height / 2) - (height / 2)
root.geometry("%dx%d+%d+%d" % (width, height, x, y))
root.resizable(0, 0)
root.config(bg="white")

if __name__ == '__main__':
    root.mainloop()

Step 3: Add Frame For The Two Players

Next, we will add two frames and images like, blank image, paper image, rock image and scissors image for the player and the computer and then label its frame.

from tkinter import *
import random

root = Tk()
root.title("ROCK, PAPER, SCISSOR GAME")
width = 625
height = 600
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width / 2) - (width / 2)
y = (screen_height / 2) - (height / 2)
root.geometry("%dx%d+%d+%d" % (width, height, x, y))
root.resizable(0, 0)
root.config(bg="white")

# ++++++++++++++++++++IMAGES++++++++++++++++++++++++++
blank_image = PhotoImage(file="resources/blank.png")
rock_player = PhotoImage(file="resources/rock_player.png")
rock_player_ado = rock_player.subsample(3, 3)
paper_player = PhotoImage(file="resources/paper_player.png")
paper_player_ado = paper_player.subsample(3, 3)
scissor_player = PhotoImage(file="resources/scissor_player.png")
scissor_player_ado = scissor_player.subsample(3, 3)
rock_computer = PhotoImage(file="resources/rock_computer.png")
paper_computer = PhotoImage(file="resources/paper_computer.png")
scissor_computer = PhotoImage(file="resources/scissor_computer.png")






# ++++++++++++++++++++LABEL WIDGET++++++++++++++++++++++++++
player_image = Label(root, image=blank_image)
computer_image = Label(root, image=blank_image)
player_label = Label(root, text="PLAYER")
player_label.grid(row=1, column=1)
player_label.config(fg="black", font=('Times New Roman', 12, 'bold'))
computer_label = Label(root, text="COMPUTER")
computer_label.grid(row=1, column=3)
computer_label.config(fg="black", font=('Times New Roman', 12, 'bold'))
status_label = Label(root, text="", font=('Times New Roman', 12))
status_label.config(bg="white", fg="red", font=('Times New Roman', 20, 'bold'))
player_image.grid(row=2, column=1, padx=30, pady=20)
computer_image.grid(row=2, column=3, pady=20)
status_label.grid(row=3, column=2)


if __name__ == '__main__':
    root.mainloop()

Step 4: Add Images Buttons, Rock, Paper and Scissor

Now, we will add 3 Images buttons, the rock, paper and scissor buttons.

from tkinter import *
import random

root = Tk()
root.title("ROCK, PAPER, SCISSOR GAME")
width = 625
height = 600
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width / 2) - (width / 2)
y = (screen_height / 2) - (height / 2)
root.geometry("%dx%d+%d+%d" % (width, height, x, y))
root.resizable(0, 0)
root.config(bg="white")

# ++++++++++++++++++++IMAGES++++++++++++++++++++++++++
blank_image = PhotoImage(file="resources/blank.png")
rock_player = PhotoImage(file="resources/rock_player.png")
rock_player_ado = rock_player.subsample(3, 3)
paper_player = PhotoImage(file="resources/paper_player.png")
paper_player_ado = paper_player.subsample(3, 3)
scissor_player = PhotoImage(file="resources/scissor_player.png")
scissor_player_ado = scissor_player.subsample(3, 3)
rock_computer = PhotoImage(file="resources/rock_computer.png")
paper_computer = PhotoImage(file="resources/paper_computer.png")
scissor_computer = PhotoImage(file="resources/scissor_computer.png")


# ++++++++++++++++++++LABEL WIDGET++++++++++++++++++++++++++
player_image = Label(root, image=blank_image)
computer_image = Label(root, image=blank_image)
player_label = Label(root, text="PLAYER")
player_label.grid(row=1, column=1)
player_label.config(fg="black", font=('Times New Roman', 12, 'bold'))
computer_label = Label(root, text="COMPUTER")
computer_label.grid(row=1, column=3)
computer_label.config(fg="black", font=('Times New Roman', 12, 'bold'))
status_label = Label(root, text="", font=('Times New Roman', 12))
status_label.config(bg="white", fg="red", font=('Times New Roman', 20, 'bold'))
player_image.grid(row=2, column=1, padx=30, pady=20)
computer_image.grid(row=2, column=3, pady=20)
status_label.grid(row=3, column=2)

# ++++++++++++++++++++BUTTON WIDGET++++++++++++++++++++++++++
rock = Button(root, image=rock_player_ado)
paper = Button(root, image=paper_player_ado)
scissor = Button(root, image=scissor_player_ado)
rock.grid(row=4, column=1, pady=30)
paper.grid(row=4, column=2, pady=30)
scissor.grid(row=4, column=3, pady=30)

# ++++++++++++++++++++INITIALIZATION++++++++++++    ++++++++++++++
if __name__ == '__main__':
    root.mainloop()

Step 5: Add Events To The Buttons

Lastly, we will add an event to the given 3 buttons. Also, we will add the match process between the player and the computer.

from tkinter import *
import random

root = Tk()
root.title("ROCK, PAPER, SCISSOR GAME")
width = 625
height = 600
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width / 2) - (width / 2)
y = (screen_height / 2) - (height / 2)
root.geometry("%dx%d+%d+%d" % (width, height, x, y))
root.resizable(0, 0)
root.config(bg="white")

# ++++++++++++++++++++IMAGES++++++++++++++++++++++++++
blank_image = PhotoImage(file="resources/blank.png")
rock_player = PhotoImage(file="resources/rock_player.png")
rock_player_ado = rock_player.subsample(3, 3)
paper_player = PhotoImage(file="resources/paper_player.png")
paper_player_ado = paper_player.subsample(3, 3)
scissor_player = PhotoImage(file="resources/scissor_player.png")
scissor_player_ado = scissor_player.subsample(3, 3)
rock_computer = PhotoImage(file="resources/rock_computer.png")
paper_computer = PhotoImage(file="resources/paper_computer.png")
scissor_computer = PhotoImage(file="resources/scissor_computer.png")


# ++++++++++++++++++++METHODS++++++++++++++++++++++++++
def Rock():
    global player_option
    player_option = 1
    player_image.configure(image=rock_player)
    MatchProcess()


def Paper():
    global player_option
    player_option = 2
    player_image.configure(image=paper_player)
    MatchProcess()


def Scissor():
    global player_option
    player_option = 3
    player_image.configure(image=scissor_player)
    MatchProcess()


def MatchProcess():
    computer_option = random.randint(1, 3)
    if computer_option == 1:
        computer_image.configure(image=rock_computer)
        RockCom()
    elif computer_option == 2:
        computer_image.configure(image=paper_computer)
        PaperCom()

    elif computer_option == 3:
        computer_image.configure(image=scissor_computer)
        ScissorCom()


def RockCom():
    if player_option == 1:
        status_label.config(text="Game Tie")
    elif player_option == 2:
        status_label.config(text="Player Win")
    elif player_option == 3:
        status_label.config(text="Computer Win")


def PaperCom():
    if player_option == 1:
        status_label.config(text="Computer Win")
    elif player_option == 2:
        status_label.config(text="Game Tie")
    elif player_option == 3:
        status_label.config(text="Player Win")


def ScissorCom():
    if player_option == 1:
        status_label.config(text="Player Win")
    elif player_option == 2:
        status_label.config(text="Computer Win")
    elif player_option == 3:
        status_label.config(text="Game Tie")



# ++++++++++++++++++++LABEL WIDGET++++++++++++++++++++++++++
player_image = Label(root, image=blank_image)
computer_image = Label(root, image=blank_image)
player_label = Label(root, text="PLAYER")
player_label.grid(row=1, column=1)
player_label.config(fg="black", font=('Times New Roman', 12, 'bold'))
computer_label = Label(root, text="COMPUTER")
computer_label.grid(row=1, column=3)
computer_label.config(fg="black", font=('Times New Roman', 12, 'bold'))
status_label = Label(root, text="", font=('Times New Roman', 12))
status_label.config(bg="white", fg="red", font=('Times New Roman', 20, 'bold'))
player_image.grid(row=2, column=1, padx=30, pady=20)
computer_image.grid(row=2, column=3, pady=20)
status_label.grid(row=3, column=2)

# ++++++++++++++++++++BUTTON WIDGET++++++++++++++++++++++++++
rock = Button(root, image=rock_player_ado, command=Rock)
paper = Button(root, image=paper_player_ado, command=Paper)
scissor = Button(root, image=scissor_player_ado, command=Scissor)
rock.grid(row=4, column=1, pady=30)
paper.grid(row=4, column=2, pady=30)
scissor.grid(row=4, column=3, pady=30)

# ++++++++++++++++++++INITIALIZATION++++++++++++    ++++++++++++++
if __name__ == '__main__':
    root.mainloop()

Download Full Source Code!

Visit this site to download the Full Source Code on How To Make Rock Paper Scissors For Free!

Conclusion

We have successfully discussed a step-by-step process on How To Make Rock Paper Scissors In Python, which we learned with the help of examples. I hope this Python Game Tutorial will help you a lot.

Leave a Comment