summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorMike White <botahamec@outlook.com>2021-08-23 21:17:39 -0400
committerMike White <botahamec@outlook.com>2021-08-23 21:17:39 -0400
commit82c7c7edeb63c9f9082a201822da80e6021b2a11 (patch)
tree0b95844cd88bfedfc99b54fb1ede51929e3556be /model
parent5ea5dec4bd20949106dbd37a938215ee8674066e (diff)
Cleaned up a little
Diffstat (limited to 'model')
-rw-r--r--model/src/board.rs36
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
}