Code: Select all
from Tkinter import *
from ttk import *
import random
import sys
new_options = ["Rock","Paper","Scissors","Lizard","Spock"]
rules = [("","",""),
("Scissors","Paper","cut"),
("Paper","Rock","covers"),
("Rock","Lizard","crushes"),
("Lizard","Spock","poisons"),
("Spock","Scissors","smashes"),
("Scissors","Lizard","decapitate"),
("Lizard","Paper","eats"),
("Paper","Spock","disproves"),
("Spock","Rock","vaporizes"),
("Rock","Scissors","crushes")]
def computerRandom():
options = ["Rock","Paper","Scissors","Lizard","Spock"]
randomChoice = random.randint(0,len(options)-1)
computer_choice.set(options[randomChoice]) ##added into the program
return options[randomChoice]
def comparison(humanChoice, computerChoice):
global rules
win = 0
if humanChoice == computerChoice:
win = 0
else:
ruleIdx = 0
for rule in rules:
if (humanChoice == rule[0]) and (computerChoice == rule[1]):
win = ruleIdx
elif (humanChoice == rule[1]) and (computerChoice == rule[0]):
win = -(ruleIdx)
else:
pass
ruleIdx += 1
print humanChoice, computerChoice, win
return win
def play():
humanChoice = player_choice.get() ##Modified this line
computerChoice = computerRandom()
result = comparison(humanChoice, computerChoice)
if result == 0:
text = "Its a draw"
elif result < 0:
text = "%s %s %s - You Lose" % (rules[-result][0],rules[-result][2],rules[-result][1])
elif result > 0:
text = "%s %s %s - You Win" % (rules[result][0],rules[result][2],rules[result][1])
result_set.set(text)
##Setup of main GUI
root = Tk()
root.title ('Rock Paper Scissors')
mainframe = Frame(root, padding = '3 3 12 12')
mainframe.grid(column=0, row = 0, sticky=(N,W,E,S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0,weight=1)
##Variables
player_choice = StringVar()
computer_choice = StringVar()
result_set = StringVar()
##Layout of GUI
##Player
Label(mainframe, text='Player').grid(column=1, row = 1, sticky = W)
Radiobutton(mainframe, text ='Rock', variable = player_choice, value = 'Rock').grid(column=1, row=2, sticky=W)
Radiobutton(mainframe, text ='Paper', variable = player_choice, value = 'Paper').grid(column=1, row=3, sticky=W)
Radiobutton(mainframe, text ='Scissors', variable = player_choice, value = 'Scissors').grid(column=1, row=4, sticky=W)
Radiobutton(mainframe, text ='Lizard', variable = player_choice, value = 'Lizard').grid(column=1, row=5, sticky=W)
Radiobutton(mainframe, text ='Spock', variable = player_choice, value = 'Spock').grid(column=1, row=6, sticky=W)
##Computer
Label(mainframe, text='Computer').grid(column=3, row = 1, sticky = W)
Radiobutton(mainframe, text ='Rock', variable = computer_choice, value = 'Rock').grid(column=3, row=2, sticky=W)
Radiobutton(mainframe, text ='Paper', variable = computer_choice, value = 'Paper').grid(column=3, row=3, sticky=W)
Radiobutton(mainframe, text ='Scissors', variable = computer_choice, value = 'Scissors').grid(column=3, row=4, sticky=W)
Radiobutton(mainframe, text ='Lizard', variable = computer_choice, value = 'Lizard').grid(column=3, row=5, sticky=W)
Radiobutton(mainframe, text ='Spock', variable = computer_choice, value = 'Spock').grid(column=3, row=6, sticky=W)
##Play
Button(mainframe, text="Play", command = play).grid(column = 2, row = 2, sticky = W)
##Result
Label(mainframe, textvariable = result_set).grid(column = 1, row = 7, sticky =W, columnspan = 2)
root.mainloop()