Lua 游戏设计范例1

Lua 游戏设计范例1

说明

仅供教学,适合初学者入门

代码

function run(game)
    print(game[1]) -- 打印提问
    print('--')
    key = io.read() -- 输入答案
    ret = game[2][key] -- 提取结果
    if type(ret)=='string' then
        print(ret) -- 打印结果,游戏结束
    else
        run(ret) -- 进入下一个环节
    end
end

run {
    "你去哪里?",
    {
    ["寝室"]= '睡觉',
    ["教室"]= 
        {'学习什么?',
            {
            ["计算机"]='你很优秀',
            ["数学"]='你是学霸',
            ["睡觉"]='睡觉还用学?!'
            }
        }
    }
}

代码(测试)

说明:下面的代码不可交互,可用于程序测试,检测bug

#!/usr/bin/env lua

-- tools
math.randomseed(os.time())

function choice(t)
    -- 从数组中随机选择
    N=#t
    r = math.random(N)
    return t[r]
end

function keys(t)
    -- 获取t的所有键
    s={}
    for k, v in pairs(t) do
        table.insert(s, 1, k)
    end
    return s
end


function run(game)
    -- 递归函数
    print(game[1])
    -- key = io.read() --互动模式
    key=choice(keys(game[2])) --随机模拟模式(无人机互动)
    print('--', key)
    ret = game[2][key]
    if type(ret)=='string' then
        print(ret)
    else
        run(ret)  -- 递归调用
    end
end

run {
    "你去哪里?",
    {
    ["天堂"]= 'gg',
    ["地狱"]= {
        '要重返人间吗?',
        {["是"]='重返人间',
        ["否"]='gg'}
        }
    }
}
点赞