protected function doRoll() { $channel = $this->event->getRequest()->getSource(); $this->current_game->roll(); $roll = $this->current_game->getCurrentPlayer()->getRoll(); $this->event->addResponse(Response::notice($channel, '@' . $this->current_game->getCurrentPlayer()->getName() . ' rolled: ' . join(', ', $roll) . '.')); if (count($roll) == 1) { $this->event->addResponse(Response::notice($channel, 'There\'s only one die; keeping it.')); $this->doKeep(array($roll[0])); } else { $message = '@' . $this->current_game->getCurrentPlayer()->getName() . ', What would you like to keep? '; if (count($this->current_game->getCurrentPlayer()->getKept()) == 0) { $message .= 'For example, type \'@oftbot keep 666614\'.'; } else { $message .= 'You\'ve already kept ' . join(', ', $this->current_game->getCurrentPlayer()->getKept()) . ', '; if ($this->current_game->getCurrentPlayer()->calculateScoreFromKept() > 0) { $message .= 'and your score is ' . $this->current_game->getCurrentPlayer()->calculateScoreFromKept() . '.'; } else { $message .= 'and you have not yet qualified.'; } } $this->event->addResponse(Response::notice($channel, $message)); } }
/** * @covers \OftBot\Game::roll * @covers \OftBot\Game::keep */ public function testFullTurn() { $game = new Game('creating_player_name'); $game->start(); $player = $game->getCurrentPlayer(); // First roll $game->roll(); $roll = $player->getRoll(); $this->assertCount(6, $roll); $game->keep(array($roll[0], $roll[1])); // Keep the first two die rolled $kept = $player->getKept(); $this->assertCount(2, $kept); $this->assertFalse($player->turnIsComplete()); $this->assertSame(null, $player->getScore()); // Second roll $game->roll(); $roll = $player->getRoll(); $this->assertCount(4, $roll); $game->keep(array($roll[0])); // Keep the first die rolled $kept = $player->getKept(); $this->assertCount(3, $kept); $this->assertFalse($player->turnIsComplete()); $this->assertSame(null, $player->getScore()); // third roll $game->roll(); $roll = $player->getRoll(); $this->assertCount(3, $roll); $game->keep(array($roll[0], $roll[1], $roll[2])); // Keep all 3 die rolled $kept = $player->getKept(); $this->assertCount(6, $kept); $this->assertTrue($player->turnIsComplete()); $this->assertNotSame(null, $player->getScore()); }