進階應用-搜尋敵人

雖然使用API 中game.findVisibleEnemies()可以找到敵人,但找到的敵人是不是最好呢?
有些敵人可能打不到,但你卻瞄準他,有些敵人十分接近你但你卻不瞄準他;
以下提供一些演算法,方便大家針對不同情況來選擇敵人。
找出最低血量的敵人

if #game.findVisibleEnemies() then
 mix, LowHpTerget = 101,nil
 for i, terget in ipairs (game.findVisibleEnemies()) do
  if terget.hp < mix then
   LowHpTerget, mix = terget,terget.hp
  end
 end
 if LowHpTerget then
  me.talk("最低血量的敵人:"..LowHpTerget.info.name.." HP:"..LowHpTerget.hp)
  me.turnTo(LowHpTerget)
 end
end
最近、可攻擊到的敵人

if #game.findVisibleEnemies() then
 distance, ClosedTerget = game.map.size.x * game.map.size.y,nil
 for i, terget in ipairs (game.findVisibleEnemies()) do
  if terget.loc:distanceTo(me.loc) < distance and game.map.hasClearLine(me.loc.x, me.loc.y , terget.loc.x, terget.loc.y, isRangedWeapon) then
   ClosedTerget, distance = terget,me.loc:distanceTo(terget.loc)
  end
 end
 if ClosedTerget then
  me.talk("最近、可攻擊到的敵人:"..ClosedTerget.info.name)
  me.moveTo(ClosedTerget)
 end
end