我正在尝试使用love2D构建我的第一个游戏,我遇到了一个问题。
游戏是一个泡泡弹出游戏,我想为键盘上的每个字母指定一个气泡,这样当按下一个字母时,气泡就会弹出。
我有一个名为“bubble.lua”的外部文件,我试图将对象“冒泡”。 要做到这一点,我在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()”行,我无法解决错误或如何修复它。
有人能帮助我吗?
你可能也想看看这个:
bubble.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:尝试索引零值
更新的代码位于
之下main.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
有什么想法吗?
答案 0 :(得分:1)
此代码存在几个问题。首先,在初始化气泡(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']
中key
使用的任何其他值),而不是love.keypressed(key)
。