Iam writing on a connect four game. I have implemented a check for horizontal and vertical.
Now I am stuck at the diagonal check, I am not sure how to do it. Here are my check functions:
 public boolean checkWinRows() {
    int sameDiscs;
    Player lastPlayerField = gameField[0][0].getPlayer();
    for(int i = 0; i < gameField.length; i++) {
        sameDiscs = 0;
        for(int j = 0; j < gameField[i].length; j++) {
            sameDiscs = countSameDiscs(sameDiscs, gameField[i][j].getPlayer() == lastPlayerField, gameField[i][j]);
            lastPlayerField = gameField[i][j].getPlayer();
            if(sameDiscs == 4) {
                // set winner
                lastPlayerField.setWon(true);
                return true;
            }
        }
    }
    return false;
}
public boolean checkWinCols() {
    int sameDiscs;
    Player lastPlayerField = gameField[0][0].getPlayer();
    for(int j = 0; j < gameField[0].length; j++) {
        sameDiscs = 0;
        for(int i = 0; i < gameField.length; i++) {
            sameDiscs = countSameDiscs(sameDiscs, gameField[i][j].getPlayer() == lastPlayerField, gameField[i][j]);
            lastPlayerField = gameField[i][j].getPlayer();
            if(sameDiscs == 4) {
                // set winner
                lastPlayerField.setWon(true);
                return true;
            }
        }
    }
    return false;
}
    private int countSameDiscs(int sameDiscs, boolean samePlayer, Field field) {
    if(field.getPlayer() != null) {
        if(samePlayer)
            sameDiscs ++;
        else
            sameDiscs = 1;
    } else
        sameDiscs = 0;
    return sameDiscs;
}
Now I am not sure how to do the diagonal check. I know I can go through all cols and rows, but how can I count the tokens which are diagonally placed?
Greetings
EDIT:
Here are my two diagonal check functions:
public boolean checkWinDiagonal1(int row, int column) {
    int i=0, j=0;
    int iterateCount= 4;
     int sameDiscs;
     Player lastPlayerField = gameField[0][0].getPlayer();
      for( i=row, j=column; iterateCount>0; i++, j--, iterateCount--) {
          sameDiscs = 0;
          sameDiscs = countSameDiscs(sameDiscs, gameField[i][j].getPlayer() == lastPlayerField, gameField[i][j]);
          lastPlayerField = gameField[i][j].getPlayer();
          if(sameDiscs == 4) {
              // set winner
              lastPlayerField.setWon(true);
              return true;
          }
      }
    return false;
}
public boolean checkWinDiagonal2(int row, int column) {
    int i=0, j=0;
    int iterateCount= 4;
    int sameDiscs;
    Player lastPlayerField = gameField[0][0].getPlayer();
      for( i=row, j=column; iterateCount>0; i++, j++, iterateCount--) {
          sameDiscs = 0;
          sameDiscs = countSameDiscs(sameDiscs, gameField[i][j].getPlayer() == lastPlayerField, gameField[i][j]);
          lastPlayerField = gameField[i][j].getPlayer();
          if(sameDiscs == 4) {
              // set winner
              lastPlayerField.setWon(true);
              return true;
          }
      }
   return false;
}
I get this error message: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException
 
    