Python RPG:查找玩家是否有敌人';s范围
在我正在制作的RPG中,在主游戏循环中,我需要检查生物是否在玩家(用户)的4格范围内,以便我可以启动/调用Python RPG:查找玩家是否有敌人';s范围,python,coordinates,Python,Coordinates,在我正在制作的RPG中,在主游戏循环中,我需要检查生物是否在玩家(用户)的4格范围内,以便我可以启动/调用battle\u循环功能 我有一个类生物,用于所有敌人,它有属性PosX和PosY。(这些坐标在初始化新的生物实例时包括在内,并且永远不会更改)。玩家也有自己的PosX和PosY变量,当玩家移动时可以改变 那么,有没有一种方法可以检查生物的PosX值的任何实例是否比玩家的PosX值小两个或多两个,以及生物的PosY值的任何实例是否比玩家的PosY值小两个或多两个?这很常见,您可能需要计算两个
battle\u循环
功能
我有一个类生物
,用于所有敌人,它有属性PosX
和PosY
。(这些坐标在初始化新的生物实例时包括在内,并且永远不会更改)。玩家也有自己的PosX和PosY变量,当玩家移动时可以改变
那么,有没有一种方法可以检查生物的PosX值的任何实例是否比玩家的PosX值小两个或多两个,以及生物的PosY值的任何实例是否比玩家的PosY值小两个或多两个?这很常见,您可能需要计算两个位置点(x,y)之间的距离或距离,具体取决于生物在游戏中的移动方式。您可以维护一个
生物
对象列表,并在其中循环。对于每个生物
,计算与玩家的距离,并相应地调用战斗循环
:
for creature in creatures:
if abs(creature.x - player.x) <= 2 and abs(creature.y - player.y) <= 2:
battle_loop()
对于生物中的生物:
如果abs(生物.x-player.x)只需运行一个for循环
for creature in creatureList:
然后像这样做:
if (creature.PosX > self.PosX - 2 & creature.PosX < self.PosX + 2) : doSomething()
if(biote.PosX>self.PosX-2&biote.PosX
…y值也有类似的值。如果生物距离玩家的距离在2 x和2 y范围内,if语句将返回true。你想要2D距离(sqrt(dx**2+dy**2)
)还是曼哈顿距离(dx+dy
)或其他指标?如果玩家.x-2