You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何加载所有扑克牌图片?解决pygame加载值为字符串的问题

解决Pygame字典存储图片对象而非字符串的问题

嘿,我看你这儿的问题很典型——你现在是把加载图片的代码当成字符串存进字典了,而不是真的去执行这个加载操作拿到图片对象对吧?

你代码里的问题出在这两行:

folder_name = f"pygame.image.load('cards/{card_name}.png')"
cardpngs[card_name] = folder_name

这里的folder_name只是一个字符串,内容是调用加载函数的代码文本,根本没有实际执行pygame.image.load(),自然字典里存的不是图片对象。

正确的修改方式

直接调用pygame.image.load()函数,把它返回的Surface对象存进字典就好,不需要把函数调用包成字符串。修改后的完整代码如下:

self.suits = {'S':'spades', 'H':'hearts', 'D':'diamonds', 'C': 'clubs'}
self.values = {'A':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'T':10, 'J':11, 'Q':12, 'K':13}
cardpngs = {}
for suit in self.suits:
    for symbol in self.values.keys():
        card_name = f"{suit}{symbol}"
        # 直接执行加载函数,传入拼接好的图片路径
        card_image = pygame.image.load(f'cards/{card_name}.png')
        cardpngs[card_name] = card_image

额外小提示

如果担心图片路径错误导致加载失败,可以加个异常捕获处理,避免程序直接崩溃:

for suit in self.suits:
    for symbol in self.values.keys():
        card_name = f"{suit}{symbol}"
        try:
            card_image = pygame.image.load(f'cards/{card_name}.png')
            cardpngs[card_name] = card_image
        except pygame.error:
            print(f"无法加载图片:cards/{card_name}.png")
            # 可以在这里设置一个默认图片或者跳过该卡片

内容的提问来源于stack exchange,提问作者Ceenjay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:57:48