大腦
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