LUA编写的角色创建程序

我有一个任务,需要我创建一个简单的角色设计程序,以输入五个特征并存储它们。在角色创建结束时,程序需要询问用户是否要查看、编辑或创建角色。

现在我需要创建一个数据结构,并具备保存和加载角色的能力,我需要很多帮助。我在编程方面的知识很少。

-- 默认角色类

Character = {power = 0, speed = 0, defense = 0, intelligence = 0, stamina = 0}

function Character:create (n)
    n = n or {}
    setmetatable(n, self)
    self.__index = self
    return n
end

-- 用于接收用户输入的函数
function input ()
    print "请输入力量值:"
    local Power = io.read()
    print "请输入速度值:"
    local Speed = io.read()
    print "请输入防御值:"
    local Defense = io.read()
    print "请输入智力值:"
    local intelligence = io.read()
    print "请输入耐力值:"
    local Stamina = io.read()
end

-- 主循环
function MainMenu ()
    selection = {"1", "2", "3" or "4"}
    while selection ~= "1","2", "3" or "4"
        print "1. 您想编辑角色吗?"
        print "2. 您想创建新角色吗?"
        print "3. 您想查看某个角色吗?"
        print "4. 您想退出界面吗?"

        if selection == "1" then  -- 我不确定如何调用已创建的角色或数据,所以我使用此方法来重新创建角色
            print (character:input)
        elseif selection == "2" then
            print (character:input)
        elseif selection == "3" then
            print (last.character, input()) -- 我也不确定如何编写此部分。
        elseif selection == "4" then
            io.exit ()
        else selection is ~= selection()
        print "请选择以下数字 1-4"

        end
    end
end

update()
menu()
点赞
用户4526258
用户4526258

我并没有看到一个确切的问题。我看到的是“请帮我做作业”。StackOverflow 不是一个让别人为你做作业的地方,而是你寻求特定问题帮助的地方。

话虽如此,我确实看到了一些小问题:

selection = {"1", "2", "3" or "4"}

Lua 是一种“真值”语言。这意味着任何非 nil 值等同于 false。其他任何值都是 true。所以,当你说 "3" or "4" 时, or 是一个短路布尔运算符,它期望 true 或 false,如果第一个值为 true,它不会检查其他操作数。"3" 不是 false,所以它必须是 true。所以,实际上, selection 是一个包含 {"1", "2", "3"} 的列表。

接下来,

while selection ~= "1","2", "3" or "4"

你无法执行多个比较。While 语句在满足条件时循环执行代码块。所以,我想你的意思是 while selection >= 1 and selection <= 4

接下来,

else selection is ~= selection()

移除 is。此外,selection 不是一个函数,selection 是一个变量。在 Lua 中,没有太大的区别,但在这种特殊情况下,你使用的是变量。这就是我不喜欢弱类型和动态类型语言的原因。很容易失去对正在处理的数据类型的追踪。

这里还有许多其他的问题。我建议你给你的教练发电子邮件,请求他/她帮助你。你好像错过了很多东西。当我上大学时,如果你第二天找他们说起,我的教授对你错过的任务截止日期几乎不会有任何问题。也许你的教授也是这样。

2015-02-03 22:46:00