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)); }