-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathScissor_paper_rock.py
More file actions
149 lines (109 loc) · 3.77 KB
/
Copy pathScissor_paper_rock.py
File metadata and controls
149 lines (109 loc) · 3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
from tkinter import *
from PIL import ImageTk, Image
import random
# main window object
root = Tk()
root.title('Rock Paper Scissor')
root.geometry('800x680')
# Creating canvas
canvas = Canvas(root, width=800, height=680)
canvas.grid(row=0, column=0)
# Creating labels on GUI window
l1 = Label(root, text='Player', font=('Algerian', 25))
l2 = Label(root, text='Computer', font=('Algerian', 25))
l3 = Label(root, text='Vs', font=('Algerian', 40))
# Placing all the labels on window
l1.place(x=80, y=20)
l2.place(x=560, y=20)
l3.place(x=370, y=230)
# Default image
img_p = Image.open("default.jpeg")
img_p = img_p.resize((300, 300))
# Flipping image from left to right
img_c = img_p.transpose(Image.FLIP_LEFT_RIGHT)
# Loading images to put on canvas
img_p = ImageTk.PhotoImage(img_p)
img_c = ImageTk.PhotoImage(img_c)
# Rock image
rock_p = Image.open('rock.jpeg')
rock_p = rock_p.resize((300, 300))
# Flipping image from left to right
rock_c = rock_p.transpose(Image.FLIP_LEFT_RIGHT)
# Loading images to put on canvas
rock_p = ImageTk.PhotoImage(rock_p)
rock_c = ImageTk.PhotoImage(rock_c)
# Paper image
paper_p = Image.open('paper.jpeg')
paper_p = paper_p.resize((300, 300))
paper_c = paper_p.transpose(Image.FLIP_LEFT_RIGHT)
paper_p = ImageTk.PhotoImage(paper_p)
paper_c = ImageTk.PhotoImage(paper_c)
# Scissor image
scissor_p = Image.open('scissor.jpeg')
scissor_p = scissor_p.resize((300, 300))
scissor_c = scissor_p.transpose(Image.FLIP_LEFT_RIGHT)
scissor_p = ImageTk.PhotoImage(scissor_p)
scissor_c = ImageTk.PhotoImage(scissor_c)
# Selection image
img_s = Image.open("selection.jpg")
img_s = img_s.resize((300, 130))
img_s = ImageTk.PhotoImage(img_s)
# Putting image on canvas on specific coordinates
canvas.create_image(0, 100, anchor=NW, image=img_p)
canvas.create_image(500, 100, anchor=NW, image=img_c)
canvas.create_image(0, 400, anchor=NW, image=img_s)
canvas.create_image(500, 400, anchor=NW, image=img_s)
# game function
def game(player):
select = [1, 2, 3]
# Randomly selects option for computer
computer = random.choice(select)
# Setting image for player on canvas
if player == 1:
# Puts rock image on canvas
canvas.create_image(0, 100, anchor=NW, image=rock_p)
elif player == 2:
canvas.create_image(0, 100, anchor=NW, image=paper_p)
else:
canvas.create_image(0, 100, anchor=NW, image=scissor_p)
# Setting image for computer on canvas
if computer == 1:
# Puts rock image on canvas
canvas.create_image(500, 100, anchor=NW, image=rock_c)
elif computer == 2:
# Puts paper image on canvas
canvas.create_image(500, 100, anchor=NW, image=paper_c)
else:
canvas.create_image(500, 100, anchor=NW, image=scissor_c)
# Obtaining result by comparison
if player == computer:
res = 'Draw'
# Case of player's win
elif (player == 1 and computer == 3) or (player == 2 and computer == 1) or(player == 3 and computer == 2):
res = 'You won'
# Case of computer's win
else:
res = 'Computer won'
# Putting result on canvas
canvas.create_text(390, 600, text='Result:- ' + res,
fill="black", font=('Algerian', 25), tag='result')
# Function for clear button
def clear():
# Removes result from canvas
canvas.delete('result')
# Puts default image on canvas
canvas.create_image(0, 100, anchor=NW, image=img_p)
canvas.create_image(500, 100, anchor=NW, image=img_c)
# Button for selecting rock
rock_b = Button(root, text='Rock', command=lambda: game(1))
rock_b.place(x=35, y=487)
# Button for selecting paper
paper_b = Button(root, text='Paper', command=lambda: game(2))
paper_b.place(x=128, y=487)
# Button for selecting scissor
scissor_b = Button(root, text='Scissor', command=lambda: game(3))
scissor_b.place(x=220, y=487)
# Button for clear
clear_b = Button(root, text='CLEAR', font=('Times', 10, 'bold'),
width=10, command=clear).place(x=370, y=28)
root.mainloop()