python - 有人可以帮我在 pygame 中为扑克游戏创建一副纸牌吗

标签 python oop pygame poker

我正在尝试使用 pygame 和 OOP 在 python 中制作扑克游戏。我之前从 udemy 类(class)中制作了一个基于文本的二十一点游戏,我试图使用一些相同的原则来创建我的套牌,但它不起作用。我遇到的问题是我想创建 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 循环上。在基于文本的二十一点游戏中,牌只需要有两个属性。对于这个游戏,我需要纸牌对象有图片、值(value)和花色,这样我就可以显示它们并进行比较。

suit 是四个 suit 字符串的列表 Rank 是作为字符串的卡片名称列表, pic 是一个包含 52 个 .png 文件的列表(一副牌中的每张卡片一个)

最佳答案

将所有 png 名称保存在字典中,并在 Card 类中分配图像不是更明智吗?

class Card:
    def __init__(self, value, suit):
        self.value = value
        self.suit = suit
        self.img = png_images[f'{value}{suit}']

class Deck:
        def __init__(self, shuffle_cards=True):
        self.cards = []
        self.shuffle_cards = shuffle_cards
        self.create()

    def create(self):
        for _ in range(number_of_decks):
            for val in (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
                for suit in ("Hearts", "Spades", "Clubs", "Diamonds"):
                    self.cards.append(Card(val, suit))

        if self.shuffle_cards:
            shuffle(self.cards)

关于python - 有人可以帮我在 pygame 中为扑克游戏创建一副纸牌吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56293239/

相关文章:

python - 使用 pip-install 的 Python 包的综合下载统计信息

python - sklearn preprocessing.scale() 函数,什么时候使用它?

python - 在已经存在的 docker 镜像(不是容器)中运行安装命令?

python - 游戏中的船在额外按键时不会移动

python - 使用scp批量传输文件

每次都接受一个随机参数的 JavaScript 函数

java - 仅在终端中给出错误?

javascript - Javascript 原型(prototype)继承中数组和数字数据类型之间有区别吗?

python - 有什么东西可以影响 time.sleep() 比我需要的更早发生吗?

python - Pygame 程序中奇怪的滞后