/** * @param PlayerMove $Move * @return bool */ private function processPlayerMove(PlayerMove $Move) { if ($this->Game->isGameStarted()) { $player = $this->Game->getCurrentPlayer(); if ($this->Game->getCurrentPlayer()->user->user_id == $this->user->user_id && $Move != PlayerMove::JoinGame && $Move != PlayerMove::StartGame) { $this->processTurn($Move); } elseif ($player->user->user_id != $this->user->user_id && strtotime("-5 minutes") > strtotime($player->last_move_time)) { $this->user->user_id = $player->user->user_id; $this->Talk->turn_expired($player); $this->processTurn($this->newPlayerMove(PlayerMove::DefaultMove)); } elseif ($Move == PlayerMove::JoinGame || $Move == PlayerMove::StartGame) { $this->Talk->game_status($this->Game); } } elseif (!$this->Game->isPlayerInGame($this->user->user_id)) { if ($Move == PlayerMove::JoinGame) { if (!$this->Bets->checkPlayerBet($this->Game, $this->user, $this->Game->Dealer->user, $this->bet)) { return false; } $this->bet = $this->Bets->bet; $this->free_bet = $this->Bets->free_bet; $player = $this->Game->addPlayer($this->user, $this->Bets, $this->bet, $this->free_bet); $this->Talk->join_game($player); } elseif ($Move == PlayerMove::StartGame) { if (!$this->Bets->checkPlayerBet($this->Game, $this->user, $this->Game->Dealer->user, $this->bet)) { return false; } $this->bet = $this->Bets->bet; $this->free_bet = $this->Bets->free_bet; $this->Game->addPlayer($this->user, $this->Bets, $this->bet, $this->free_bet); $this->Game->startGame(); $this->Game->saveGame(); $this->Talk->start_game($this->Game); if ($this->Game->areAllPlayersDone()) { $this->finaliseGame(); $this->Game->endGame(); } } } elseif ($this->Game->isPlayerInGame($this->user->user_id)) { if ($Move == PlayerMove::StartGame) { $this->Game->startGame(); $this->Game->saveGame(); $this->Talk->start_game($this->Game); if ($this->Game->areAllPlayersDone()) { $this->finaliseGame(); $this->Game->endGame(); } } elseif ($Move == PlayerMove::QuitGame) { $this->Game->endGame(); } elseif ($Move != PlayerMove::JoinGame) { $this->Talk->pre_game_status($this->Game); } } return true; }
public function start_game(\GroupBot\Brains\CardGame\Types\Game $game) { if ($game->getNumberOfPlayers() > 1) { $this->addMessage("The game begins with " . $game->getNumberOfPlayers() . " players."); } $this->addMessage("The dealer draws " . $game->Dealer->Hand->getHandString()); foreach ($game->Players as $Player) { $this->addMessage($Player->user_name . " has " . $Player->Hand->getHandString()); } if (!$game->areAllPlayersDone()) { $player = $game->getCurrentPlayer(); if ($game->getNumberOfPlayers() > 1) { $this->addMessage($player->user_name . " drew. Please place your move."); } else { $this->addMessage("You drew. Please place your move."); } if ($game->getNumberOfPlayers() == 1) { $this->keyboard = [["/surrender", "/war"]]; } $this->addMessage(emoji(0x1f449) . " You can /surrender or go to /war"); } }
/** * @param Game $Game */ public function start_game(\GroupBot\Brains\CardGame\Types\Game $Game) { if ($Game->getNumberOfPlayers() > 1) { $this->addMessage("The game begins with " . $Game->getNumberOfPlayers() . " players."); } $this->addMessage("The dealer draws " . $Game->Dealer->Hand->getHandString() . " (" . $Game->Dealer->Hand->Value . ")"); foreach ($Game->Players as $Player) { $this->addMessage("*" . $Player->user->getName() . "* has " . $Player->Hand->getHandString() . " (" . $Player->Hand->Value . ")"); } foreach ($Game->Players as $Player) { if ($Player->Hand->isBlackjack()) { $this->addMessage("*" . $Player->user->getName() . "* has blackjack! They stand."); $Player->no_blackjacks++; } } if (!$Game->areAllPlayersDone()) { if ($Game->getNumberOfPlayers() > 1) { $this->addMessage("*" . $Game->getCurrentPlayer()->user->getName() . "* goes first."); } else { $this->addMessage("Please place your move."); } $this->next_turn_options($Game); } }