Javascript 是什么导致我的阵列出现此问题。。。?

Javascript 是什么导致我的阵列出现此问题。。。?,javascript,jquery,Javascript,Jquery,我正在为我的计算机类制作一个游戏,游戏的目标是让玩家在网格中移动,收集游戏中的所有乘客,并在他们耗尽电力之前将他们送到基地。除了我试图检查球员是否越过乘客外,我几乎管理了所有其他事情。我最新的提琴:是我试图让它探测乘客的最远的提琴。在小提琴中,它似乎在工作(因为它检测到p),但是如果你继续在网格中移动,然后返回,它将检测到其他随机方块作为乘客,即使它们没有指定字母 我的新阵列(我正在努力找出如何正常工作): 我真的在努力让它工作,如果有人知道为什么这是不工作,那么这将是伟大的 我的旧提琴(在我开

我正在为我的计算机类制作一个游戏,游戏的目标是让玩家在网格中移动,收集游戏中的所有乘客,并在他们耗尽电力之前将他们送到基地。除了我试图检查球员是否越过乘客外,我几乎管理了所有其他事情。我最新的提琴:是我试图让它探测乘客的最远的提琴。在小提琴中,它似乎在工作(因为它检测到p),但是如果你继续在网格中移动,然后返回,它将检测到其他随机方块作为乘客,即使它们没有指定字母

我的新阵列(我正在努力找出如何正常工作):

我真的在努力让它工作,如果有人知道为什么这是不工作,那么这将是伟大的


我的旧提琴(在我开始尝试检测乘客之前)包含我拥有的旧阵列和完整的网格布局:

您的第一个阵列只有四个条目,因此当您这样做时

playerPos[0] = Math.min(map[0].length - 1, playerPos[0] + 1);
要向右移动,playerPos[0]永远不会超过3

然后,当你开始向左移动时,它立即开始减小,导致你的位置关闭(甚至变成负值)

我不完全理解数组的结构,但希望上面的内容足以解释发生了什么。基本上,在不更改数组结构的情况下,无法使用
map[0].length-1
获取列数。下面是一个使用设置值同时向右和向下移动的示例


由于数组与网格不完全匹配(数组中的第一行只有4个条目,而网格有10列),因此也会出现大量js错误。

嗯,您有两个问题。首先,您的地图数组是错误的。您需要两行10列。所以,你应该有外括号,然后是两组内括号,每个都有10个花括号单元格

此外,您可以将角色移动到游戏区域之外,因为您在设置位置约束之前设置CSS的方式

执行约束(最小或最大),然后根据位置值设置CSS

// this is for left.. do the same for right, up, down 
// use appropriate playerPos index and css 'left' or 'top'
playerPos[0] = Math.max(0, playerPos[0] - 1);
$('#player').css('left', (playerPos[0] * 50 + 15) + 'px');

这把小提琴似乎起作用了:

这个问题和你以前的问题有什么不同吗?您已经将一个数组放入了一个数组他有一个数组,每个数组都包含对象。我看不出有什么问题。格式很难看到。它不能是随机的。。。找到一个模式,从逻辑上找出它的原因。找到模式是第一步。是的,很有效,谢谢。如果我想在网格中添加更多的行,我会扩展数组吗?是的,只需为该行添加另一组内方括号,内有10个花括号单元格。不管你需要多少行,你都可以这样做。我很快就明白了,在我离开之前,你知道为什么它在第三行显示一个“P”,而在字母中没有一个?是 啊因为您留下了
$('#grid.box:eq(27')).append('P')你需要把这些都拿出来。自己再试试,看看能走多远。祝你好运
// this is for left.. do the same for right, up, down 
// use appropriate playerPos index and css 'left' or 'top'
playerPos[0] = Math.max(0, playerPos[0] - 1);
$('#player').css('left', (playerPos[0] * 50 + 15) + 'px');