在正在制作的RPG中,在主游戏循环中,我需要随时检查生物是否在玩家(用户)的4空间范围内,以便可以启动/调用battle_loop
函数。
我有一个用于所有敌人的Creature
类,其属性为PosX
和PosY
。 (初始化新的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()