在Javascript中连接四个 - 对角线胜利检查

时间:2016-12-16 08:53:04

标签: javascript jquery

我最近做了一个Connect Four游戏,我遇到了编程对角线胜利检查的问题。我只是想弄清楚如何获得胜利检查......

我的水平代码如下所示:



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];
    }
  }
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

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

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;
}