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); }
public function test_it_returns_correct_board_coordinates_when_retrieving_coordinates_by_random() { for ($i = 0; $i < 10; ++$i) { list($column, $row) = $this->board->getRandomCoordinates(); $this->assertTrue(in_array($column, $this->board->getColumnIndices())); $this->assertTrue(in_array($row, $this->board->getRowIndices())); } }
/** * @param string $playerMark * @param Board $boardState * @return bool */ private function playerScores($playerMark, Board $boardState) { return $boardState->hasFullSequenceMarked($playerMark); }
/** * @return array (column, row) */ public function getRandomBoardCoordinates() { return $this->board->getRandomCoordinates(); }