Love2d僵局玩家问题

时间:2017-07-17 11:59:43

标签: lua love2d

我是Löve的新手,对于我可能已经说过的任何错误表示抱歉。 我已经看过Gridlocked Player教程,我想基于另一个人做类似的事情。它是一个看不见的迷宫,当你触摸它们时会绘制它们。

LastName

我的斗争是,只要角色(小方框)离开“地图”,就会发生以下错误:Error

我想显示一些屏幕,这意味着当它离开迷宫时水平已经完成,但我几乎不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

问题出在seen_tiles[(player.grid_y / 32) + y][(player.grid_x / 32) + x] = 1

您正在尝试更改因不在网格中而不存在的数组项。

尝试阻止播放器首先离开网格,或者将上面引用的代码放到一个函数中,并在执行任何操作之前检查数组中的项是否存在。

答案 1 :(得分:0)

当从数组进行操作或读取时,应检查每个查找步骤是否存在,否则在尝试访问不存在的内容时会出错。 因此,对于map[a][b],您检查map[a] ~= nil and map[a][b] ~= nil是否已声明地图图块。如果您在未声明map[a][b]map时尝试访问map[a],则在尝试访问不存在的内容时会出错。 这适用于创建,读取和更改数组及其内容。

示例:

添加新数组到地图:if map[a] ~= nil then map[a][b] = {}; else map[a] = {}; map[a][b] = {}; end - 在声明map[a]之前检查map[a][b]是否存在,然后创建以防万一,因为Love2d会尝试访问{{1}首先是map,然后在里面创建map[a]。 如果找不到[b]map,而不是创建要插入的新数组,则会导致错误。

在地图上查找值:map[a] - 如果您尝试查找if map[a] ~= nil then result = map[a][b]; else result = "map[a] doesnt exist so doesnt map[a][b]"; end,则Love2d将尝试访问map[a][b],然后在地图中访问map,然后会看看[a]里面的内容。如果在到达[b]之前未能找到mapmap[a],而不是检索map[a][b],则会导致错误。