/** * @Route("/show/{game}", name="game_show") * @param Game $game * @param Request $request * @return Response */ public function showGame(Game $game, Request $request) { //Проверяем и закрываем закончившиеся игры $this->get('app.service.game_helper')->closeFinishedTeamGames(); $teamGame = $this->getDoctrine()->getRepository(TeamGame::class)->findActiveTeamGame($this->getUser()->getTeam()); if ($teamGame && $game->getId() !== $teamGame->getGame()->getId()) { $teamGame = null; } $gameTask = $teamGame ? $this->getDoctrine()->getRepository(GameTask::class)->findCurrentTask($teamGame) : null; $codeForm = $this->createForm(ActiveGameCodeType::class); $codeForm->handleRequest($request); if ($teamGame && $gameTask && $codeForm->isValid()) { $taskCode = $this->getDoctrine()->getRepository(TaskCode::class)->findOneBy(['gameTask' => $gameTask, 'code' => $codeForm->getData()['code']]); if ($taskCode) { list($this->flashType, $this->flashMessage) = $this->get('app.service.game_helper')->processGame($teamGame, $gameTask, $taskCode, $this->getUser()); $this->addFlashMessage(); return $this->redirectToRoute('game_show', ['game' => $game->getId()]); } else { $this->flashMessage = 'Код не верен'; $this->flashType = 'danger'; $this->addFlashMessage(); } } return $this->render('AppBundle:Game:show.html.twig', ['game' => $game, 'gameList' => $this->getDoctrine()->getRepository(Game::class)->findFutureGames(), 'teamGame' => $teamGame, 'gameTask' => $gameTask, 'form' => $codeForm->createView()]); }
/** * {@inheritDoc} */ public function load(ObjectManager $manager) { $game = new Game(new RandomHeadTailsGenerator()); $game->setName('Arizona'); $game2 = new Game(new RandomHeadTailsGenerator()); $game2->setName('Delaware'); $game3 = new Game(new RandomHeadTailsGenerator()); $game3->setName('California'); $game4 = new Game(new RandomHeadTailsGenerator()); $game4->setName('Ohio'); $game5 = new Game(new RandomHeadTailsGenerator()); $game5->setName('New York'); $game6 = new Game(new RandomHeadTailsGenerator()); $game6->setName('Nevada'); $game7 = new Game(new RandomHeadTailsGenerator()); $game7->setName('Utah'); $manager->persist($game); $manager->persist($game2); $manager->persist($game3); $manager->persist($game4); $manager->persist($game5); $manager->persist($game6); $manager->persist($game7); $manager->flush(); $this->addReference('game-new-york', $game5); $this->addReference('game-nevada', $game6); $this->addReference('game-utah', $game7); }
/** * Get replacement game * * @param Game $game * @return Game */ public function getReplacementGame(Game $game, GameNameFinder $gameNameFinder) { $replacement = new Game(new RandomHeadTailsGenerator()); $replacement->setName($gameNameFinder->getUniqueName()); $replacement->setReplacedGameId($game->getId()); return $replacement; }
public function testThatFinishedAtIsCreatedWhenANewlyFinishedGameIsUpdated() { $game = new Game(new RandomHeadTailsGenerator()); $game->setName('Wyoming'); $this->em->persist($game); $this->em->flush(); $this->assertNull($game->getFinishedAt()); $this->setUpTwoPlayerGame($game); $this->assertInstanceOf('\\DateTime', $game->getFinishedAt()); }
/** * @Route("/admin/game/delete/{id}", requirements={"id" = "\d+"}, name="admin_game_delete") */ public function deleteAction(Game $game) { if ($game->getPlayerCount() > 0) { $this->addFlash('notice', 'You can\'t delete a game with players'); } else { $em = $this->getDoctrine()->getManager(); $em->remove($game); $em->flush(); } return $this->redirectToRoute('admin_game_home'); }
public function removeUserFromGame(User $user, Game $game) { if ($game->isUserInGame($user)) { $em = $this->getEntityManager(); $player = $game->getPlayerByUserId($user->getId()); // note it is important that we remove the player from the game before deleting them so that game state is updated to reflect this change $game->removePlayer($player); $em->remove($player); $em->flush(); } }
/** * {@inheritDoc} */ public function load(ObjectManager $manager) { $lol = new Game(); $lol->setName('League of Legends'); $lol->setSystName('lol'); $lol->setNbPlayers(5); $manager->persist($lol); $csgo = new Game(); $csgo->setName('Counter Strike : Global Offensive'); $csgo->setSystName('csgo'); $csgo->setNbPlayers(5); $manager->persist($csgo); $manager->flush(); $this->addReference('lol-game', $lol); $this->addReference('csgo-game', $csgo); }
protected function setUpGame() { $game = new Game(new RandomHeadTailsGenerator()); $game->setName('Arizona'); $user = new User(); $user->setId(1); $user->setUsername('ricardo75'); $player = new Player($user, Game::FLIP_TYPE_HEADS); $game->addPlayer($player); $user2 = new User(); $user->setId(2); $user2->setUsername('flipshark'); $player2 = new Player($user2, Game::FLIP_TYPE_TAILS); $game->addPlayer($player2); return $game; }
public function load(ObjectManager $manager) { $game = new Game(); $game->setName('name'); $game->setDeveloper('developer'); $player = new Player(); $player->setName('name'); $score = new Score(); $score->setValue(1); $score->setPlayer($player); $score->setGame($game); $manager->persist($game); $manager->persist($player); $manager->persist($score); $manager->flush(); self::$score = $score; }
public function load(ObjectManager $manager) { static $list = array('League of Legends' => ['systName' => 'lol', 'description' => ' ', 'places' => '16', 'nbplayers' => '5'], 'Counter Strike : Global Warfare' => ['systName' => 'csgo', 'description' => ' ', 'places' => '16', 'nbplayers' => '5'], 'Heroes Of The Storm' => ['systName' => 'hots', 'description' => ' ', 'places' => '16', 'nbplayers' => '5'], 'Awesomenauts ' => ['systName' => 'awesomenauts', 'description' => ' ', 'places' => '16', 'nbplayers' => '3'], 'Rocket League' => ['systName' => 'rl', 'description' => ' ', 'places' => '16', 'nbplayers' => '3'], 'Team Fortress 2 ' => ['systName' => 'tf2', 'description' => '', 'places' => '16', 'nbplayers' => '5'], 'Hearthstone' => ['systName' => 'hearthstone', 'description' => ' ', 'places' => '64'], 'Super Smash Bros' => ['systName' => 'smash', 'description' => ' '], 'Mario Smash Football' => ['systName' => 'mariofoot', 'description' => ''], 'Street Fighter V' => ['systName' => 'streetfighter', 'description' => ''], 'Splatoon' => ['systName' => 'splatoon', 'description' => ''], 'Starcraft 2' => ['systName' => 'starcraft', 'description' => ''], 'Guitar Hero' => ['systName' => 'guitarhero', 'description' => ''], 'Rock Band' => ['systName' => 'rockband', 'description' => ''], 'Super Smash Bros. Melee' => ['systName' => 'smashmelee', 'description' => ''], 'Mario Kart 8' => ['systName' => 'mkart', 'description' => ''], 'Stepmania' => ['systName' => 'stepmania', 'description' => ''], 'Osu' => ['systName' => 'osu', 'description' => ''], 'Trackmania' => ['systName' => 'trackmania', 'description' => ''], 'Oculus Rift' => ['systName' => 'oculus', 'description' => ''], 'Jeux de société' => ['systName' => 'jds', 'description' => ''], 'Jeu de rôle' => ['systName' => 'jdr', 'description' => '']); foreach ($list as $name => $systname) { $game = new Game(); $game->setName($name); $game->setSystName($systname['systName']); $game->setDescription($systname['description']); if (array_key_exists('places', $systname)) { $game->setPlaces($systname['places']); } if (array_key_exists('nbplayers', $systname)) { $game->setNbplayers($systname['nbplayers']); } $manager->persist($game); $manager->flush(); } }
public function createPostAction(Request $request) { $response = new Response(); $requestData = json_decode($request->getContent(), true); $em = $this->getDoctrine()->getManager(); $gameName = $requestData['gameName']; /** @var UserRepository $userRepository */ $userRepository = $em->getRepository('AppBundle\\Entity\\User'); /** @var User $user */ $user = $userRepository->loadUserByUsername($this->getUser()->getUsername()); /** @var Game $game */ $game = new Game(); $game->addUser($user); $gameName ? $game->setName($gameName) : $game->setName('Game by ' . $user->getUsername()); $em->persist($game); $user->addGame($game); $em->flush(); return $response->setContent(json_encode(['message' => 'Game successfully created.'])); }
/** * @param Request $request * @Route("/game/new", name="gameNew") * @Method({"GET", "POST"}) * @Template("AppBundle:admin/form:game.html.twig") * * @link http://symfony.com/doc/2.8/cookbook/form/form_collections.html * * @return Response */ public function newGameAction(Request $request) { $em = $this->getDoctrine()->getManager(); $game = new Game(); $game->setGamedate(new \DateTime('now')); $score['host'] = new GameScore(); $score['guest'] = new GameScore(); $game->addScore($score['host']->setSide('host')); $game->addScore($score['guest']->setSide('guest')); $form = $this->createForm(GameType::class, $game, ['em' => $em, 'action' => $this->generateUrl('gameNew'), 'method' => Request::METHOD_POST])->add('save', SubmitType::class, array('label' => 'Save')); if ($request->getMethod() == 'POST') { $form->handleRequest($request); if ($form->isValid()) { $em->persist($game); $em->flush(); return $this->redirectToRoute('adminGames'); } } return ['form' => $form->createView()]; }
/** * @param Game $game * @return array */ public function getGameResult(Game $game) { $result = []; $totalTimeList = []; $totalCodesList = []; foreach ($game->getTeamGames() as $teamGame) { /** @var Game $game */ $game = $teamGame->getGame(); $finishedAt = $teamGame->getFinishedAt() ?: $game->getEndAt(); $totalCodes = $teamGame->getGameCodes()->count(); $totalTime = $finishedAt->format('U') - $game->getStartAt()->format('U'); $hours = floor($totalTime / 3600); $min = $totalTime / 60 % 60; $sec = $totalTime % 60; $result[$teamGame->getId()] = ['team' => $teamGame->getTeam()->getName(), 'totalCodes' => $totalCodes, 'totalTime' => sprintf('%s ч., %s мин. %s сек.', $hours, $min, $sec)]; $totalCodesList[$teamGame->getId()] = $totalCodes; $totalTimeList[$teamGame->getId()] = $totalTime; } array_multisort($totalCodesList, SORT_DESC, $totalTimeList, SORT_ASC, $result); return $result; }
public function load(ObjectManager $manager) { $faker = Factory::create(); for ($i = 1; $i <= 100; $i++) { $game = new Game(); $game->setDescription($faker->text()); $game->setResult(rand(0, 5) . ":" . rand(0, 5)); $manager->persist($game); $arrayId = array(); while (count($arrayId) <= 1) { $id = rand(1, 24); if (array_search($id, $arrayId) === false) { $arrayId[] = $id; $team = $this->getReference("team {$id}"); $team->getGames()->add($game); $game->getTeams()->add($team); } } } $manager->flush(); }
/** * Creates a new Turn entity. * * @Route("/new/{id}", name="turn_new") * @Method({"GET", "POST"}) * @Template("AppBundle:turn:new.html.twig") */ public function newAction(Request $request, Game $game) { if (!$game->belongsTo($this->getUser())) { return $this->redirectToRoute('homepage'); } $turn = (new Turn())->setGame($game); $form = $this->createForm(get_class(new TurnType()), $turn); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $turn->setUpdatedAt(new \DateTime()); $em = $this->getDoctrine()->getManager(); $em->persist($turn); $em->flush(); if ($turn->getShareLink() !== '0') { $turn->generateShareLink(); $em->persist($turn); $em->flush(); } return $this->redirectToRoute('turn_show', array('id' => $turn->getId())); } return array('turn' => $turn, 'form' => $form->createView()); }
protected function persistCompletedGame($winner = null) { //--------------------------------------------------------- // New game in db $game = new Game(); $game->setBoardSize(static::$boardSize); $game->setXPlayer(static::$xPlayer); $game->setOPlayer(static::$oPlayer); $game->setWinner($winner); $em = $this->getDoctrine()->getManager(); $em->persist($game); $em->flush(); }
public function testPlayerShipsAndOtherShips() { $user1 = $this->prophesize('AppBundle\\Entity\\User'); $user2 = $this->prophesize('AppBundle\\Entity\\User'); $user1Ships = ['A1']; $user2Ships = ['B2']; $user1->getId()->willReturn(1); $user2->getId()->willReturn(2); $this->game->setUser1Ships($user1Ships); $this->game->setUser2Ships($user2Ships); $this->game->setUser1($user1->reveal()); $this->game->setUser2($user2->reveal()); $this->game->setLoggedUser($user1->reveal()); $this->assertEquals($user1Ships, $this->game->getPlayerShips()); $this->assertEquals($user2Ships, $this->game->getOtherShips()); $this->game->setLoggedUser($user2->reveal()); $this->assertEquals($user2Ships, $this->game->getPlayerShips()); $this->assertEquals($user1Ships, $this->game->getOtherShips()); }
public function load(ObjectManager $manager) { $faker = \Faker\Factory::create(); $game = new Game(); $game->setDate($faker->dateTime()); $game->setTeam1($this->getReference("team-1")); $game->setTeam2($this->getReference("team-2")); $game->setScoreTeam1($faker->numberBetween(0, 10)); $game->setScoreTeam2($faker->numberBetween(0, 10)); $manager->persist($game); $manager->flush(); $this->addReference("game-1", $game); $game = new Game(); $game->setDate($faker->dateTime()); $game->setTeam1($this->getReference("team-3")); $game->setTeam2($this->getReference("team-4")); $game->setScoreTeam1($faker->numberBetween(0, 10)); $game->setScoreTeam2($faker->numberBetween(0, 10)); $manager->persist($game); $manager->flush(); $this->addReference("game-2", $game); $game = new Game(); $game->setDate($faker->dateTime()); $game->setTeam1($this->getReference("team-5")); $game->setTeam2($this->getReference("team-6")); $game->setScoreTeam1($faker->numberBetween(0, 10)); $game->setScoreTeam2($faker->numberBetween(0, 10)); $manager->persist($game); $manager->flush(); $this->addReference("game-3", $game); $game = new Game(); $game->setDate($faker->dateTime()); $game->setTeam1($this->getReference("team-7")); $game->setTeam2($this->getReference("team-8")); $game->setScoreTeam1($faker->numberBetween(0, 10)); $game->setScoreTeam2($faker->numberBetween(0, 10)); $manager->persist($game); $manager->flush(); $this->addReference("game-4", $game); }
/** * @param User $user * @param array $ships * @return Game */ private function createGame(User $user, array $ships = []) { $entityManager = $this->getEntityManager(); $game = new Game(); $game->setLoggedUser($user)->setUser1($user)->setPlayerShips($ships); $entityManager->persist($game); $entityManager->flush(); return $game; }
/** * @param Game $game */ public function addGameTeam2(Game $game) { $game->setTeam2Id($this); $this->gameTeam2[] = $game; return $this; }
public function testIsValidFlipTypeReturnsFalseForInvalidFlipTypes() { $invalidType1 = 0; $invalidType2 = 3; $this->assertFalse(Game::isValidFlipType($invalidType1)); $this->assertFalse(Game::isValidFlipType($invalidType2)); }
/** * @param bool $forceNew * * @return Game * @throws Exception */ public function getCurrentGame($forceNew = false) { if (true === $forceNew) { $this->currentGame = null; } if (!$this->currentGame instanceof Game) { if (false === $forceNew && $this->session->has(static::SESSION_CURRENT_GAME)) { $this->currentGame = $this->gameRepository->find($this->session->get(static::SESSION_CURRENT_GAME)); } else { $queenBee = $this->queenBeeRepository->findOneBy(['name' => static::DEFAULT_QUEEN_BEE_NAME]); if (!$queenBee instanceof QueenBee) { throw new Exception('? did you change the database ?'); } $newGame = new Game(); $newGame->setQueenBee($queenBee); $this->entityManagerInterface->persist($newGame); $this->entityManagerInterface->flush($newGame); $this->session->set(static::SESSION_CURRENT_GAME, $newGame->getId()); $this->currentGame = $newGame; } } return $this->currentGame; }
/** * * return 404 { status: 'pending' } ou 200 {coord: {y: 12, x: 13}} * @ApiDoc( * description="Récupère les informations sur le coup de l'adversaire.", * section="4 - Jeu", * authentication=true, * statusCodes={ * 200: "L'adversaire a joué son coup. Renvoie les informations sur le coup (case visée).", * 404: "L'adversaire n'a pas encore joué ce coup." * } * ) * @ParamConverter("game", class="AppBundle:Game", options={"id" = "game_id"}) * @QueryParam(name="secret", nullable=true, description="Secret du joueur") * @Get("/api/v1/games/{game_id}/moves/{move_id}", name="retrieve_shot_api") ou /moves? * @Get("/games/{game_id}/moves/{move_id}", name="retrieve_shot") ou /moves? */ public function retrieveShotAction(Game $game, $move_id, ParamFetcher $paramFetcher) { $move = $game->retrieveShot($move_id); if ($move === false) { return $this->view(array('info' => 'Move doesn\'t exist.'), 404)->setTemplate('AppBundle:Api:shoot_z.html.twig')->setTemplateData(array('move_id' => $move_id, 'game' => $game, 'secret' => $paramFetcher->get('secret'))); } return $this->view(array('move' => $move), 200)->setTemplate('AppBundle:Api:shoot_move.html.twig')->setTemplateData(array('move' => $move, 'game' => $game, 'secret' => $paramFetcher->get('secret'))); }
/** * Example request in <strong>Content</strong>: * <pre>{"joinGame":true,"playerShips":["A1","C2","D2","F2","H2","J2","F5","F6","I6","J6","A7","B7","C7","F7","F8","I9","J9","E10","F10","G10"]}</pre> * * @ApiDoc( * resource=true, * description="Update game", * section="Game", * statusCodes={ * 204="Game updated", * 400="Incorrect parameter provided", * 403="No access to game", * 404="Game not found", * } * ) * * @Tag(expression="'game-' ~ game.getId()") * @Tag(expression="'game-' ~ game.getId() ~ 'events'")) * @Tag("games") * @Security("request.request.get('joinGame') ? game.canJoin(user) : game.belongsToUser(user)") * @RequestParam(name="joinGame", requirements=@Assert\EqualTo("true"), allowBlank=true, nullable=true) * @RequestParam(name="playerShips", requirements="[A-J]([1-9]|10)", allowBlank=true, map=true) * * @param ParamFetcher $paramFetcher * @param Game $game */ public function patchGameAction(ParamFetcher $paramFetcher, Game $game) { if ($paramFetcher->get('joinGame')) { $game->setUser2($this->getUser()); $this->createEvent($game, Event::TYPE_JOIN_GAME); } $playerShips = $paramFetcher->get('playerShips'); if ($playerShips) { $game->setPlayerShips($playerShips); $this->createEvent($game, Event::TYPE_START_GAME); } $this->entityManager->persist($game); $this->entityManager->flush(); }
/** * @param Client $client * @param Game $game * @param string $apiKey * @return Response */ private function callGetEvents(Client $client, Game $game, $apiKey) { $client->request('GET', sprintf('/v1/games/%d/events', $game->getId()), [], [], ['HTTP_ACCEPT' => 'application/json', 'HTTP_AUTHORIZATION' => 'Bearer ' . $apiKey]); return $client->getResponse(); }
private function roundEnd(Game $game, $userId) { $gameField = json_decode($game->getJson(), true); if (!$gameField[Gamehelper::USER1][GameHelper::USER_PASSED] && $gameField[Gamehelper::USER2][GameHelper::USER_PASSED] && $userId == $gameField[GameHelper::USER1][GameHelper::USER_ID] || !$gameField[Gamehelper::USER2][GameHelper::USER_PASSED] && $gameField[Gamehelper::USER1][GameHelper::USER_PASSED] && $userId == $gameField[GameHelper::USER2][GameHelper::USER_ID]) { return true; } else { return false; } }
/** * @Route("/admin/insert/game/", name="game_insert_admin") * */ public function generateGameAction() { $teams = $this->getDoctrine()->getRepository('AppBundle:Team')->findAll(); if (!$teams) { throw $this->createNotFoundException('Not found'); } $count = 0; $arr = array(); foreach ($teams as $team) { $arr[$count] = $team; $count++; } $faker = Factory::create(); $em = $this->getDoctrine()->getManager(); for ($i = 0; $i < 20; $i++) { $game = new Game(); $game->setDateGame($faker->dateTime); $goals1 = rand(0, 5); $goals2 = rand(0, 5); $team1 = $arr[rand(0, $count - 1)]; $team2 = $arr[rand(0, $count - 1)]; $game->setGoals1($goals1); $game->setGoals2($goals2); $game->setTeam1($team1->getCountry()); $game->setTeam2($team2->getCountry()); $game->setTeam1Id($team1); $game->setTeam2Id($team2); $em->persist($game); } $em->flush(); $this->addFlash('notice', 'Add games!'); return $this->forward('AppBundle:Admin:show'); }
/** * Creates a form to delete a Game entity. * * @param Game $game The Game entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Game $game) { return $this->createFormBuilder()->setAction($this->generateUrl('game_delete', array('id' => $game->getId())))->setMethod('DELETE')->getForm(); }
/** * @Route("/secure/game-remove-player/{id}", requirements={"id" = "\d+"}, name="game_remove_player") */ public function removePlayerAction(Game $game, Request $request) { $em = $this->getDoctrine()->getManager(); //make sure only game players can remove themselves $user = $this->getUser(); if (!$game->isUserInGame($user)) { return $this->redirectToRoute('game_home'); } if ($request->isMethod('POST')) { $em->getRepository('AppBundle:Game')->removeUserFromGame($user, $game); $this->notifyPlayersOfGameUpdate($game); $this->addFlash('notice', 'You have been removed from this game'); return $this->redirectToRoute('game_view', array('id' => $game->getId()), 301); } // we should never get to this point }
public function load(\Doctrine\Common\Persistence\ObjectManager $manager) { $faker = \Faker\Factory::create(); $userManager = $this->container->get('fos_user.user_manager'); $addPlayer = function ($i, $team) use($manager, $userManager, $faker) { /** @var User $user */ $user = $userManager->createUser(); $user->setUsername('player' . $i); $user->setEmail('player' . $i . '@mailinator.com'); $user->setPlainPassword('123456'); $user->setEnabled(true); $user->setRoles(array('ROLE_USER', 'ROLE_PLAYER')); // $user->setGcmRegistrationId($faker->uuid); $userManager->updateUser($user, true); $player = new Player(); $player->setActive(true); $player->setAlias($faker->name); $player->setUser($user); $this->addReference('player' . $i, $player); $player->setImage($this->getReference('image' . rand(1, 19))); $manager->persist($player); $team->addPlayer($player); }; $team1 = new Team(); $team1->setActive(true); $team1->setName($faker->word); $manager->persist($team1); for ($i = 1; $i <= 5; $i++) { $addPlayer($i, $team1); } $team2 = new Team(); $team2->setActive(true); $team2->setName($faker->word); $manager->persist($team2); for ($i = 6; $i <= 10; $i++) { $addPlayer($i, $team2); } $game = new Game(); $game->setTeam1($team1); $game->setTeam2($team2); $game->setActive(true); $endTime = new DateTime(); $endTime->add(new DateInterval('PT15M')); $game->setEndTimeStamp($endTime); $this->addReference('game', $game); $manager->persist($team1); $manager->persist($team2); $queue = new Team(); $queue->setActive(true); $queue->setName('queue'); $manager->persist($queue); $manager->persist($game); for ($i = 1; $i < 10; $i++) { $team = new Team(); $team->setName($faker->word); $team->setActive(true); $team->setPoints(rand(10, 400)); $manager->persist($team); } for ($i = 11; $i < 20; $i++) { /** @var User $user */ $user = $userManager->createUser(); $user->setUsername('player' . $i); $user->setEmail('player' . $i . '@mailinator.com'); $user->setPlainPassword('123456'); $user->setEnabled(true); $user->setRoles(array('ROLE_USER', 'ROLE_PLAYER')); $userManager->updateUser($user, true); $player = new Player(); $player->setActive(true); $player->setAlias($faker->name); $player->setUser($user); $this->addReference('player' . $i, $player); $player->setImage($this->getReference('image' . rand(1, 19))); $manager->persist($player); } $manager->flush(); }