diff options
| author | Mike White <botahamec@outlook.com> | 2021-08-23 21:17:39 -0400 |
|---|---|---|
| committer | Mike White <botahamec@outlook.com> | 2021-08-23 21:17:39 -0400 |
| commit | 82c7c7edeb63c9f9082a201822da80e6021b2a11 (patch) | |
| tree | 0b95844cd88bfedfc99b54fb1ede51929e3556be | |
| parent | 5ea5dec4bd20949106dbd37a938215ee8674066e (diff) | |
Cleaned up a little
| -rw-r--r-- | model/src/board.rs | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/model/src/board.rs b/model/src/board.rs index 8785c99..e852063 100644 --- a/model/src/board.rs +++ b/model/src/board.rs @@ -124,25 +124,38 @@ impl CheckersBitBoard { self.turn } + /// Get the piece at the given square + /// + /// # Arguments + /// + /// * `value` - The square to get the piece from + /// + /// # Panics + /// + /// Panics if value >= 32 + const fn get(self, value: usize) -> Option<Piece> { + if self.piece_at(value) { + Some(Piece::new( + unsafe { self.king_at_unchecked(value) }, + unsafe { self.color_at_unchecked(value) }, + )) + } else { + None + } + } + /// Gets the piece at a given row column coordinate /// /// # Arguments /// /// * `row` - The row. The a file is row 0 /// * `col` - The column. The first rank is column 0 - pub fn piece_at_row_col(self, row: usize, col: usize) -> Option<Piece> { + pub fn get_at_row_col(self, row: usize, col: usize) -> Option<Piece> { if row < 8 && col < 8 { if row % 2 == 0 { if col % 2 == 0 { let value = ((18 - ((col / 2) * 6)) + ((row / 2) * 8)) % 32; - if self.piece_at(value) { - Some(Piece::new( - self.king_at(value).unwrap(), - self.color_at(value).unwrap(), - )) - } else { - None - } + self.get(value) } else { None } @@ -163,10 +176,7 @@ impl CheckersBitBoard { _ => unreachable!(), }; let value = (column_value + row_value) % 32; - Some(Piece::new( - self.king_at(value).unwrap(), - self.color_at(value).unwrap(), - )) + self.get(value) } else { None } |
