Beispiel #1
0
  private boolean checkDiagonalDescending(CellState player, int col, int row) { // diagonal-\

    // check winLength-in-a-row
    int winCounter = 0;
    int x = 0;
    int y = 0;

    for (int i = -model.getWinLength() - 1; i < model.getWinLength(); ++i) {

      x = col + i;
      // FIXME wtf?? i+1??
      y = row + i + 1;

      if (isInsideBoard(x, y)) {

        if (model.getCell(x, y) == player) {
          ++winCounter;
        } else {
          winCounter = 0;
        }

        if (winCounter == model.getWinLength()) {
          return true;
        }
      }
    }
    return false;
  }
Beispiel #2
0
  private boolean checkHorizontal(CellState player, int col, int row) {

    int minCheck = col - (model.getWinLength() - 1);
    int maxCheck = col + (model.getWinLength() - 1);

    if (minCheck < 0) {
      minCheck = 0;
    }

    if (maxCheck > model.numOfColumns() - 1) {
      maxCheck = model.numOfColumns() - 1;
    }

    // check winLength-in-a-row
    int winCounter = 0;

    for (int i = minCheck; i <= maxCheck; ++i) {
      // FIXME warum row+1? problem: er erkentn die ganz oberste reihe
      // nicht mehr... weil -1
      if (model.getCell(i, row + 1) == player) {
        ++winCounter;
      } else {
        winCounter = 0;
      }

      if (winCounter == model.getWinLength()) {
        return true;
      }
    }

    return false;
  }
Beispiel #3
0
  private boolean checkVertical(CellState player, int col, int row) {

    // TODO das muesste doch auch funktionieren wenn man das aktuell
    // gesetzen feld nicht ueberprueft, weil da
    // ohnehin der aktuelle spieler drin steht...
    // dann koennte man auch mode.getwinlength()-1 verwenden, oder?

    // check downwards
    if (row + (model.getWinLength()) < model.numOfRows()) {

      if (model.getCell(col, row + 1) == player
          && model.getCell(col, row + 2) == player
          && model.getCell(col, row + 3) == player
          && model.getCell(col, row + 4) == player) {
        return true;
      }
    }
    return false;
  }