所以在这个石头剪刀布游戏中,我得分了,但由于某种原因,在再移动一步后,得分会重置。例如,我赢了,然后我的分数增加到1。如果我再次输了,虽然它总是回到0,而不是对手得到一分。这是我的代码:
import random
from tkinter import *
from tkinter.font import Font
from PIL import ImageTk, Image
OppoScore = 0
PlayerScore = 0
OpponentMove = ""
PlayerMove = ""
#Make Opponent Move
def Opponent(RockLabel, Rock, Paper, Scissors):
global OpponentMove
Choice = random.choice(range(3))
if Choice == 0:
RockLabel.config(image=Rock)
OpponentMove = "rock"
if Choice == 1:
RockLabel.config(image=Paper)
OpponentMove = "paper"
if Choice == 2:
RockLabel.config(image=Scissors)
OpponentMove = "scissors"
#Make 'Rock' Button React
def RockFun(Label2, Label, Rock, Paper, Scissors, FlippedRock):
global PlayerMove, OpponentMove, PlayerScore, OppoScore
Opponent(Label2, Rock, Paper, Scissors)
Label.config(image=FlippedRock)
PlayerMove = "rock"
Score(PlayerMove, OpponentMove, PlayerScore, OppoScore)
#Make 'Paper' Button React
def PaperFun(Label2, Label, Rock, Paper, Scissors, FlippedPaper):
global PlayerMove, OpponentMove, PlayerScore, OppoScore
Opponent(Label2, Rock, Paper, Scissors)
Label.config(image=FlippedPaper)
PlayerMove = "paper"
Score(PlayerMove, OpponentMove, PlayerScore, OppoScore)
#Make 'Scissors' Button React
def ScissorsFun(Label2, Label, Rock, Scissors, Paper, FlippedScissors):
global PlayerMove, OpponentMove, PlayerScore, OppoScore, OppoScoreTxt, PlayScoreTxt
Opponent(Label2, Rock, Paper, Scissors)
Label.config(image=FlippedScissors)
PlayerMove = "scissors"
Score(PlayerMove, OpponentMove, PlayerScore, OppoScore)
def Score(Player, Opponent, PlayScore, OppoScore):
global OppoVar, PlayVar
if Player == "rock" and Opponent == "rock":
PlayScore += 0
OppoScore += 0
if Player == "rock" and Opponent == "paper":
OppoScore += 1
if Player == "rock" and Opponent == "scissors":
PlayScore += 1
if Player == "paper" and Opponent == "rock":
PlayScore += 1
if Player == "paper" and Opponent == "paper":
PlayScore += 0
OppoScore += 0
if Player == "paper" and Opponent == "scissors":
OppoScore += 1
if Player == "scissors" and Opponent == "rock":
PlayScore += 0
OppoScore += 0
if Player == "scissors" and Opponent == "paper":
OppoScore += 1
if Player == "scissors" and Opponent == "scissors":
PlayScore += 1
OppoVar.set(str(OppoScore))
PlayVar.set(str(PlayScore))
#Window Settings
root = Tk()
root.geometry("600x600")
root.title("Rock, Paper, Scissors!")
root.iconbitmap("icon.ico")
root.resizable(False, False)
root.config(bg="#ff7575")
#Buttons
Rock = Button(root,text="Rock", height=5, width=20, bd=0, command= lambda: RockFun(RockLabel, RockFlippedLabel, Rock, Paper, Scissors, RockFlipped))
Rock.place(x=50, y=400)
Paper = Button(root,text="Paper", height=5, width=20, bd=0, command= lambda: PaperFun(RockLabel, RockFlippedLabel, Rock, Paper, Scissors, PaperFlipped))
Paper.place(x=225, y=400)
Scissors = Button(root,text="Scissors", height=5, width=20, bd=0, command= lambda: ScissorsFun(RockLabel, RockFlippedLabel, Rock, Scissors, Paper, ScissorsFlipped))
Scissors.place(x=400, y=400)
#Score Text
OppoVar = StringVar()
PlayVar = StringVar()
Font1 = Font(family="comicsansms", size=50)
OppoScoreTxt = Label(root, textvariable=OppoVar, font=Font1, bg="#ff7575")
OppoScoreTxt.place(x=100, y=500)
PlayScoreTxt = Label(root, textvariable=PlayVar, font=Font1, bg="#ff7575")
PlayScoreTxt.place(x=450, y=500)
OppoVar.set(str(OppoScore))
PlayVar.set(str(PlayerScore))
#Opponent Hand (Set as rock)
RockImage = Image.open("Rock.png")
RockImage1 = RockImage.resize((300, 300), Image.ANTIALIAS)
Rock = ImageTk.PhotoImage(RockImage1)
RockLabel = Label(root, image=Rock, bg="white")
RockLabel.place(x= -2, y=75)
#Player Hand (Set as rock). Flipped images in this
RockImageFlipped = Image.open("RockFlipped.png")
RockImageFlipped1 = RockImageFlipped.resize((300, 300), Image.ANTIALIAS)
RockFlipped = ImageTk.PhotoImage(RockImageFlipped1)
RockFlippedLabel = Label(root, image=RockFlipped, bg="white")
RockFlippedLabel.place(x=298, y=75)
#Scissors
ScissorsImage = Image.open("Scissors.png")
ScissorsImage1 = ScissorsImage.resize((300, 300), Image.ANTIALIAS)
Scissors = ImageTk.PhotoImage(ScissorsImage1)
#Paper
PaperImage = Image.open("Paper.png")
PaperImage1 = PaperImage.resize((300, 300), Image.ANTIALIAS)
Paper = ImageTk.PhotoImage(PaperImage1)
#Flipped Rock
ScissorsFlippedImage = Image.open("ScissorsFlipped.png")
ScissorsFlippedImage1 = ScissorsFlippedImage.resize((300, 300), Image.ANTIALIAS)
ScissorsFlipped = ImageTk.PhotoImage(ScissorsFlippedImage1)
#Flipped Paper
PaperFlippedImage = Image.open("PaperFlipped.png")
PaperFlippedImage1 = PaperFlippedImage.resize((300, 300), Image.ANTIALIAS)
PaperFlipped = ImageTk.PhotoImage(PaperFlippedImage1)
#Loop the window
root.mainloop()
请帮忙。我花了两个小时寻找哪里出了问题,但我找不到。我是Tkinter的中间人,所以如果这是一个简单的解决方案,对不起。