Python Pygame如何在阵列中找到最近的精灵并锁定它?
我有一个导弹精灵,如果我开枪的话。它应该去最近的敌人雪碧那里。我不知道该怎么处理这件事。我完全知道我们将使用一些距离公式,但这不是问题所在。问题是在列表中循环搜索敌人,找到离导弹最近的敌人 我已经尝试过使用for循环,但这是我目前所能想到的。我看过其他的帖子,但没有一个有同样的问题。仅适用于列表中不存在的单个精灵 导弹级Python Pygame如何在阵列中找到最近的精灵并锁定它?,python,arrays,python-3.x,pygame,distance,Python,Arrays,Python 3.x,Pygame,Distance,我有一个导弹精灵,如果我开枪的话。它应该去最近的敌人雪碧那里。我不知道该怎么处理这件事。我完全知道我们将使用一些距离公式,但这不是问题所在。问题是在列表中循环搜索敌人,找到离导弹最近的敌人 我已经尝试过使用for循环,但这是我目前所能想到的。我看过其他的帖子,但没有一个有同样的问题。仅适用于列表中不存在的单个精灵 导弹级 class Missile: missile = pygame.image.load("Missile-1.png") def __init__(self,x,
class Missile:
missile = pygame.image.load("Missile-1.png")
def __init__(self,x,y):
self.x = x
self.y = y
self.yvel = 15
self.xvel = 5
def draw(self,win):
win.blit(missile,(self.x,self.y))
def chase(self):
for enemy in enemies:
#some code
阵列:
missiles = []
enemies = []
我预计导弹将射向最近的敌人。我建议使用和函数计算两点之间的距离
def chase(self):
pos=pygame.math.Vector2(self.x,self.y)
敌方=最小值([e代表敌方中的e],key=lambda e:pos.distance_to(pygame.math.Vector2(e.x,e.y)))
说明:
lambda e:pos.distance_to(pygame.math.Vector2(e.x,e.y))
计算参数e
到pygame.math.Vector2
对象pos
的距离查找表中的最小元素。“最小”值由设置为
键的函数给出
pos
由导弹的位置初始化。对于敌人
的每个元素,计算到pos
的距离,并通过min
返回距离pos
最近的敌人
当然,这可以通过手动计算平方欧氏距离进一步简化:
def chase(self):
敌人=最小值([e代表敌人中的e],键=lambda e:pow(e.x-self.x,2)+pow(e.y-self.y,2))