CS50 游戏课程中的 push.lua 出错
Posted
技术标签:
【中文标题】CS50 游戏课程中的 push.lua 出错【英文标题】:Error with push.lua from CS50 game course 【发布时间】:2021-11-11 08:16:59 【问题描述】:我对包含“main.lua”和“push.lua”的文件夹“pong-1”有疑问。当我将它们选择到“LÖVE”中时,它会说:
>Error
push.lua:71: bad argument #1 to 'insert' (table expected, got number)
[C]: in function 'insert'
push.lua:71: in function 'setupCanvas'
main.lua:12: in function 'load'
[C]: in function 'xpcall'
[C]: in function 'xpcall'
我尝试使用过时版本的 push.lua(它提供课程的源代码)以及我能找到的最新版本,但它们都不起作用。两者都显示相同的错误消息。可能是什么问题?
【问题讨论】:
您可以下载的代码无需任何修改即可运行。该错误告诉您您在预期表格的位置提供了一个数值。你修改代码了吗?你在哪里下载的?共享调用堆栈中提到的函数 load 和 setupCanvas 我只是从push的github上下载的:github.com/Ulydev/push/blob/master/push.lua,没有做任何修改就放到了“pong-1”文件夹中。在 main.lua 中,我确实 push = require 'push',所以我想应该没问题。 main 中的函数 load 如下: function love.load() love.graphics.setDefaultFilter('nearest', 'nearest') push:setupCanvas(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, WINDOW_WIDTH, WINDOW_HEIGHT, fullscreen = false, resizable = false, vsync = true ) 结束 【参考方案1】:function push:setupCanvas(canvases)
table.insert(canvases, name = "_render", private = true ) --final render
self._canvas = true
self.canvases =
for i = 1, #canvases do
push:addCanvas(canvases[i])
end
return self
end
这个函数期望canvases
是一个表值。
您在函数调用中提供一个数字值VIRTUAL_WIDTH
push:setupCanvas(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, WINDOW_WIDTH,
WINDOW_HEIGHT, fullscreen = false, resizable = false, vsync = true )
改为。
看来您将setupCanvas
与setupScreen
混淆了
【讨论】:
以上是关于CS50 游戏课程中的 push.lua 出错的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 localStorage 在 JavaScript 中保存和加载带有对象的数组时出错