コード例 #1
0
ファイル: PgnService.php プロジェクト: StasPiv/playzone
 /**
  * @param Game $game
  * @return Pgn
  */
 private function buildPgnForSaver(Game $game) : Pgn
 {
     $headers = ['Event' => 'Game #' . $game->getId(), 'Site' => $this->container->getParameter('app_core_site_host'), 'White' => $game->getUserWhite(), 'Black' => $game->getUserBlack(), 'Result' => $game->getResultWhite() == 0.5 ? '1/2-1/2' : $game->getResultWhite() . '-' . $game->getResultBlack(), 'Date' => $game->getTimeLastMove()->format('Y.m.d')];
     if ($game->getTournamentGame()) {
         $headers['Event'] = $game->getTournamentGame()->getTournament()->getName();
         $headers['Round'] = $game->getTournamentGame()->getRound();
     }
     return (new Pgn())->setPgnString($game->getPgn())->setHeaders($headers);
 }
コード例 #2
0
ファイル: GameHandler.php プロジェクト: StasPiv/playzone
 /**
  * @param GameFixResultInterface $request
  * @param Game $game
  */
 private function fixResultIfTimeOver(GameFixResultInterface $request, Game $game)
 {
     $gameService = $this->container->get("core.service.chess.game");
     $gameService->setPgn($game->getPgn());
     if ($request->getTimeWhite() !== null && $game->getTimeWhite() <= 100) {
         switch ($gameService->isInsufficientMaterialBlack()) {
             case false:
                 $game->setResultWhite(0)->setResultBlack(1);
                 $this->changeGameStatus($game, GameStatus::END);
                 break;
             case true:
                 $game->setResultWhite(0.5)->setResultBlack(0.5);
                 $this->changeGameStatus($game, GameStatus::END);
                 break;
         }
     } elseif ($request->getTimeBlack() !== null && $game->getTimeBlack() <= 100) {
         switch ($gameService->isInsufficientMaterialWhite()) {
             case false:
                 $game->setResultWhite(1)->setResultBlack(0);
                 $this->changeGameStatus($game, GameStatus::END);
                 break;
             case true:
                 $game->setResultWhite(0.5)->setResultBlack(0.5);
                 $this->changeGameStatus($game, GameStatus::END);
                 break;
         }
     }
 }
コード例 #3
0
ファイル: ChessService.php プロジェクト: StasPiv/playzone
 /**
  * @param Game $game
  * @return bool
  */
 public function canAbort(Game $game) : bool
 {
     $this->chessGameService->setPgn($game->getPgn());
     return count($this->chessGameService->getMoveList()) < 3;
 }