美文网首页
Lua的OOP小例子

Lua的OOP小例子

作者: 凉拌姨妈好吃 | 来源:发表于2018-06-28 11:39 被阅读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
结果

相关文章

  • Lua的OOP小例子

    player.lua magician.lua soldier.lua main.lua

  • LUA OOP

    -- Class of ParentClass Animals = {x = 0, y = 0}; Animals...

  • Lua middleclass 详解

    A simple OOP library for Lua. It has inheritance, metamet...

  • Lua的oop分析

    1. self 它相当于c++的this指针,指向调用者自身。当我们在lua里使用它时,使用冒号就可以隐藏该sel...

  • lua 和 cpp 互调

    本文编译 lua 版本为 5.3 编译 lua5.3 例子中涉及为 lua 编写 so,(lua require ...

  • C API-调用LUA函数

    lua_pcall 函数 lua_pcall 可以执行lua代码 前面的例子中load时就执行了lua脚本或者lu...

  • lua基本函数说明

    lua函数说明 部分lua函数在lua的dash文档中没找到或者没有使用例子,特记录,备忘; getfenv(f)...

  • skynet集群学习

    在了解cluster之前,先看看example下的cluster1.lua和cluster2.lua例子 ,为了...

  • C中调用Lua函数

    我们先来看一个简单的例子: lua_State* L = NULL;// 内部调用lua函数 double f(d...

  • 二.lua字节码分析

    1.字节码 先从一个例子开始,写一个简单的lua程序,命名为test.lua,内容如下: 使用如下命令生成lua字...

网友评论

      本文标题:Lua的OOP小例子

      本文链接:https://www.haomeiwen.com/subject/ymkgyftx.html