fix diagonals and user input

This commit is contained in:
2025-01-30 15:53:02 -05:00
parent db42964a47
commit 1fc731ac59
3 changed files with 52 additions and 4 deletions

View File

@@ -12,9 +12,9 @@ impl fmt::Display for Board {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let horiz_sep_line = "-".repeat(BOARD_SIZE * 2 + 1);
for i in 0..BOARD_SIZE {
writeln!(f, "{}", horiz_sep_line)?;
writeln!(f, " {}", horiz_sep_line)?;
write!(f, "|")?;
write!(f, "{}|", i)?;
for j in 0..BOARD_SIZE {
write!(
f,
@@ -117,7 +117,17 @@ impl Board {
// handle diagonals
chains.extend(
i_chain
.clone()
.into_iter()
.zip(j_chain.clone())
.map(|(i_vec, j_vec)| i_vec.into_iter().zip(j_vec).collect()),
);
// handle top right diagonals too
chains.extend(
i_chain
.into_iter()
.rev()
.zip(j_chain)
.map(|(i_vec, j_vec)| i_vec.into_iter().zip(j_vec).collect()),
);
@@ -240,4 +250,16 @@ mod test {
);
}
}
#[test]
fn diag_capture() {
let mut board = Board::new().starting_pos();
assert_eq!(board.place(2, 4, Piece::White), Ok(()), "{}", board);
assert_eq!(board.place(2, 3, Piece::Black), Ok(()), "{}", board);
assert_eq!(board.place(2, 2, Piece::White), Ok(()), "{}", board);
assert_eq!(board.place(2, 5, Piece::Black), Ok(()), "{}", board);
}
}