public int playable(Board brd, int x2, int y2) { if (x2 < 0 || y2 < 0) { return(0); } Point p = brd.searchKing(color); King king = new King(color, 0, 0); king.x = p.x; king.y = p.y; Board brd2 = new Board(); for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { brd2.setSquare(brd.getInfo(i, j), i, j); } } if (move(brd2, x2, y2) == 1) { brd2.setSquare(0, x, y); if (color == 1) { brd2.setSquare(5, x2, y2); } else { brd2.setSquare(11, x2, y2); } } else { return(0); } if (king.isChecked(brd2) == 1) { return(0); } else { return(1); } }
public int isMated(int color) { Point p = new Point(); p = searchKing(color); King king = new King(color, p.x, p.y); if (king.isChecked(this) == 1) { if (canDefend(color) == 1) { return(0); } else { return(1); } } return(0); }
public int canDefend(int color) { Board b = new Board(); Castle castle = new Castle(color, 0, 0); Pawn pawn = new Pawn(color, 0, 0); Knight knight = new Knight(color, 0, 0); Bishop bishop = new Bishop(color, 0, 0); Queen queen = new Queen(color, 0, 0); int i, j, m, n, f = 0; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { b.setSquare(this.getInfo(i, j), i, j); } } Point p = b.searchKing(color); King king = new King(color, p.x, p.y); for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { if (b.getInfo(i, j) == 0) { } else if (b.getInfo(i, j) == (color == 1 ? 1 : 7)) { castle.x = i; castle.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (castle.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 1 : 7), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 1 : 7), i, j); b.setSquare(f, m, n); } } } } else if (b.getInfo(i, j) == (color == 1 ? 2 : 8)) { knight.x = i; knight.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (knight.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 2 : 8), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 2 : 8), i, j); b.setSquare(f, m, n); } } } } else if (b.getInfo(i, j) == (color == 1 ? 3 : 9)) { bishop.x = i; bishop.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (bishop.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 3 : 9), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 3 : 9), i, j); b.setSquare(f, m, n); } } } } else if (b.getInfo(i, j) == (color == 1 ? 4 : 10)) { queen.x = i; queen.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (queen.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 4 : 10), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 4 : 10), i, j); b.setSquare(f, m, n); } } } } else if (b.getInfo(i, j) == (color == 1 ? 5 : 11)) { for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (king.move(b, m, n) == 1) { f = b.getInfo(m, n); king.x = m; king.y = n; b.setSquare(0, i, j); b.setSquare((color == 1 ? 5 : 11), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 5 : 11), i, j); b.setSquare(f, m, n); king.x = p.x; king.y = p.y; } } } } else if (b.getInfo(i, j) == (color == 1 ? 6 : 12)) { pawn.x = i; pawn.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (pawn.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 6 : 12), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 6 : 12), i, j); b.setSquare(f, m, n); } } } } } } return(0); }