Beispiel #1
0
 /**
  * check if game has been won by either player
  *
  * returns a player if game is over (the winner is returned)
  * else returns null, game is not over yet
  *
  * @param Game $game
  *
  * @return Player|null the winner or null if ame is not over
  *
  * @throws \Exception
  */
 protected function checkForWinner(Game $game)
 {
     $gameMode = $game->getGameMode();
     switch ($gameMode->getMode()) {
         case GameMode::AHEAD:
             $player1count = $game->getLegsWonPlayer1() - $game->getLegsWonPlayer2();
             $player2count = $game->getLegsWonPlayer2() - $game->getLegsWonPlayer1();
             break;
         case GameMode::FIRST_TO:
             $player1count = $game->getLegsWonPlayer1();
             $player2count = $game->getLegsWonPlayer2();
             break;
         default:
             throw new \Exception('invalid game mode');
             break;
     }
     if ($player1count == $gameMode->getCount()) {
         return $game->getPlayer1();
     } elseif ($player2count == $gameMode->getCount()) {
         return $game->getPlayer2();
     }
     return null;
 }