【发布时间】:2019-10-11 02:12:07
【问题描述】:
我正在尝试使用 pygame 和 OOP 在 python 中制作扑克游戏。我之前从 udemy 课程制作了一个基于文本的二十一点游戏,我试图使用一些相同的原理来创建我的套牌,但它不起作用。我遇到的问题是我想创建 52 个卡片对象,并且我希望每个卡片对象具有三个属性(套装、等级和 png 文件)。
class Card:
def __init__(self, suit, rank, pic):
self.suit = suit
self.pic = pic
self.rank = rank
class Deck:
def __init__(self):
self.deck_comp = []
def create_deck(self):
for suit in suits:
for rank in ranks:
for pic in deck:
self.deck_comp.append(Card(suit, rank, pic))
我觉得三个 for 循环是问题所在。在基于文本的二十一点游戏中,这张牌只需要有两个属性。对于这个游戏,我需要卡片对象有图片、价值和花色,以便我可以显示它们并进行比较。
suit 是四个花色字符串的列表 Rank 是作为字符串的卡片名称列表,并且 pic 是 52 个 .png 文件的列表(牌组中的每张卡片一个)
【问题讨论】:
-
欢迎来到 StackOverflow。你能告诉我们问题是什么吗? (您可以编辑您的问题并添加您看到的 Python 错误。)
-
什么是
deck?但是,我假设花色/等级对与图片之间存在一对一的映射,因此您可能想要for suit, rank in product(suits, ranks): self.deck_comp.append(Card(suit, rank, deck[(suit, rank)]))之类的东西,而不是为每张卡迭代每张图片。 -
是的,您当然不想循环播放图片,只需西装和排名,为每张卡片分配一张正确的图片。想必您可以将图片文件命名为“card_s_8.png”等,这样您就可以将文件名从军衔和花色组合起来。