private static int[][] q = new int[][]{{1, 1, 'P', 'b'}, {-1, 1, 'P'}, {1, -1, 'p'}, {-1, -1, 'p'}}; private static int[][] o = new int[][]{{0, 1, '.', 'r'}, {0, -1, '.'}, {1, 0, '.'}, {-1, 0, '.'}}; private static int[][][] all = {q, o}; public static boolean canBeCaptured(int x, int y, char[][] board) { char color = color(board[y][x]); for (int[][] q_o : all) { for (int[] dir : q_o) { for (int i = 1; i < 8; i++) { char square = get(x + i * dir[0], y + i * dir[1], board); if (square == ' ') { continue; } if (color(square) == color|| square=='x') { break; } if (sameLtr(square, 'q') || sameLtr(square, (char) q_o[0][3]) || (i == 1 && (square == dir[2] || sameLtr(square, 'k')))) { return true; } break; } } } for (int[] dir : q) { for (int[] n : new int[][]{{2, 1}, {1, 2}}) { char square = get(x + n[0] * dir[0], y + n[1] * dir[1], board); if (sameLtr(square, 'n') && color(square) != color) { return true; } } } return false; }