fix diagonals and user input
This commit is contained in:
26
src/board.rs
26
src/board.rs
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user