public boolean checkwin(char c) { int left, right, up, down; boolean leftwin = false, rightwin = false, upwin = false, downwin = false, dI = false, dIV = false; //named my diagonals off the quadrants I is upperright, II is upperleft etc. for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { if (board[row][col] == c) { leftwin = true; rightwin = true; upwin = true; downwin = true;// dI = true; dII = true; dIII = true; dIV = true; left = col - 1; while (left >= 0) { if (this.board[row][left] != c) { leftwin = false; break; } left--; } right = col + 1; while (right < size) { if (this.board[row][right] != c) { rightwin = false; break; } right++; } up = row - 1; while (up >= 0) { if (this.board[up][col] != c) { upwin = false; break; } up--; } down = row + 1; while (down < size) { if (this.board[down][col] != c) { downwin = false; break; } down++; } //Diagonal statements if ((col == 0 && (row == 0 || row == size - 1))) { dI = false; dIV = false; up = row - 1; right = col + 1; while (up >= 0 && right < size) { dI = true; if (this.board[up][right] != c) { dI = false; break; } up--; right++; } down = row + 1; right = col + 1; while (down < size && row < size) { dIV = true; if (this.board[down][right] != c) { dIV = false; break; } down++; right++; } } } if ((downwin && upwin) || (leftwin && rightwin) || (dI) || (dIV)) { return true; } } } return false; }