feat: horse movegen
This commit is contained in:
parent
35f0585979
commit
a30a695275
@ -469,6 +469,30 @@ impl PseudoMoveGen for BoardState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for src in squares!(Knight) {
|
||||||
|
let (r, c) = src.to_row_col();
|
||||||
|
let dirs = [
|
||||||
|
(2, 1),
|
||||||
|
(1, 2),
|
||||||
|
(-1, 2),
|
||||||
|
(-2, 1),
|
||||||
|
(-2, -1),
|
||||||
|
(-1, -2),
|
||||||
|
(1, -2),
|
||||||
|
(2, -1),
|
||||||
|
];
|
||||||
|
for dir in dirs {
|
||||||
|
let nr = r as isize + dir.0;
|
||||||
|
let nc = c as isize + dir.1;
|
||||||
|
if let Ok(dest) = Square::from_row_col_signed(nr, nc) {
|
||||||
|
ret.push(Move {
|
||||||
|
src,
|
||||||
|
dest,
|
||||||
|
move_type: MoveType::Normal,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -504,6 +528,28 @@ mod tests {
|
|||||||
MoveType::Normal,
|
MoveType::Normal,
|
||||||
)],
|
)],
|
||||||
),
|
),
|
||||||
|
// horse test
|
||||||
|
(
|
||||||
|
"8/2r1r3/1n3q2/3N4/8/2p5/8/8 w - - 0 1",
|
||||||
|
vec![(
|
||||||
|
"d5",
|
||||||
|
vec![
|
||||||
|
"f6", "e7", "c7", "b6", "b4", "c3", "e3", "f4",
|
||||||
|
],
|
||||||
|
MoveType::Normal,
|
||||||
|
)],
|
||||||
|
),
|
||||||
|
// horse (blocked by boundary)
|
||||||
|
(
|
||||||
|
"8/8/8/8/8/6n1/5n2/7N w - - 0 1",
|
||||||
|
vec![(
|
||||||
|
"h1",
|
||||||
|
vec![
|
||||||
|
"f2", "g3"
|
||||||
|
],
|
||||||
|
MoveType::Normal,
|
||||||
|
)],
|
||||||
|
),
|
||||||
// white pawn promotion
|
// white pawn promotion
|
||||||
(
|
(
|
||||||
"q1q5/1P6/8/8/8/8/8/8 w - - 0 1",
|
"q1q5/1P6/8/8/8/8/8/8 w - - 0 1",
|
||||||
|
Loading…
Reference in New Issue
Block a user