public function testCheckIfAreDiffrentPlayers() { $player1 = new Player('player 1'); $player2 = new Player('player 2'); Player::checkIfAreDiffrentPlayers($player1, $player2); $this->addToAssertionCount(1); $expectedException = PlayerException::theseSamePlayers($player1); $this->expectException(get_class($expectedException)); $this->expectExceptionMessage($expectedException->getMessage()); Player::checkIfAreDiffrentPlayers($player1, $player1); }
/** * When $winPlayer win round, it is collect all cards which are situated on GameTable * * @param Player $winPlayer */ protected function collectCardsByWinnerPlayer(Player $winPlayer) { $winCardsCollection = new CardCollection(); foreach ($this->getPlayers() as $player) { $winCardsCollection->appendMany($this->gameTable->getPlayerCards($player)->collectAll()); } $winCardsCollection->setAllVisible(false); $winCardsCollection->shuffle(); $winPlayer->getCards()->prependMany($winCardsCollection->collectAll()); }
/** * Giveing $card from $byPlayer to $toPlayer * Implemented games can override this metod by should call it for this action * * @param Card $card * @param Player $byPlayer * @param Player $toPlayer */ public function giveCardByPlayerToPlayer(Card $card, Player $byPlayer, Player $toPlayer) { $byPlayer->checkPlayerHasCard($card); $toPlayer->checkPlayerHasNotCard($card); Player::checkIfAreDiffrentPlayers($byPlayer, $toPlayer); $this->checkPlayerCanGiveCardToPlayer($byPlayer, $toPlayer, $card); $byPlayerCard = $byPlayer->getCards()->collect($card); $toPlayer->getCards()->append($byPlayerCard); }