需要帮助完成飞镖计分系统
我创建了一个飞镖计分系统,可以支持多个玩家,并且在tkinter的图形界面上显示。就像真实的飞镖游戏一样,每个玩家一开始都有501分,我设置了按钮来减少分数,以模拟投掷飞镖的过程。
我快完成了,但我希望能让玩家的分数不低于0。目前的情况是,分数会变成负数。例如,如果一个玩家的分数是5分,然后投中了20分,那么分数就会变成-15,而不是停在0分。
希望能得到一些帮助!
这是我的代码(抱歉有点长):
import tkinter
from tkinter import *
class Application(object):
def __init__(self):
self.playerNames = []
self.playerScores = []
self.root = tkinter.Tk()
self.gameCounter=0
self.numberPlayers=0
self.inputNumber=0
self.root.title("Darts!")
self.root.configure(background="light blue")
self.welcomeLabel = tkinter.Label(text="Welcome to Darts!", bg="light blue", fg="red")
self.welcomeLabel.grid(column=0, row=0)
self.dartsLabel = tkinter.Label(text = "Enter Player names in one by one", bg="light blue", fg="Dark blue")
self.dartsLabel.grid(column=0, row=1)
self.nameEntry = tkinter.Entry(text="OK", fg="purple")
self.nameEntry.grid(column=0, row=2)
self.btnAddListItem = tkinter.Button(text = "Add Player", command = self.addNewName, bg="light grey")
self.btnAddListItem.grid(column=0, row=3)
self.finishedAdding = tkinter.Button(text = "Play Darts!", command = self.displayNames, bg="light grey")
self.finishedAdding.grid(column=0, row=4)
self.QuitBtn = tkinter.Button(text="Quit", command=self.comfirmQuit, bg="light grey")
self.QuitBtn.grid(column=0, row=20)
def comfirmQuit(self):
self.comfirmQuitLabel = tkinter.Label(text="Are you sure?", bg="light blue", fg="red")
self.comfirmQuitLabel.grid(column=0, row=21)
self.comfirmQuitButton = tkinter.Button(text="Yes", command= self.quitGame, bg="light grey")
self.comfirmQuitButton.grid(column=0, row=22)
self.cancelQuitButton = tkinter.Button(text="No", command=self.cancelQuit, bg="light grey")
self.cancelQuitButton.grid(column=0, row=23)
def quitGame(self):
global root
self.root.destroy()
def cancelQuit(self):
self.comfirmQuitButton.destroy()
self.cancelQuitButton.destroy()
self.comfirmQuitLabel.destroy()
def addNewName(self):
Inputname = self.nameEntry.get()
self.playerNames.append(Inputname)
self.nameEntry.delete(0, tkinter.END)
def displayNames(self):
self.welcomeLabel.destroy()
self.dartsLabel.destroy()
self.nameEntry.destroy()
self.btnAddListItem.destroy()
self.finishedAdding.destroy()
self.labelsForPlayerNames = []
self.numberPlayers=len(self.playerNames)
while self.numberPlayers>self.gameCounter:
self.playerScores.append(501)
self.gameCounter+=1
self.turnCounter=0
self.playerCounter=0
self.roundNumber=1
self.theScore()
def theScore(self):
self.dartsLabel = tkinter.Label(text = "Turn: " + self.playerNames[0], bg="light blue", fg="dark blue")
self.dartsLabel.grid(column=0, row=0)
self.playerScoreLabel = tkinter.Label(text =self.playerScores[0], bg="light blue", fg="red")
self.playerScoreLabel.grid(column=0, row=3)
self.scoreSpin=Spinbox(from_ =1, to=20, bg="light grey", fg="purple")
self.scoreSpin.grid(column=0, row=2)
self.btnAddListItem = tkinter.Button(text = "No Multiplier", command = self.singleScore, bg="light grey")
self.btnAddListItem.grid(column=0, row=4)
self.btnAddListItem = tkinter.Button(text = "2x Multiplier", command = self.doubleScore, bg="light grey")
self.btnAddListItem.grid(column=0, row=5)
self.btnAddListItem = tkinter.Button(text = "3x Multiplier", command = self.tripleScore, bg="light grey")
self.btnAddListItem.grid(column=0, row=6)
self.btnAddListItem = tkinter.Button(text = "Half Bullseye", command = self.scoreHalfBullseye, bg="light grey")
self.btnAddListItem.grid(column=0, row=7)
self.btnAddListItem = tkinter.Button(text = "Bullseye", command = self.scoreBullseye, bg="light grey")
self.btnAddListItem.grid(column=0, row=8)
def singleScore(self):
self.inputNumber = int(self.scoreSpin.get())
self.scoringSystem()
def doubleScore(self):
self.inputNumber = int(self.scoreSpin.get())
self.inputNumber=self.inputNumber*2
self.scoringSystem()
def tripleScore(self):
self.inputNumber = int(self.scoreSpin.get())
self.inputNumber=self.inputNumber*3
self.scoringSystem()
def scoreHalfBullseye(self):
self.inputNumber = 25
self.scoringSystem()
def scoreBullseye(self):
self.inputNumber = 50
self.scoringSystem()
def scoringSystem(self):
self.turnCounter+=1
self.playerScores[self.playerCounter]=self.playerScores[self.playerCounter]-self.inputNumber
self.playerScoreLabel.config(text= self.playerScores[self.playerCounter])
self.dartsLabel.grid(column=0, row=3)
if self.turnCounter>2:
self.playerCounter+=1
self.turnCounter=0
if self.playerCounter>=self.numberPlayers:
self.playerCounter=0
self.roundNumber+=1
self.displayScores()
self.dartsLabel.config(text= "Turn: " + self.playerNames[self.playerCounter])
self.dartsLabel.grid(column=0, row=0)
self.root.wm_title("Round: %d" % self.roundNumber)
def displayScores(self):
self.dartsLabel.destroy()
self.scoreSpin.destroy()
self.btnAddListItem.destroy()
self.root.wm_title("Round Scores")
self.theScore()
myApp = Application()
myApp.root.mainloop()
1 个回答
0
假设你希望在潜在得分大于实际得分时,不发生任何事情:
if potential_score > actual_score:
pass
else:
compute_score()