使用移动遍历游戏板

时间:2015-10-20 02:16:33

标签: javascript arrays optimization replace game-physics

我无法找到遍历数组列表的解决方案,该列表被视为具有墙壁和方向的电路板。基本上你会得到一个像这样的数组列表:

  xxxxxxx
  x-g--xx
  x---xxx
  x-----x
  x--x--x
  x---1-x
  xxxxxxx

使用给定的移动列表:

uluudrll 

目标是使用移动列表并根据您遍历此板时给出的字母(u代表up,d代表down等)进行相应的移动。你把x视为墙,g是你的目标。播放器是1.我使用javascript代码。

     if(move === 'd'){
        if(maze[row + 1][col] !== 'x'){
            maze[row + 1][col] = player;
            maze[row][col] = '-';
            count++;
        } else {
            if(move === 'd'){
                if(maze[row - 1][col] !== 'x'){
                    maze[row - 1][col] = player;
                    maze[row][col] = '-';
                    count++;
                } else if(maze[row][col + 1] !== 'x'){
                    maze[row][col + 1] = player;
                    maze[row][col] = '-';
                    count++;
                } else if(maze[row][col - 1] !== 'x'){
                    maze[row][col - 1] = player;
                    maze[row][col] = '-';
                    count++;
                }
            }
        }
    }

这是我向下移动和适应其他动作的代码(例如,如果我们读取向下移动,d,并且由于墙壁而无法移动,则玩家将移动到其他位置。我不知道我的代码是怎么回事,但是当我试图向任何其他方向移动时,它将无法工作。请帮助我对游戏无效的原因感到困惑。

1 个答案:

答案 0 :(得分:0)

以下是有关如何使用Javascript

进行游戏的伪代码示例

以此阵列为例:

arrayBoard = [["x","x","x","x"],["x","-","-","x"],["x","-","1","x"],["x","x","x","x"]];

如果你想首先移动玩家,你需要玩家的位置indexOf("1");,在这种情况下是arrayBoard[2][2];

然后你知道up是相同的位置,但在第二个嵌套数组arrayBoard[[1][2];上,依此类推其他方向。

要移动播放器,您必须使用"1"替换目标位置,并使用"-"替换之前的位置。

现在,您将根据function movement(){}

等条件构建if index of "1" + 1 !=="x" && === "g" then finish game

因此,如果您将序列编写为数组seq = ["u","u","d","l","u"];,则必须对其进行迭代并在每个元素上调用function movement(){}

顺便说一句,多维数组中的indexOf()需要.map或循环才能工作。