如何加载所有扑克牌图片?解决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
相关产品推荐
相关产品推荐

