Example #1
0
 /** @test */
 public function playerCanFinish()
 {
     $this->board->moveToken(Player::$GREEN, new TokenNumber(1), new CheaterDice(6, 6));
     $this->board->moveToken(Player::$GREEN, new TokenNumber(1), new CheaterDice(6, 40));
     $this->board->moveToken(Player::$GREEN, new TokenNumber(2), new CheaterDice(6, 6));
     $this->board->moveToken(Player::$GREEN, new TokenNumber(2), new CheaterDice(6, 41));
     $this->board->moveToken(Player::$GREEN, new TokenNumber(3), new CheaterDice(6, 6));
     $this->board->moveToken(Player::$GREEN, new TokenNumber(3), new CheaterDice(6, 42));
     $this->board->moveToken(Player::$GREEN, new TokenNumber(4), new CheaterDice(6, 6));
     $this->board->moveToken(Player::$GREEN, new TokenNumber(4), new CheaterDice(6, 43));
     $this->assertTrue($this->board->hasFinished(Player::$GREEN));
 }
Example #2
0
 /**
  * @param Dice        $dice
  * @param TokenNumber $tokenToMove
  *
  * @throws DomainException If the game has finished
  */
 public function playTurn(Dice $dice, TokenNumber $tokenToMove)
 {
     if ($this->playersInGame->allPlayersFinished()) {
         throw new DomainException('All players finished, the game has ended.');
     }
     $this->currentTurn++;
     $player = $this->currentPlayer();
     $this->board->moveToken($player, $tokenToMove, $dice);
     if ($this->board->hasFinished($player)) {
         $this->playersInGame->finishPlayer($player);
     }
     if (!$dice->equals(6)) {
         $this->passTurn();
     }
 }