在Lua中从一个嵌套的表中调用另一个嵌套表内的函数。
2014-12-30 20:38:22
收藏:0
阅读:76
评论:1
我正在尝试使用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()”中的循环不起作用,“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: attempt to index a nil value
以下是更新后的代码:
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
有什么想法吗?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
这段代码存在一些问题。首先,当你初始化
bubbles(bubbles[1])时,你通过数字进行索引,但是在访问它们时却使用了key作为索引(bubbles[key]),而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['a'](或其他在love.keypressed(key)中使用的值)代替bubbles[1]。