使用 Python 和 Kivy 的小型纸牌游戏

Posted

技术标签:

【中文标题】使用 Python 和 Kivy 的小型纸牌游戏【英文标题】:small card game with Python and Kivy 【发布时间】:2021-07-04 20:00:00 【问题描述】:

我正在使用 Python 和 Kivy 开发一个程序。我想编写一个游戏,程序会从 skat 牌组中随机发出一张牌(这已经很好了!)。然后每张卡片后应该出现一个任务。任务总是取决于数字或图片:例如,在每 7 个任务之后“每个人都应该喝 3 口!”来吧。

有人可以帮我解决这个问题吗?不幸的是,我无法继续前进。

谢谢你和最好的问候

其中一个代码(程序以德语输出):

from random import randint

# Global variables
cardSuits = ['PIK', 'HERZ', 'KARO', 'KREUZ']
courtCards = ['BUBE', 'DAME', 'KÖNIG']
cardRanks = ['ASS'] + [''.format(x) for x in range(7, 11)] + courtCards
cardsDrawn = []

# Functions
def draw_a_card(self, *args):

    # a deck of card has 32 playing cards
    if len(cardsDrawn) >= 32:
        print("\tcards_drawn=", sorted(cardsDrawn))
        return 'Alle Karten wurden ausgeteilt!'
    
    # Example set of 32 playing cards; 8 of each suit clubs, diamonds, hearts, and spades
    suit = randint(1, 4)
    rank = randint(1, 8)
    card = '0-1:02d'.format(suit, rank)

    if card not in cardsDrawn:
        cardsDrawn.append(card)
        return '1 0'.format(cardRanks[rank-1], cardSuits[suit-1])
        
    else:
        return draw_a_card(self, args)

【问题讨论】:

你能用卡片排名作为任务列表的索引吗? @JohnAnderson 我以前试过这个,但做错了。你能告诉我怎么做吗?那我再试一次。 【参考方案1】:

尝试创建一个任务列表并使用卡片排名作为列表中的索引。比如:

from random import randint

# Global variables
cardSuits = ['PIK', 'HERZ', 'KARO', 'KREUZ']
courtCards = ['BUBE', 'DAME', 'KÖNIG']
cardRanks = ['ASS'] + [''.format(x) for x in range(7, 11)] + courtCards
cardsDrawn = []
tasks = ["unused", "task1", "task2", "task3", "task4", "task5", "task6",  "Everyone should drink 3 sips!", "task8"]

# Functions
def draw_a_card(self, *args):

    # a deck of card has 32 playing cards
    if len(cardsDrawn) >= 32:
        print("\tcards_drawn=", sorted(cardsDrawn))
        return 'Alle Karten wurden ausgeteilt!'
    
    # Example set of 32 playing cards; 8 of each suit clubs, diamonds, hearts, and spades
    suit = randint(1, 4)
    rank = randint(1, 8)
    card = '0-1:02d'.format(suit, rank)
    the_task = tasks[rank]

    if card not in cardsDrawn:
        cardsDrawn.append(card)
        return '1 0'.format(cardRanks[rank-1], cardSuits[suit-1])
        
    else:
        return draw_a_card(self, args)

也许将任务添加到返回字符串中。

【讨论】:

非常感谢,帮了大忙!但是,任务尚未显示在输出中。跟基维有关系吗?还是因为 Python 代码? 可以加一行:print(the_task).

以上是关于使用 Python 和 Kivy 的小型纸牌游戏的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python kivy 创建游戏开始菜单

Python、Kivy 和 Android 游戏 [关闭]

实战用Python+Pygame+Kivy(Buildozer)+Ubuntu开发安卓android手机端apk游戏及踩坑分享

不能让 id 在 Python 中工作! Kivy 新手需要帮助

使用 pyinstaller 生成的基于 kivy 的 Windows exe 的黑屏

Python kivy 较低的小部件位置