javascript - 在 Javascript 中连接四 - 对 Angular 线获胜检查

标签 javascript jquery

我最近制作了一个 Connect Four 游戏,但我在编写对 Angular 线获胜检查程序时遇到了问题。我只是不知道如何获得获胜支票....

我的横向代码是这样的:

var winMoveSpalte = function() {
  var rowDummy = 3;
  var count = 0;
  for (var i_row = 0; i_row < 6; i_row++) {
    rowDummy = 3;
    count = 0;
    for (var i_col = 0; i_col < 7; i_col++) {
      if (rowDummy == 3 && settings.fieldSet[i_col][i_row] != 0) {
        winnerMove[count]['col'] = i_col; //x
        winnerMove[count]['row'] = i_row; //y
        count++;
      } else if (settings.fieldSet[i_col][i_row] != 0 && (rowDummy == settings.fieldSet[i_col][i_row])) {
        if (count < 4) {
          winnerMove[count]['col'] = i_col; //x
          winnerMove[count]['row'] = i_row; //y
          count++;
          if (count == 4) {
            for (var w = 0; w <= 3; w++) {
              $('div#feld .col_' + winnerMove[w]["col"] + '.row_' + winnerMove[w]['row']).addClass('winnerStone' + settings.activePlayer);
            }
            return settings.fieldSet[i_col][i_row];
          }
        }
      } else {
        count = 0;
        if (settings.fieldSet[i_col][i_row] != 0) {
          winnerMove[count]['col'] = i_col; //x
          winnerMove[count]['row'] = i_row; //y
          count++;
        }
      }
      rowDummy = settings.fieldSet[i_col][i_row];
    }
  }
}

最佳答案

这应该会返回您需要的结果:

function hasDiagonalWin(board, row, column) {
    var result = false;

    if(board[row][column] != 0) {
        // there are four possible directions of a win
        // if the top right contains a possible win
        if(row - 3 > -1 && column + 3 < numColumns) {
            result = board[row][column] == board[row - 1][column + 1] &&
                     board[row][column] == board[row - 2][column + 2] &&
                     board[row][column] == board[row - 3][column + 3]; 
        }
        // if the bottom right contains possible win
        if(row + 3 < numRows  && column + 3 < numColumns) {
            result = board[row][column] == board[row + 1][column + 1] &&
                     board[row][column] == board[row + 2][column + 2] &&
                     board[row][column] == board[row + 3][column + 3]; 
        }
        // if the bottom left contains possible win
        if(row + 3 < numRows && column - 3 > -1) {
            result = board[row][column] == board[row + 1][column - 1] &&
                     board[row][column] == board[row + 2][column - 2] &&
                     board[row][column] == board[row + 3][column - 3]; 
        }
        // if the top left contains a possible win
        if(row - 3 > -1 && column - 3 > -1) {
            result = board[row][column] == board[row - 1][column - 1] &&
                     board[row][column] == board[row - 2][column - 2] &&
                     board[row][column] == board[row - 3][column - 3]; 
        }
    }

    return result;
}

关于javascript - 在 Javascript 中连接四 - 对 Angular 线获胜检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41180477/

相关文章:

javascript - 如何让 localStorage 值为真?

javascript - Observable.of 转异步

javascript - 如何通过 HTML 页面从游戏 handle 获取/发送数据

javascript - 访问 Backbone 从嵌套函数调用中查看 this

jquery - 如何在页面上居中放置多个 div,并在 div 落到下一行时将它们左对齐?

javascript - 大 IE7 JS 错误以及 CSS 问题

javascript - 如何使用ajax onclick将变量传递给另一个php文件

javascript - 将 if 语句添加到出生日期的强制转换中

javascript - jQuery.html 的 setInterval 只更新一次?

javascript - dojo 1.9 : what annotation does declare. safeMixin 添加?