光暈路亞程式範例(進階) - 2166gaming

Breaking

Comments

test banner

Post Top Ad

Responsive Ads Here

Post Top Ad

Responsive Ads Here

Thursday 20 July 2017

光暈路亞程式範例(進階)


大腦
brain.lua



優先佇列
priorityqueue.lua

if priority_queue == nil then
 priority_queue = {}
 priority_queue.__index = priority_queue
end
function priority_queue.new ()
 local self = setmetatable({},priority_queue)
 priority_queue.elements = {}
 priority_queue.size = 0
 return self
end
function priority_queue.top(self)
 if self.elements[1] then
  return self.elements[1]
 else return false
 end
end
function priority_queue.push(self,data)
 self.size = self.size + 1
 self.elements[self.size] = data

 local parent = math.floor( self.size/2 )
 local cur = self.size
 if parent == 0 then parent = 1 end
 while parent>=1 and self.elements[parent] < self.elements[cur] do
  local temp = self.elements[parent]
  self.elements[parent] = self.elements[cur]
  self.elements[cur] = temp
  cur=parent
  parent= cur/2
 end
end
function priority_queue.pop(self)
 if self.elements[1] == nil then return false end
 self.elements[1]=self.elements[self.size]
 self.elements[self.size] = nil
 self.size = self.size - 1
 local cur =1
 local son = 2
 local son2 = 3
 if self.elements[son] == nil then self.elements[son]=-2147483648 end
 if self.elements[son2] == nil then self.elements[son2]=-2147483648 end
 if self.elements[1] == nil then return true end
 while self.elements[son]>self.elements[cur] or self.elements[son2]>self.elements[cur] do
  if self.elements[son2] > self.elements[son] then son = son + 1 end
  local temp = self.elements[son]
  self.elements[son] = self.elements[cur]
  self.elements[cur] = temp
  cur = son

引用堆疊
stack.lua

if stack == nil then
 stack = {}
 stack.__index = stack
end
function stack.new ()
 local self = setmetatable({},stack)
 stack.elements = {}
 stack.size = 0
 return self
end
function stack.push(self,data_in)
 self.size = self.size + 1
 self.elements[self.size] = data_in
end
function stack.pop(self)
 if self.size == 0 then return false end
 self.elements[self.size] = nil
 self.size = self.size - 1
end
function stack.top(self)
 if self.size > 0 then
  return self.elements[self.size]
 else return false
 end
end
function stack.empty(self)
 if self.elements[1] == nil then return true
 else return false end
end
function stack.size(self)
 return self.size()
end

對抗近武能力
antiability.lua

enemy = me.findClosestEnemy()
if enemy then
if enemy.ability == "防護罩" or enemy.ability == "分身術" then
  if me.currentWeaponInfo.isCloseWeapon then
  dofile("closecombat.lua")
else
   if me.nextWeaponInfo.isCloseWeapon then
      me.triggerKeyboard("q")   
   end
  end
 end
end



近身作戰
if me.currentWeaponInfo.isCloseWeapon then
   me.setAimTarget(enemy)
   me.moveTo(enemy)
   me.triggerMouse()
else
 if enemy.loc:distanceTo(me.loc) <= 3 and me.nextWeaponInfo.isCloseWeapon then
  me.triggerKeyboard("q")
 end
end

攻擊高位置敵人
if enemy then
if game.map.groundHeight(enemy.pos.x,enemy.pos.y) > game.map.groundHeight(me.pos.x,me.pos.y) then
     me.moveTo(enemy)
end
end

No comments:

Post a Comment

Post Top Ad

Responsive Ads Here