void kpok::drawClick() { int cardsToDraw[5]; int w; drawButton->setEnabled(false); if (status == 0) { wonLabel->hide(); cleanFoundCard(); stopBlinking(); stopWave(); setCash(getCash() - cashPerRound); for (w=0; w<5;w++) { cardsToDraw[w]=0; cardW[w]->setHeld(0); } for (w=0; w<highestCard;w++) done[w]=0; for (w=0;w<5;w++) { cards[w]=0; cardW[w]->heldLabel->hide(); cardW[w]->show(); cardW[w]->paintCard(cards[w],0,0); } drawCards(cardsToDraw); if (cardW[0]->queryHeld()) drawTimer->start(0, TRUE); else drawTimer->start(drawDelay, TRUE); } else { clickToHold->hide(); for (w=0; w<5;w++) cardsToDraw[w] = cardW[w]->queryHeld(); for (w=0;w<5;w++) { if (!cardsToDraw[w]) { cards[w]=0; cardW[w]->show(); cardW[w]->paintCard(cards[w],0,0); } } drawCards(cardsToDraw); if (cardW[0]->queryHeld()) drawTimer->start(0, TRUE); else drawTimer->start(drawDelay, TRUE); } }
void GameEngine::logic() { // exit game if (input_engine->pressing[EXIT]) { done = true; return; } // toggle fullscreen if (input_engine->pressing[FULLSCREEN_TOGGLE] && !input_engine->lock[FULLSCREEN_TOGGLE]) { input_engine->lock[FULLSCREEN_TOGGLE] = true; render_engine->toggleFullscreen(); } if (input_engine->pressing[NEW_GAME] && !input_engine->lock[NEW_GAME]) { input_engine->lock[NEW_GAME] = true; init(); } // game logic goes here // game over if (winner != -1) return; if (active_player == 0) { if (players[0].hand.empty()) drawCards(0); if (input_engine->pressing_mouse && !input_engine->lock_mouse) { input_engine->lock_mouse = true; checkClickFlinch(); checkClickReserve(); checkClickHand(); clearCompleted(); } } else { if (players[1].hand.empty()) drawCards(1); if (!(AIPlayFlinch() || AIPlayReserve())) AIPlayHand(); clearCompleted(); } }
void PlayerState::endTurn() { for (int cardIndex = 0; cardIndex < INSUPPLY; cardIndex++) { discard[cardIndex] += (inPlay[cardIndex] + hand[cardIndex]); inPlay[cardIndex] = 0; hand[cardIndex] = 0; } buys = 1; actions = 1; spentMoney = 0; drawCards(5); }
int council_room_func(int card, struct gameState *state, int handPos, int *bonus, int currentPlayer) { //+4 cards for player drawCards(currentPlayer, state, 4); int i; for(i = 0; i < state->numPlayers; ++i) if(i != currentPlayer) drawCard(i, state); state->numBuys++; discardCard(handPos, currentPlayer, state, 0); return 0; }
ResponseCode Server_ProtocolHandler::cmdMulligan(Command_Mulligan * /*cmd*/, CommandContainer *cont, Server_Game *game, Server_Player *player) { if (player->getSpectator()) return RespFunctionNotAllowed; if (!game->getGameStarted()) return RespGameNotStarted; Server_CardZone *hand = player->getZones().value("hand"); int number = (hand->cards.size() <= 1) ? player->getInitialCards() : hand->cards.size() - 1; Server_CardZone *deck = player->getZones().value("deck"); while (!hand->cards.isEmpty()) player->moveCard(cont, hand, QList<int>() << hand->cards.first()->getId(), deck, 0, 0, false, false); deck->shuffle(); cont->enqueueGameEventPrivate(new Event_Shuffle(player->getPlayerId()), game->getGameId()); cont->enqueueGameEventPublic(new Event_Shuffle(player->getPlayerId()), game->getGameId()); drawCards(game, player, cont, number); return RespOk; }
void GameEngine::init() { winner = -1; if (players.empty()) players.resize(2); for (unsigned i=0; i<players.size(); ++i) { players[i].hand.clear(); players[i].reserve_piles.clear(); players[i].reserve_piles.resize(5); while (!players[i].flinch_pile.empty()) { players[i].flinch_pile.pop(); } } active_player = 2; hand_selected = -1; played_piles.clear(); played_piles.resize(15); // create draw pile discard_piles.resize(15); for (unsigned i=0; i<15; ++i) { while (discard_piles[i].size() < 10) discard_piles[i].push(i+1); } createDrawPile(); // deal cards for (unsigned i=0; i<players.size(); ++i) { for (unsigned j=0; j<10; ++j) { players[i].flinch_pile.push(draw_pile.top()); draw_pile.pop(); } drawCards(i); } // check who goes first for (unsigned i=0; i<players.size(); ++i) { if (players[i].flinch_pile.top() == 1) { active_player = i; playFlinch(i); break; } } if (active_player == 2) { for (unsigned i=0; i<players.size(); ++i) { for (unsigned j=0; j<players[i].hand.size(); ++j) { if (players[i].hand[j] == 1) { active_player = i; playHand(i, j); break; } } if (active_player != 2) break; } } // neither players has a 1 if (active_player == 2) { for (unsigned i=0; i<5; ++i) { reserveHand(0, 0, i); reserveHand(1, 0, i); } active_player = 0; } }
void GUIPlayerView::draw(bool animating) { drawCards(animating); drawName(animating); }
void kpok::drawClick() { if (!drawButton->isEnabled()) return; // If this is the start of a new round, then deal new cards. if (m_game.getState() == StateStartRound) { drawButton->setEnabled(false); betBox->setEnabled(false); newRound(); } else if (m_game.getState() == StateBet1) { // bet emit showClickToHold(false); bet(); if (m_game.getState() == StateExchangeCards) {// should be set in bet() drawClick(); } } else if (m_game.getState() == StateRaise1) { // continue bet bet(); if (m_game.getState() == StateExchangeCards) {// should be set in bet() drawClick(); } } else if (m_game.getState() == StateExchangeCards) { // exchange cards drawButton->setEnabled(false); playerBox[0]->setHeldEnabled(false); betBox->setEnabled(false); bool skip[PokerHandSize]; for (int i = 0; i < PokerHandSize; i++) skip[i] = false; for (int i = 0; i < m_game.getNumActivePlayers(); i++) { if (!m_game.getActivePlayer(i)->getHuman()) m_game.getActivePlayer(i)->exchangeCards(skip); else { for (int i = 0; i < PokerHandSize; i++) { skip[i] = playerBox[0]->getHeld(i); if (!skip[i]) playerBox[0]->paintDeck(i); } } drawCards(m_game.getActivePlayer(i), skip); } if (playerBox[0]->getHeld(0)) drawTimer->start(0, TRUE); else drawTimer->start(drawDelay, TRUE); } else if (m_game.getState() == StateBet2) { // raise setBetButtonEnabled(false); bet(); if (m_game.getState() == StateSee)//should be set in bet()->if no one has raised drawClick(); } else if (m_game.getState() == StateRaise2) { bet(); if (m_game.getState() == StateSee) drawClick(); } else if (m_game.getState() == StateSee) winner(); }
void kpok::newRound() { bool onePlayerGame = false; m_game.newRound(); playerBox[0]->setHeldEnabled(false); if (m_numPlayers == 1) onePlayerGame = true; readOptions(); // maybe some options have changed so check em if (m_players[0].getCash() < m_game.getMinBet()) noMoney(); else { for (unsigned int i = 0; i < m_numPlayers; i++) { if (m_players[i].getCash() >= m_game.getMinBet()) m_game.activatePlayer(&m_players[i]); else removePlayerFromRound(&m_players[i]); } } if (m_game.getNumActivePlayers() == 1 && m_game.getType() != SinglePlayer) switchToOnePlayerRules(); m_blinkingBox = 0; wonLabel->hide(); stopBlinking(); stopWave(); for (int i = 0; i < m_game.getNumActivePlayers(); i++) m_game.getActivePlayer(i)->newRound(); // We are beginning a new round so every card is available. drawAllDecks(); playerBox[0]->showHelds(false); // Deal first cards of the round bool skip[PokerHandSize]; for (int i = 0; i < PokerHandSize; i++) skip[i] = false; for (int i = 0; i < m_game.getNumActivePlayers(); i++) drawCards(m_game.getActivePlayer(i), skip); if (m_game.getNumActivePlayers() > 1) { findHumanPlayer()->changeBet(m_game.getMinBet()); m_game.bet(m_game.getMinBet()); betBox->show(); } else { m_game.getActivePlayer(0)->changeBet(cashPerRound); betBox->hide(); } paintCash(); drawTimer->start(drawDelay, TRUE); }
ResponseCode Server_ProtocolHandler::cmdDrawCards(Command_DrawCards *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player) { return drawCards(game, player, cont, cmd->getNumber()); }