在正在制作的RPG中,在主游戏循环中,我需要随时检查生物是否在玩家(用户)的4空间范围内,以便可以启动/调用battle_loop函数。

我有一个用于所有敌人的Creature类,其属性为PosXPosY。 (初始化新的Creature实例时会包括这些坐标,并且永远不会更改)。播放器还具有自己的PosX和PosY变量,可以随播放器移动而变化。

因此,有没有一种方法可以检查Creature的PosX值的任何实例是否比玩家的PosX值少两个或两个,并且Creature的PosY值的任何实例是否比玩家的PosY值大两个或两个以下?

最佳答案

您可以维护Creature对象的列表并循环遍历它们。对于每个Creature,计算与玩家的距离并相应地呼叫battle_loop

for creature in creatures:
    if abs(creature.x - player.x) <= 2 and abs(creature.y - player.y) <= 2:
        battle_loop()

09-10 15:40