Beispiel #1
0
 public function move(Game $game, $level)
 {
     $analyser = new Analyser($game->getBoard());
     $moveTree = $analyser->getPlayerPossibleMoves($game->getTurnPlayer());
     // choose random piece
     do {
         $from = array_rand($moveTree);
     } while (empty($moveTree[$from]));
     // choose random move
     $to = $moveTree[$from][array_rand($moveTree[$from])];
     return $from . ' ' . $to;
 }
 protected function computePossibleMoves($data, $turn = 0)
 {
     $game = $this->createGame($data);
     $game->setTurns($turn);
     $game->setStatus(Game::STARTED);
     $analyser = new Analyser($game->getBoard());
     $moveTree = $analyser->getPlayerPossibleMoves($game->getTurnPlayer());
     return $moveTree;
 }
 public function showAction($hash)
 {
     $player = $this->findPlayer($hash);
     $game = $player->getGame();
     if (!$game->getIsStarted()) {
         return $this->render('LichessBundle:Player:waitNext', array('player' => $player));
     }
     if (!$player->getOpponent()->getIsAi() && !$game->getIsFinished()) {
         $synchronizer = new Synchronizer();
         $synchronizer->update($player);
         $this->container->getLichessPersistenceService()->save($game);
     }
     $analyser = new Analyser($game->getBoard());
     $isKingAttacked = $analyser->isKingAttacked($game->getTurnPlayer());
     if ($isKingAttacked) {
         $checkSquareKey = $game->getTurnPlayer()->getKing()->getSquareKey();
     } else {
         $checkSquareKey = null;
     }
     $this->container->getLichessSocketService()->write($player, array());
     return $this->render('LichessBundle:Player:show', array('player' => $player, 'checkSquareKey' => $checkSquareKey, 'possibleMoves' => $player->isMyTurn() && !$game->getIsFinished() ? $analyser->getPlayerPossibleMoves($player, $isKingAttacked) : null));
 }