lua - 从lua中另一个表内的表内调用函数

标签 lua lua-table love2d

我正在尝试使用 love2D 构建我的第一款游戏,但遇到了问题。

这个游戏是一个泡泡泡游戏,我想给键盘上的每个字母分配一个泡泡,这样当一个字母被按下时,泡泡就会弹出。

我有一个名为“bubble.lua”的外部文件,我试图用它制作一个对象“bubble”。 为此,我在包含函数和变量的 bubble.lua 中创建了一个表“bubble”。现在,当仅使用一个气泡从 main.lua 调用时,该文件可以工作,但是我将需要 26 个气泡,因此我认为最好将每个气泡存储在另一个表中。为了尝试这一点,我只使用 1 作为键存储了一个气泡。这是我遇到问题的地方。

require "bubble"
local bubbles = {}
function love.load()
    bubbles[1] = bubble.load(100, 100)
end
function love.draw()
    for bubble in bubbles do
        bubble.draw()
    end
end

function love.keypressed(key)
    bubbles[key].bubble.pop()
end

首先,我知道 love.draw() 中的 for 循环不起作用,“bubble[key].bubble.pop” 行似乎返回 nil还有

for 循环我可能可以自己在网上找到解决方案,我的主要问题是“bubble[key].bubble.pop()”行,我不知道哪里出了问题或如何解决它。

谁能帮帮我?

您可能还想看看这个:

泡泡.lua

bubble = {}
function bubble.load(posX, posY)
    bubble.x = posX
    bubble.y = posY
    bubble.popped = false
end

function bubble.draw()

    if not bubble.popped then
        love.graphics.rectangle("line", bubble.x, bubble.y, 37, 37)
    else
        love.graphics.rectangle("line", bubble.x, bubble.y, 37, 100)
    end
end

function bubble.pop()
    bubble.popped = true
end

编辑:

按照下面答案的建议,我现在在按“a”时出现以下错误:

main.lua:14: attempt to index a nil value

更新后的代码如下

主.lua

require "bubble"
local bubbles = {}
function love.load()
    bubbles["a"] = bubble.load(100, 100)
end
function love.draw()
    for key, bubble in pairs(bubbles) do
       bubble.draw()
    end
end

function love.keypressed(key)
    bubbles[key].pop()
end

有什么想法吗?

最佳答案

这段代码有几个问题。首先,在初始化气泡时按数字索引 ( bubbles[1] ),但使用 key 访问它们作为索引 ( bubbles[key] ),它不是数字。您需要确定一种机制来索引气泡。假设您选择使用键作为索引(而不是数字)。

这个循环:

for bubble in bubbles do
    bubble.draw()
end

应该写成:

for key, bubble in pairs(bubbles) do
    bubble.draw()
end

而不是 bubbles[key].bubble.pop()你可以简单地做 bubbles[key].pop()作为bubbles[key]已经返回您可以弹出的气泡。

要初始化,而不是bubbles[1]你需要做bubbles['a'] (或 keylove.keypressed(key) 中使用的任何其他值)。

关于lua - 从lua中另一个表内的表内调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27708763/

相关文章:

for-loop - 在for循环中设置变量(使用临时变量)Lua

parsing - Lua:检查表是否可以通过 ipairs & ipairs 从 0 开始循环

处于暂停状态的图像未加载到其他图像上

string - Lua:字符串中的换行符

class - Lua 检查表是否为 'instance'

c++ - 将嵌套表从 Lua 传递到 C

c++ - 如何在 C++ 中创建 Lua 表,并将其传递给 Lua 函数?

lua - Love2D、LUA Tween 重置

lua - 需要在本地表中声明本地函数或变量吗?

c - 如何从 C 控制 Lua 脚本(暂停、恢复、终止)?