通过移动在棋盘上移动

Traversing a game board using moves

本文关键字:移动      更新时间:2023-09-26

我很难找出一个解决方案来遍历数组列表,该列表被视为带有墙壁和方向的板。基本上你会得到一个像这样的数组列表:

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

对于给定的移动列表:

uluudrll 

目标是使用移动列表,并根据您遍历该棋盘时给出的字母(u表示上,d表示下,等等)进行相应的移动。你把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,并且由于墙壁而无法移动,玩家将移动到其他位置。我不知道我的代码发生了什么,但是当我试图向任何其他方向移动时,它都不会工作。我很困惑为什么游戏不工作

这是一个关于如何使用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",将之前的位置替换为"-"

现在您将基于if index of "1" + 1 !=="x" && === "g" then finish game

等条件构建function movement(){}

所以如果你把你的序列写成一个数组seq = ["u","u","d","l","u"];,你将不得不迭代它,并在每个元素上调用你的function movement(){}

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