Skip to content

Commit c25451f

Browse files
authored
Simplify make_move (#1023)
Not much of a line count difference but simplifies some checks. STC #1 Elo | 6.83 +- 3.74 (95%) SPRT | 8.0+0.08s Threads=1 Hash=16MB LLR | 2.96 (-2.25, 2.89) [-2.75, 0.25] Games | N: 7738 W: 1993 L: 1841 D: 3904 Penta | [14, 762, 2174, 896, 23] https://recklesschess.space/test/14768/ STC #2 Elo | -0.17 +- 0.91 (95%) SPRT | 8.0+0.08s Threads=1 Hash=16MB LLR | 3.03 (-2.25, 2.89) [-2.75, 0.25] Games | N: 134056 W: 33984 L: 34048 D: 66024 Penta | [362, 14625, 37118, 14561, 362] https://recklesschess.space/test/14769/ No functional change. Bench: 2851948
1 parent ebde5ea commit c25451f

1 file changed

Lines changed: 18 additions & 19 deletions

File tree

src/board/makemove.rs

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,23 @@ impl Board {
5353
self.state.halfmove_clock += 1;
5454
}
5555

56-
if captured != Piece::None && !mv.is_castling() {
56+
if mv.is_castling() {
57+
let (rook_from, rook_to) = self.get_castling_rook(to);
58+
let rook = Piece::new(stm, PieceType::Rook);
59+
60+
self.remove_piece(rook, rook_from);
61+
observer.on_piece_change(self, rook, rook_from, false);
62+
63+
self.remove_piece(piece, from);
64+
self.add_piece(piece, to);
65+
observer.on_piece_move(self, piece, from, to);
66+
67+
self.add_piece(rook, rook_to);
68+
observer.on_piece_change(self, rook, rook_to, true);
69+
70+
self.update_hash(rook, rook_from);
71+
self.update_hash(rook, rook_to);
72+
} else if captured != Piece::None {
5773
self.remove_piece(piece, from);
5874
observer.on_piece_change(self, piece, from, false);
5975

@@ -65,7 +81,7 @@ impl Board {
6581

6682
self.state.material -= captured.value();
6783
self.state.captured = Some(captured);
68-
} else if !mv.is_castling() {
84+
} else {
6985
self.remove_piece(piece, from);
7086
self.add_piece(piece, to);
7187
observer.on_piece_move(self, piece, from, to);
@@ -90,23 +106,6 @@ impl Board {
90106
self.state.material -= captured.value();
91107
self.state.captured = Some(captured);
92108
}
93-
MoveKind::Castling => {
94-
let (rook_from, rook_to) = self.get_castling_rook(to);
95-
let rook = Piece::new(stm, PieceType::Rook);
96-
97-
self.remove_piece(rook, rook_from);
98-
observer.on_piece_change(self, rook, rook_from, false);
99-
100-
self.remove_piece(piece, from);
101-
self.add_piece(piece, to);
102-
observer.on_piece_move(self, piece, from, to);
103-
104-
self.add_piece(rook, rook_to);
105-
observer.on_piece_change(self, rook, rook_to, true);
106-
107-
self.update_hash(rook, rook_from);
108-
self.update_hash(rook, rook_to);
109-
}
110109
_ if mv.is_promotion() => {
111110
let promotion = Piece::new(stm, mv.promo_piece_type());
112111

0 commit comments

Comments
 (0)