Lua 从';在卢阿的另一张桌子里
我正在尝试使用love2D构建我的第一个游戏,我遇到了一个问题 这个游戏是一个泡泡弹出游戏,我想给键盘上的每个字母分配一个泡泡,这样当按下一个字母时,泡泡就会弹出 我有一个名为“bubble.lua”的外部文件,我试图用它创建一个对象“bubble”。 为此,我在bubble.lua中创建了一个表“bubble”,其中包含函数和变量。现在,当使用一个气泡从main.lua调用该文件时,该文件可以工作,但是我需要26个气泡,所以我认为最好将每个气泡存储在另一个表中。为了尝试这个,我只存储了一个泡泡,使用1作为键。这就是我遇到的问题Lua 从';在卢阿的另一张桌子里,lua,lua-table,love2d,Lua,Lua Table,Love2d,我正在尝试使用love2D构建我的第一个游戏,我遇到了一个问题 这个游戏是一个泡泡弹出游戏,我想给键盘上的每个字母分配一个泡泡,这样当按下一个字母时,泡泡就会弹出 我有一个名为“bubble.lua”的外部文件,我试图用它创建一个对象“bubble”。 为此,我在bubble.lua中创建了一个表“bubble”,其中包含函数和变量。现在,当使用一个气泡从main.lua调用该文件时,该文件可以工作,但是我需要26个气泡,所以我认为最好将每个气泡存储在另一个表中。为了尝试这个,我只存储了一个泡泡
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 = {}
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:尝试索引nil值
更新代码如下
梅因·卢阿
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]
)时,您可以按数字进行索引,但使用键作为索引(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['a']
(或者love.keypressed(key)
中的key
使用的任何其他值),而不是bubbles[1]
。是love.keypressed
的参数是字符串还是数字?键[1]
是第一个。字符串“1”
不会加载该索引1
处的值。您需要tonumber
进行转换或类似操作。另外,您的bubble.pop
函数正在全局bubble
表上设置popped
,而不是在任何特定的bubble“对象”上。类似地,bubble.draw
在全局bubble
表上运行,而不是在bubble“对象”上运行。bubble.load
不会返回任何值,因此您不会在表中存储任何内容。此外,您似乎没有正确地使用OO,因为您没有创建不同的气泡实例;您只是将所有内容存储在完全相同的实例中,这是行不通的。如何创建bubble的新实例?我应该如何从bubble.load返回bubble表?阅读上的章节,应该会有所帮助。谢谢,我想知道你是否知道一种方法,我可以有问题地为每个字母指定一个bubble?不要做“bubbles['a']=bubble.load()bubbles['b']=bubble.load()”等操作。你可以对k=string.ord('a')、string.ord('z')做类似于的操作,比如做bubbles[string.char(k)]=bubble.load()end
。我在“bubbles[key].pop()”处收到一个“尝试索引一个nil值”错误,我刚刚检查了调试器,并且love中key
的值。按下a
时,按下的key
是a
。问题出在其他地方。@jamiemcalister,您的bubble.load不会返回任何值,因此您不会在表中存储任何内容。