/** * @test * @expectedException \Llvdl\Domino\Domain\Exception\InvalidMoveException */ public function moveOnlyAllowedForCurrentPlayer() { $this->game->deal(); $currentPlayerNumber = $this->game->getCurrentTurn()->getPlayerNumber(); $player = $this->game->getPlayerByPlayerNumber($currentPlayerNumber); $play = new Play(1, new Stone(6, 6), Table::SIDE_LEFT); $nextPlayerNumber = $currentPlayerNumber === 4 ? 1 : $currentPlayerNumber + 1; $nextPlayer = $this->game->getPlayerByPlayerNumber($nextPlayerNumber); $nextPlayer->addStones([new Stone(6, 6)]); $this->game->addMove($nextPlayer, $play); }
/** * @param Play $play */ public function play(Play $play) { if (!$this->hasStone($play->getStone())) { throw new InvalidMoveException('player does not have stone'); } try { $this->removeStone($play->getStone()); $this->game->addMove($this, $play); } catch (InvalidMoveException $e) { $this->addStones([$play->getStone()]); throw $e; } }