コード例 #1
0
ファイル: DrunkPlayerTest.php プロジェクト: asilgalis/XO
 public function testTurns()
 {
     $randomPlayer = new DrunkPlayer();
     $game = new Game();
     $game->addPlayer($randomPlayer, PlayerInterface::SYMBOL_X);
     $table = $game->getTurn();
     // First turn will be only in middle
     $this->assertEquals(1, $this->countSymbols($table));
     $this->assertEquals(PlayerInterface::SYMBOL_X, $table[1][1]);
     $table = $game->doTurn($this->findEmptySpot($table), PlayerInterface::SYMBOL_O);
     // we know that our turn definitely will be in corner
     $this->assertEquals(2, $this->countSymbols($table));
     $this->assertEquals(PlayerInterface::SYMBOL_O, $table[0][0]);
     $table = $game->getTurn();
     $this->assertEquals(3, $this->countSymbols($table));
     for ($x = 4; $x < 9; $x += 2) {
         if (!$game->getWinner()) {
             $table = $game->doTurn($this->findEmptySpot($table), PlayerInterface::SYMBOL_O);
             $this->assertEquals($x, $this->countSymbols($table));
         }
         if (!$game->getWinner()) {
             $table = $game->getTurn();
             $this->assertEquals($x + 1, $this->countSymbols($table));
         }
     }
 }
コード例 #2
0
ファイル: GameController.php プロジェクト: asilgalis/XO
 /**
  * @param Request $request
  * @return JsonResponse
  */
 public function indexJsonAction(Request $request)
 {
     $table = json_decode($request->get('table'));
     $request->get(PlayerInterface::SYMBOL_X) && $this->gameService->addPlayer($this->registryService->get($request->get(PlayerInterface::SYMBOL_X)));
     $request->get(PlayerInterface::SYMBOL_O) && $this->gameService->addPlayer($this->registryService->get($request->get(PlayerInterface::SYMBOL_O)), PlayerInterface::SYMBOL_O);
     $this->gameService->setTable($table);
     $this->gameService->getTurn();
     return new JsonResponse(["status" => "ok", 'table' => $this->gameService->getTable(), 'winner' => $this->gameService->getWinner()]);
 }
コード例 #3
0
ファイル: PlayerRegistryTest.php プロジェクト: asilgalis/XO
 /**
  * We expect every player to use win possibility
  * @dataProvider getTestUseWinPossibilityData
  * @param string $name
  * @param $table
  */
 public function testUseWinPossibility($name, $table)
 {
     if ($name == 'drunk') {
         return;
         // we do not expect that from drunk player ;)
     }
     $player = PlayerRegistry::getDefaultPlayers()->get($name);
     $game = new Game($table);
     $game->addPlayer($player);
     $game->getTurn();
     $this->assertEquals(PlayerInterface::SYMBOL_X, $game->getWinner());
 }
コード例 #4
0
ファイル: GameTest.php プロジェクト: asilgalis/XO
 /**
  * @dataProvider getWinnerDataProvider
  * @param array $table
  * @param string|null $winner
  */
 public function testGetWinner($table, $winner = null)
 {
     $game = new Game($table);
     $this->assertEquals($winner, $game->getWinner());
 }