initial commit
This commit is contained in:
commit
61aa14398a
15 changed files with 4628 additions and 0 deletions
47
board.cc
Normal file
47
board.cc
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#include <board.h>
|
||||
#include <cstdio>
|
||||
|
||||
void OthelloBoard::make_move(unsigned row, unsigned col,
|
||||
direction dir)
|
||||
{
|
||||
if (!position_reachable(row, col, dir))
|
||||
return;
|
||||
|
||||
idx_t row_idx = row; // row loop idx
|
||||
idx_t col_idx = col; // col loop idx
|
||||
int inc_row = 0; // step width to increment row idx
|
||||
int inc_col = 0; // step width to increment col idx
|
||||
|
||||
setup_directions(row_idx, col_idx, inc_row, inc_col, dir);
|
||||
|
||||
FieldType cur = get(row_idx, col_idx);
|
||||
while ((cur != _player) && (cur != EMPTY)) {
|
||||
set(row_idx, col_idx, _player);
|
||||
col_idx = static_cast<idx_t>((int)col_idx + inc_col);
|
||||
row_idx = static_cast<idx_t>((int)row_idx + inc_row);
|
||||
cur = get(row_idx, col_idx);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool OthelloBoard::move(unsigned row, unsigned col)
|
||||
{
|
||||
_last_player_skipped = false;
|
||||
|
||||
if (!validate(row, col)) {
|
||||
::printf("\033[31;1m -> Invalid move.\033[0m\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
set(row, col, _player);
|
||||
make_move(row, col, LEFT);
|
||||
make_move(row, col, RIGHT);
|
||||
make_move(row, col, UP);
|
||||
make_move(row, col, DOWN);
|
||||
make_move(row, col, UP_LEFT);
|
||||
make_move(row, col, UP_RIGHT);
|
||||
make_move(row, col, DOWN_LEFT);
|
||||
make_move(row, col, DOWN_RIGHT);
|
||||
|
||||
return true;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue