我正在创建一个UNO游戏。我想我在Uno,def playGame和playTurn课上有个问题。我得到以下错误。在def playGame中,我试着检查球员的牌盘或手是否是空的。如果是这样的话,比赛就结束了,我们有一个胜利者。在playTurn中,我通过将卡片发送到canPlay函数来检查玩家手中是否有一张可玩的牌。如果有一张可玩的牌,那么玩家就玩这张牌,我把牌从手上移走。
"c:\Users\yaman\OneDrive\Desktop\uno_game.py",跟踪(最近一次调用):
()中的第150行文件
文件"c:\Users\yaman\OneDrive\Desktop\uno_game.py",第147行,在主my_game.playGame()中
文件"c:\Users\yaman\OneDrive\Desktop\uno_game.py",第92行,在playGame self.lastPlayedCard=random.choice(self.hand1)中
文件"C:\Python39\lib\random.py",第347行,选择返回seqself._randbelow(len(seq)) TypeError:类型为'CollectionOfUnoCards‘的对象没有len()
发布于 2021-12-26 20:28:52
您试图计算CollectionOfUnoCards的大小,但程序失败。在python中,您应该声明自定义__len__方法来调用自定义类上的len函数。
尝试像这样将__len__添加到CollectionOfUnoCards中
class CollectionOfUnoCards:
def __len__(self):
return len(self.cardlist)另外,这里也有错误。
random.choice(self.hand1) -> random.choice(self.hand1.cardlist),因为您可以在list.for card in self.hand1: -> for card in self.hand1.cardlist:self.hand1.remove(play) -> self.hand1.cardlist.remove(play)上调用random.choice
https://stackoverflow.com/questions/70489573
复制相似问题