Exemplo n.º 1
0
 /**
  * @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;
 }
Exemplo n.º 2
0
 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");
     }
 }
Exemplo n.º 3
0
 /**
  * @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);
     }
 }