我目前正在创建一个空间入侵者游戏使用派克。
我创造了异形的敌人,并将他们添加到一个叫做“外星人”的团体中。
我有多行入侵者,使用以下代码创建:
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
现在,为了逆转入侵者在屏幕上的方向,我需要确定哪个入侵者是“最左边”的入侵者,并检查它是否已经到达屏幕的左侧。
我的问题是,它们不是按任何特定的顺序存储在组中的。我如何确定哪个入侵者的位置最左边?
我可以使用的另一种方法是使用列表来存储对象。然后,我可以轻松地遍历列表,以确定哪个入侵者是最左边的。这会是更好的选择吗?
发布于 2015-12-12 15:50:28
您可以使用OrderedUpdates
类来维护向组中添加雪碧以进行呈现的顺序。
发布于 2015-12-12 15:52:41
假设您有一个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)'
拥有你所有入侵者的集合对我来说是很自然的,就像这样的游戏。
https://stackoverflow.com/questions/34241737
复制相似问题