Exemple #1
0
 private function lose(Player $player) : bool
 {
     if ($player->equals(Player::X())) {
         return $this->win(Player::O());
     }
     return $this->win(Player::X());
 }
Exemple #2
0
 public function testEngineHandlesOneDrawOption()
 {
     $X = Player::X();
     $state = new GameState();
     // OXX
     //  OO
     // XOX
     $state->fillField(2, 0);
     // X
     $state->fillField(0, 0);
     // O
     $state->fillField(0, 2);
     // X
     $state->fillField(1, 1);
     // O
     $state->fillField(0, 1);
     // X
     $state->fillField(2, 1);
     // O
     $state->fillField(2, 2);
     // X
     $state->fillField(1, 2);
     // O
     $engine = new Engine($X);
     $decision = $engine->decide($state);
     $newState = $decision->apply($state);
     $this->assertTrue($newState->getField(1, 0)->equals($X), 'Middle-left field must be taken by X');
 }