Lua游戏设计范例3

Lua游戏设计范例3

强大!

广告语

大扎好,我系渣渣辉,探挽懒月,介四里没有挽过的船新版本,挤需体验三番钟,里造会干我一样,爱象节款游戏。

源码

#!/usr/bin/env lua

--[[ 怎样定义一个游戏?
Game {提问,
            {选项1={下一关, 得分},
            选项2={结束语, 得分},
            ...
            }
        }
]]

function prompt(game)
    --[[打印提示
    参数:
    game :table : 游戏
    ]]
    print(string.format('K 系统: %s(从菜单提供的选项中选择)', game[1]))
    print '--------菜单-------'
    for k, v in pairs(game[2]) do
        print(k)
    end
    print '---------------'
end

function option(game)
    --[输入选项,获取结果]
    print 'You: '
    key = io.read()    -- 输入答案
    local _ret = game[2][key]
    while key == nil or _ret == nil do
        print '输入无效,再次输入: '
        key = io.read()    -- 再次输入
        _ret = game[2][key]
    end
    return _ret
end

total = 0

function run(game)
    --[[运行游戏
    参数:
    game :table : 游戏
    ]]

    prompt(game)

    local _ret =option(game)

    -- 处理结果
    ret = _ret[1]
    total = total + _ret[2]
    print(string.format('你获得%d', _ret[2]))

    if type(ret)=='string' then
        io.write 'K系统: '
        print(ret) -- 打印结果,游戏结束
    else
        run(ret) -- 进入下一个环节
    end
end

function Game(t)
    return t
end

computer_game = Game {'你学习什么语言?',
            {
            C={'C语言好难啊,没几个人会额,你好厉害呢',5},
            Lua={'Lua入门简单,适合非计算机系的初学者',2},
            Java={'都是大神啊',6},
            wtf={'严肃一点!', 0}
        }
        }

classroom_game = Game {'学习什么?',
            {computer={computer_game, 5},
            math={'你是学霸', 10},
            sleep={'睡觉还用学?!', -1}
            }
        }


print('=======游戏开始=======')
run {
    "你去哪里?",
    { room= {'睡觉', 0},
    classroom= {classroom_game, 1}
    }
}
print('=======游戏结束=======')
print(string.format('你总共获得%d', total))
print('=======游戏推出=======')
点赞