Add working layout and setup code for the game engine.

This commit is contained in:
Dorian 2019-03-02 07:43:42 -05:00
parent 3af3ede5a7
commit c1608bacd1
1 changed files with 44 additions and 4 deletions

View File

@ -61,8 +61,8 @@ impl Board {
}
fn get_index(&self, row: u32, column: u32) -> usize {
let width = self.dimensions.get_size() / 2;
(row * width + (column / 2)) as usize
let width = self.dimensions.get_size();
(row * (width / 2) + column) as usize
}
}
@ -89,7 +89,7 @@ impl fmt::Display for Board {
for col in 0..(width / 2) {
let idx = (row * (width / 2) + col) as usize;
let idx = self.get_index(row, col);
let token = match self.tiles[idx] {
BoardTile::Piece(Piece::LightPawn) => "○",
@ -122,7 +122,7 @@ mod tests {
use crate::BoardSize;
#[test]
fn setup_international_board() {
fn initial_international_board_setup() {
let expected =
" \
@ -140,4 +140,44 @@ mod tests {
";
assert_eq!(Board::new(BoardSize::International).to_string(), expected);
}
#[test]
fn initial_american_board_setup() {
let expected =
" \
ABCDEFGH\n\
1 ○ ○ ○ ○\n\
2○ ○ ○ ○ \n\
3 ○ ○ ○ ○\n\
4◰ ◰ ◰ ◰ \n\
5 ◰ ◰ ◰ ◰\n\
6● ● ● ● \n\
7 ● ● ● ●\n\
8● ● ● ● \n\
";
assert_eq!(Board::new(BoardSize::American).to_string(), expected);
}
#[test]
fn initial_canadian_board_setup() {
let expected =
" \
ABCDEFGHIJKL\n\
1 ○ ○ ○ ○ ○ ○\n\
2○ ○ ○ ○ ○ ○ \n\
3 ○ ○ ○ ○ ○ ○\n\
4○ ○ ○ ○ ○ ○ \n\
5 ○ ○ ○ ○ ○ ○\n\
6◰ ◰ ◰ ◰ ◰ ◰ \n\
7 ◰ ◰ ◰ ◰ ◰ ◰\n\
8● ● ● ● ● ● \n\
9 ● ● ● ● ● ●\n\
10● ● ● ● ● ● \n\
11 ● ● ● ● ● ●\n\
12● ● ● ● ● ● \n\
";
assert_eq!(Board::new(BoardSize::Canadian).to_string(), expected);
}
}