[board] Implement a custom Debug for Position
Newlines help a lot!
This commit is contained in:
parent
e23c20486e
commit
18d9a845e6
1 changed files with 28 additions and 1 deletions
|
|
@ -4,8 +4,9 @@ use crate::bitboard::BitBoard;
|
||||||
use crate::piece::{Piece, PiecePlacementError};
|
use crate::piece::{Piece, PiecePlacementError};
|
||||||
use crate::square::Square;
|
use crate::square::Square;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
use std::fmt::Write;
|
||||||
|
|
||||||
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
|
#[derive(Clone, Eq, Hash, PartialEq)]
|
||||||
pub struct Position {
|
pub struct Position {
|
||||||
/// Composite bitboards for all the pieces of a particular color.
|
/// Composite bitboards for all the pieces of a particular color.
|
||||||
pieces_per_color: [BitBoard; 2],
|
pieces_per_color: [BitBoard; 2],
|
||||||
|
|
@ -87,6 +88,32 @@ impl Position {
|
||||||
fn bitboard_for_piece_mut(&mut self, piece: &Piece) -> &mut BitBoard {
|
fn bitboard_for_piece_mut(&mut self, piece: &Piece) -> &mut BitBoard {
|
||||||
&mut self.pieces_per_type[piece.color as usize][piece.shape as usize]
|
&mut self.pieces_per_type[piece.color as usize][piece.shape as usize]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for Position {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
let mut output = String::new();
|
||||||
|
|
||||||
|
output.push_str("Position {\n");
|
||||||
|
write!(output, " color_to_move: {:?},\n", self.color_to_move)?;
|
||||||
|
|
||||||
|
output.push_str(" pieces_per_color: [\n");
|
||||||
|
for bb in self.pieces_per_color {
|
||||||
|
write!(output, " {bb:?},\n")?;
|
||||||
|
}
|
||||||
|
output.push_str(" ],\n");
|
||||||
|
|
||||||
|
output.push_str(" pieces_per_type: [\n");
|
||||||
|
for color_bbs in self.pieces_per_type {
|
||||||
|
output.push_str(" [\n");
|
||||||
|
for bb in color_bbs {
|
||||||
|
write!(output, " {bb:?},\n")?;
|
||||||
|
}
|
||||||
|
output.push_str(" ],\n");
|
||||||
|
}
|
||||||
|
output.push_str(" ],\n");
|
||||||
|
|
||||||
|
write!(f, "{}", output)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Display for Position {
|
impl fmt::Display for Position {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue