回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>所以,我是python新手,我正在用tkinter制作这个石头剪刀游戏。我有一个问题,清除文字说,如果你赢或输后,你玩一次。我试着用<code>destroy()</code>来做,但我无法让它工作。问题是,当你第一次选择石头布或剪刀时,它会起作用,但下次你玩的每一个游戏都会覆盖旧的分数</p>
<pre><code>from tkinter import *
import random
root = Tk()
#Functions
def Rock():
user = "r"
computer = random.choice(['r', 'p', 's'])
if user == computer:
UsedLabel = Label(root, text="You Tied!")
UsedLabel.grid(row=2 , column=1)
if is_win(user, computer):
UsedLabel = Label(root, text="You Have Won!")
UsedLabel.grid(row=2 , column=1)
else:
UsedLabel = Label(root, text="You Lost!")
UsedLabel.grid(row=2 , column=1)
def Paper():
user = "p"
computer = random.choice(['r', 'p', 's'])
if user == computer:
UsedLabel = Label(root, text="You Tied!")
UsedLabel.grid(row=2 , column=1)
if is_win(user, computer):
UsedLabel = Label(root, text="You Have Won!")
UsedLabel.grid(row=2 , column=1)
else:
UsedLabel = Label(root, text="You Lost!")
UsedLabel.grid(row=2 , column=1)
def Scissors():
user = "s"
computer = random.choice(['r', 'p', 's'])
if user == computer:
UsedLabel = Label(root, text="You Tied!")
UsedLabel.grid(row=2 , column=1)
if is_win(user, computer):
UsedLabel = Label(root, text="You Have Won!")
UsedLabel.grid(row=2 , column=1)
else:
UsedLabel = Label(root, text="You Lost!")
UsedLabel.grid(row=2 , column=1)
#def iswin
def is_win(player, opponent):
if (player == 'r' and opponent == 's') or (player == 's' and opponent == 'p') or (player == 'p' and opponent == 'r'):
return True
# Main Label
MainLabel = Label(root, text="Rock Paper or Scissors? Chose one!")
MainLabel.grid(row=0, column=1)
#Buttons
RockB = Button(root, text=" Rock! ", padx=20, pady=10, command=Rock)
PaperB = Button(root, text=" Paper! ", padx=20, pady=10, command=Paper)
ScissorsB = Button(root, text=" Scissors! ", padx=20, pady=10, command=Scissors)
ScissorsB.grid(row=1, column=2)
PaperB.grid(row=1, column=1)
RockB.grid(row=1, column=0)
root.mainloop()
</code></pre>