/** * @throws GameException */ public function moveCurrentPlayer() { $player = $this->getCurrentPlayer(); list($column, $row) = $player->getMove($this); $this->checkMove($column, $row); $this->board->markField($column, $row, $this->currentPlayerMark); }
public function test_it_returns_first_found_winning_move_when_mutliple_winning_moves_exist() { $boardState = new Board(); $boardState->markField(Board::COL_1, Board::ROW_1, 'X'); $boardState->markField(Board::COL_1, Board::ROW_2, 'X'); $boardState->markField(Board::COL_2, Board::ROW_2, 'O'); $boardState->markField(Board::COL_2, Board::ROW_3, 'O'); $boardState->markField(Board::COL_3, Board::ROW_1, 'X'); $boardState->markField(Board::COL_3, Board::ROW_2, 'O'); $game = $this->createMockGame('X', 'O', $boardState); list($col, $row) = $this->miniMaxStrategy->getMove($game); $this->assertEquals(Board::COL_1, $col); $this->assertEquals(Board::ROW_3, $row); }
/** * @dataProvider columnDataProvider */ public function test_it_returns_true_for_board_with_completed_column_when_checking_for_completed_sequence($column) { $this->board->markField($column, Board::ROW_1, 'X'); $this->board->markField($column, Board::ROW_2, 'X'); $this->board->markField($column, Board::ROW_3, 'X'); $this->assertTrue($this->board->hasFullSequenceMarked('X')); }