Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让a组中的每个精灵追逐B组中最近的精灵?_Python_Pygame - Fatal编程技术网

Python 如何让a组中的每个精灵追逐B组中最近的精灵?

Python 如何让a组中的每个精灵追逐B组中最近的精灵?,python,pygame,Python,Pygame,这里刚开始学习python。我想分成两组,其中一组中的每个精灵追逐另一组中与其最接近的精灵 我有一个代码,其中一组中的所有精灵追逐另一组中的单个精灵 def chase(sprite, group): for entity in group: if math.hypot(entity.rect.centerx - sprite.rect.centerx, entity.rect.centery - sprite.rect.centery) < 1200:

这里刚开始学习python。我想分成两组,其中一组中的每个精灵追逐另一组中与其最接近的精灵

我有一个代码,其中一组中的所有精灵追逐另一组中的单个精灵

def chase(sprite, group):
    for entity in group:
        if math.hypot(entity.rect.centerx - sprite.rect.centerx, entity.rect.centery - sprite.rect.centery) < 1200:
            if entity.rect.left - sprite.rect.left < 0:
                entity.rect.left += 2
            else:
                entity.rect.left -= 2
            if entity.rect.top - sprite.rect.top < 0:
                entity.rect.top += 2
            else:
                entity.rect.top -= 2
但有人告诉该组织,这是不可容忍的

有人能帮我做这两件事吗?让整群追击者看穿另一群追击者,然后向最近的人靠近

谢谢你的帮助

[…]组不可编辑

如果追逐的
是一个对象,则可以通过以下方法获得对象列表:

敌方=min([e代表被追逐的精灵中的e()],
key=lambda e:pow(e.x-entity.x,2)+pow(e.y-entity.y,2))
def run(sprite, group):
for entity in group:
    if math.hypot(entity.rect.centerx - sprite.rect.centerx, entity.rect.centery - sprite.rect.centery) < 65:
        if entity.rect.left - sprite.rect.left < 0:
            entity.rect.left -= 9
        else:
            entity.rect.left += 9
        if entity.rect.top - sprite.rect.top < 0:
            entity.rect.top -= 9
        else:
            entity.rect.top += 9
enemy = min([e for e in chased], key=lambda e: pow(e.x-entity.x, 2) + pow(e.y-entity.y, 2))