Lua的OOP小例子

2018-06-28  本文已影响0人  凉拌姨妈好吃

player.lua

local player = {}
function player:new(hp,def)
    
    local self = {}
    setmetatable(self,{__index = player})
    self.hp = hp
    self.def = def
    
    return self
end

function player:talk()
    print("hiahiahia")
end

function player:commentSkill()
    self.atk = 3 ------普通攻击
end

function player:changeDef()
    self.def = 25
end

return player

magician.lua

local magician = {}
local player = require("player")
magician.__index = player

function magician:new(hp,def)
    
    --local b = player:new(hp, def)
    --setmetatable(b, {__index = magician})
    --return b



    setmetatable(magician, {__index = player})
        
    local self = {}
    setmetatable(self,{__index = magician})
    self.hp = hp
    self.def = def

    return self 

end

function magician:skill_1(enemy)
    if(enemy.def == 0) then
        enemy.hp = enemy.hp-5
    else 
        enemy.hp = enemy.hp-(5*50*0.01)
    end
    if(enemy.hp<25) then
        enemy.def = 50
    end

    --self.talk()

end


function magician:talk()
    print("magician talk")
end

function magician:skill_2(enemy)
    
    if(enemy.def == 0) then
        enemy.hp = enemy.hp-15
    else 
        enemy.hp = enemy.hp-(15*50*0.01)
    end
    if(enemy.hp<25) then
        enemy:changeDef()
    end

    --self.talk()
end

return magician

soldier.lua

local soldier = {}
local player = require("player")
soldier.__index = player
function soldier:new(hp,def)

    --local b = player:new(hp, def)
    --setmetatable(b, {__index = soldier})
    --return b


    setmetatable(soldier, {__index = player})

    local o = {}
    setmetatable(self,{__index = soldier})
    self.hp = hp
    self.def = def

    return self 

end

function soldier:skill_1(enemy)
    if(enemy.def == 0) then
        enemy.hp = enemy.hp-5
    else 
        enemy.hp = enemy.hp-(5*50*0.01)
    end
    if(enemy.hp<25) then
        enemy.def = 50
    end

     --self.talk()

end


function soldier:talk()
    print("soldier")
end

function soldier:skill_2(enemy)
    
    if(enemy.def == 0) then
        enemy.hp = enemy.hp-15
    else 
        enemy.hp = enemy.hp-(15*50*0.01)
    end
    if(enemy.hp<25) then
        enemy:changeDef()
    end

    --self.talk()
end

return soldier

main.lua

magician = require("magician")
soldier = require("soldier")


math.randomseed(os.time())
local n = math.random(100)
mag = magician:new(n, 0)

n = math.random(25,100)
sol = soldier:new(n,0)
n = math.random(100)
print(n)
if(n%2 == 0) then

    while(mag.hp>0 and sol.hp >0)
    do
        mag:skill_1(sol)
        sol:skill_1(mag)
        
        mag:skill_2(sol)

        sol:talk()
        mag:talk()

        print("法师血量:"..mag.hp.."  ".."法师防御:"..mag.def.."  ".."战士血量:"..sol.hp.."  ".."战士防御:"..sol.def)

    end

    if(mag.hp>sol.hp) then
        print("法师的胜利!!!!!!!!!!!")
    end


else 

    while(mag.hp>0 and sol.hp >0)
    do
        sol:skill_1(mag)
        mag:skill_1(sol)

        sol:skill_2(mag)

        sol:talk()
        mag:talk()
        print("法师血量:"..mag.hp.."  ".."法师防御:"..mag.def.."  ".."战士血量:"..sol.hp.."  ".."战士防御:"..sol.def)

    end

    if(sol.hp>mag.hp) then
        print("战士的胜利!!!!!!!!!!!")
    end
end
结果
上一篇 下一篇

猜你喜欢

热点阅读