gpt4 book ai didi

python - Yahtzee使用Asciitable,需要分配玩家点数

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:27 24 4
gpt4 key购买 nike

我目前正在开发yahtzee板,但我遇到了很难解决的问题,我的代码目前如下所示:

from terminaltables import AsciiTable

class Player:
def __init__(self,name):
self.name=name
self.ones=0
self.twos=0
self.threes=0
self.fours=0
self.fives=0
self.sixs=0
self.abovesum=0
self.bonus=0
self.onepair=0
self.twopair=0
self.threepair=0
self.fourpair=0
self.smalladder=0
self.bigladder=0
self.house=0
self.chance=0
self.yatzy=0
self.totalsum=0


def __repr__(self):
return self.name

def __str__(self):
return self.name


def welcome():
print("Welcome to the yahtzee game!")
players = int(input("How many players: "))
rounds=0
spelarlista=[]
spelarlista.append("name")
while not players==rounds:
player=input("What is your name?: ")
rounds=rounds+1
spelarlista.append(Player(player))
for i in range(len(spelarlista)):
table_data = [spelarlista,
['Ettor',spelarlista[1:i],","],
['Tvåor'],
['Treor'],
['Fyror'],
['femmor'],
['sexor']]
table = AsciiTable(table_data)
table.inner_row_border = True
print(table.table)
welcome()

假设对于名称,我输入“James”、“Alfred”和“Peter”,然后我将得到每个名称的三列,这实际上是我想要的。下一个问题是,在每一列下,我想分配playerscore。问题是,如果我使用 spelarlista 而不是 spelarlista[1],我只会在第一列中得到一个列表,有没有办法使 asciitable 中的每一行成为标题行?

提前致谢!

最佳答案

您需要使用单个字符串/数字列表,每行不包含其他列表。现在:['Ettor',spelarlista[1:i],","], 看起来像 'Ettor',['James', 'Alfred',","], code> 当您希望它看起来更像 'Ettor', 0, 0, 0 时。

(请注意,由于不是英语,我不知道我的逻辑是否正确!我假设“ettors”==“ones”。)

由于您有一个 Player 对象列表,并且您想要使用其中的分数,因此您可以使用列表推导式从对象创建行,仅选择您想要的属性,例如 (但请参阅下面的*注释):

['Ettor'] + [player.ones for player in spelarlista],
['Tvåor'] + [player.twos for player in spelarlista],
...

其他一些问题:

您应该使用 for 循环而不是 while 循环来获取名称,因为您知道有多少个名称。我会使用更好的变量名称,因为 players 听起来像是存储...玩家(可能是名称) - 特别是因为您使用 player 来存储每个玩家名称。 player 变量的类型应为 Player(类)。

for i in range(number_of_players):
name = input("What is your name?: ")
spelarlista.append(Player(name))

*您当前创建变量 spelarlista 作为 Player 对象列表,第一个位置带有字符串“name”。这是不一致且无益的。我上面的列表推导式在开始时假设没有“名称”。相反,只需在表格中需要时添加“名称”,例如:

table_data = [["Name"] + spelarlista,

您当前的代码在 for 循环中创建表,然后仅使用最后一个。循环是多余的。

希望对您有所帮助。

关于python - Yahtzee使用Asciitable,需要分配玩家点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38915790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com