Pygame:根据屏幕上的位置对精灵进行分组

2024-06-02 08:56:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Pygame制作一个太空入侵者游戏。在

我创造了外星敌人,并把他们加入一个叫做“外星人”的小组。在

我有多行入侵者,使用以下代码创建:

yPos = self.top_boundary
    for r in range(self.total_rows):
        xPos = self.left_boundary
        for i in range(self.invaders_per_row):
            self.alien = Invader(xPos, yPos)
            self.aliens.add(self.alien)
            xPos += 32
        yPos += 40

现在,为了在屏幕上反转入侵者的方向,我需要确定哪个入侵者是“最左边”的入侵者,并检查它是否已经到达屏幕的左侧。在

我的问题是,它们不是按特定顺序存储在组中的。我如何确定哪个入侵者的位置最左边?在

我可以使用的另一种方法是使用列表来存储对象。然后我可以很容易地遍历列表来确定哪个入侵者是最左边的。这会是更好的选择吗?在


Tags: inself游戏列表for屏幕range太空
2条回答

您可以使用^{}类,该类维护精灵添加到组中进行渲染的顺序。在

假设您有一个Invader对象的集合,这些对象的x位置有一个属性,那么您可以使用min来查找x位置最小的对象。最小示例:

class Invader(object):
    def __init__(self, xpos, ypos):
        self.xpos = xpos
        self.ypos = ypos

    def __str__(self):
        return str((self.xpos, self.ypos))

invaders = [Invader(3, 2), Invader(4, 9), Invader(0, 100)]
print(min(invaders, key=lambda x: x.xpos)) # prints '(0, 100)'

收集所有入侵者对我来说像这样的游戏是很自然的。在

相关问题 更多 >