使用移动遍历游戏板

Traversing a game board using moves

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

  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 或循环才能工作。