javascript - 检查二维数组中的对 Angular 线

标签 javascript arrays multidimensional-array

我正在尝试在网格中查找模式 XOOX 的对 Angular 线。我有这个功能:

function chkDiagonal(token, x,y){
  if(x >= 0 && x - 2 >=0 && y >= 0){
     if(token === "X"){
         if(gameBoard[x][y]==="X" && gameBoard[x-1][y+1] === "O" 
           && gameBoard[x-2][y-2] === "O" && gameBoard[x-3][y+3]==="X"){
            return true;
           }
        }
     }
   }
 }

但如果我在 board[x-3][x+3] 处已经有一个 X,它只会返回 true 我无法计算如何使其更通用,以便它只关心对 Angular 线上是否已经有两个 O ,而不关心 X 放置在两端的顺序。有人可以建议我如何解决这个问题吗?

我正在这样测试:

var gameBoard = [
       ["X", "O", "X", "O", "X", "O"],
       ["X", "O", "X", "X", "X", "O"],
       ["X", "O", "O", "O", "X", "O"],
       ["X", "O", "X", "O", "X", "O"],
       ["X", "O", "X", "O", "X", "O"]

      ];

console.log(chkDiagonal("X",4,0));//undefined

最佳答案

有两点需要指出。

  • 首先,根据您的情况,您要检查 gameBoard[x-2][y-2]应该是gameBoard[x-2][y+2]
  • 其次,您应该添加 return false位于函数末尾,这样检查失败时将返回 false。如果您不添加 return 语句,它将不会返回任何内容,因此 undefined .

关于javascript - 检查二维数组中的对 Angular 线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417221/

相关文章:

javascript - 如何在 JavaScript 中运行 0 到 10 分钟的计时器?

javascript - 遍历 DIV 数组和淡入/淡出

javascript - 如何在 htmltextbox 中为 textchanged 事件调用 javascript?

javascript - jQuery 中的弹出窗口

php - 如何在php中递归地展平树数组?

java - 将 "deepToString()"转换回二维数组

javascript - 如何在jquery或js中创建动态二维数组

c# - 如何从多维数组中获取维度(切片)

javascript - 如何使用 html-loader 将 html 部分包含在 webpack(版本 2)中?

java - 如何将文件中的字符串转换为数组?