如何从Pygame Sprite Group中随机选取外星精灵并获取其索引?
Pygame Sprite Group 随机选取精灵的实现方法
问题描述
我正在开发一款游戏,将5个外星对象存储在Pygame的Sprite Group中,需要随机指定其中一个外星精灵投放炸弹,但不知道如何获取该Sprite Group成员的索引。若精灵存储在列表中,我会按如下方式实现:
import random num_elements = len(alien_list) choice = random.randrange(0,num_elements) element = int(choice) chosen_sprite = alien_list[element]
请问当外星对象存储在如下所示的Sprite Group中时,该如何实现此功能?
alien_group = pygame.sprite.Group()
解决方案
Pygame的pygame.sprite.Group本身不支持索引访问,但它是可迭代对象,你可以先把它转换成列表,再用熟悉的随机选取逻辑操作:
方法一:延续原有列表操作逻辑
import random import pygame # 将Sprite Group转换为列表 alien_list = list(alien_group) num_elements = len(alien_list) choice = random.randrange(0, num_elements) chosen_sprite = alien_list[choice]
方法二:用random.choice()简化实现
random.choice()可以直接从序列中随机返回一个元素,无需手动计算索引,代码更简洁:
import random import pygame chosen_sprite = random.choice(list(alien_group))
核心逻辑就是通过list(alien_group)把Sprite Group转换成列表,之后就能像操作普通列表一样随机选取精灵了。
内容的提问来源于stack exchange,提问作者Odin Mostert
相关产品推荐
相关产品推荐

