首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游戏:根据屏幕上的位置对群中的精灵进行排序

游戏:根据屏幕上的位置对群中的精灵进行排序
EN

Stack Overflow用户
提问于 2015-12-12 15:46:30
回答 2查看 614关注 0票数 1

我目前正在创建一个空间入侵者游戏使用派克。

我创造了异形的敌人,并将他们添加到一个叫做“外星人”的团体中。

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

代码语言:javascript
运行
复制
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

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-12 15:50:28

您可以使用OrderedUpdates类来维护向组中添加雪碧以进行呈现的顺序。

票数 0
EN

Stack Overflow用户

发布于 2015-12-12 15:52:41

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

代码语言:javascript
运行
复制
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)'

拥有你所有入侵者的集合对我来说是很自然的,就像这样的游戏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34241737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档