void Shit::eatShit(Room *room, PlayerStar source) const { if(!source->isAlive()) return; LogMessage log; log.card_str = getEffectIdString(); log.from = source; if(getSuit() == Spade) { log.type = "$ShitLostHp"; room->sendLog(log); room->loseHp(source); return; } DamageStruct damage; damage.from = damage.to = source; damage.card = this; switch(getSuit()) { case Club: damage.nature = DamageStruct::Thunder; break; case Heart: damage.nature = DamageStruct::Fire; break; default: damage.nature = DamageStruct::Normal; } log.type = "$ShitDamage"; room->sendLog(log); room->damage(damage); }
void Shit::doDamage(ServerPlayer *victim) const{ if(victim->isDead()) return; LogMessage log; log.card_str = getEffectIdString(); log.from = victim; Room *room = victim->getRoom(); if(getSuit() == Spade){ log.type = "$ShitLostHp"; room->sendLog(log); room->loseHp(victim); return; } DamageStruct damage; damage.from = damage.to = victim; damage.card = this; switch(getSuit()){ case Club: damage.nature = DamageStruct::Thunder; break; case Heart: damage.nature = DamageStruct::Fire; break; default: damage.nature = DamageStruct::Normal; } log.type = "$ShitDamage"; room->sendLog(log); room->damage(damage); }
void Card::displayCard() { if (getFace().empty()) { cout << "\t" << getValue() << " of " << getSuit() << "\n"; } else { cout << "\t" << getFace () << " of " << getSuit() << "\n"; } }
// translate the card value to a string. // return the number of characters written to pRank, excluding // the terminating '\0'. int CCard::translateCard(char* pRank, char* pSuit) const { int numChars; if (getFaceUp()) { // card is visible so print rank and suit numChars = sprintf(pSuit, "%c", (char)getSuit()); pSuit[numChars] = '\0'; numChars = getCharRank(pRank, 3); pRank[numChars] = '\0'; } else { // card is not visible so display as ### strcpy(pSuit, "#"); numChars = 1; pSuit[numChars] = '\0'; strcpy(pRank, "##"); numChars = 2; pRank[numChars] = '\0'; } return(numChars); }
string Card::toString() { stringstream out; out << ", Value: " << getValue() << ", Suit: " << getSuit() << ", Bitmap: " << getBitmap() << endl; return out.str(); }
const Card *QiceCard::validate(const CardUseStruct *card_use) const{ Room *room = card_use->from->getRoom(); card_use->from->setFlags("QiceUsed"); room->playSkillEffect("qice"); Card *use_card = Sanguosha->cloneCard(user_string, getSuit(this->getSubcards()), getNumber(this->getSubcards())); use_card->setSkillName("qice"); foreach(int id, this->getSubcards()) use_card->addSubcard(id); return use_card; }
int main () { int q, w; char values, suits; q = drawCard(values); w= getSuit(suits); printf("%d of %s", q, w); return 0; }
void Shit::onMove(const CardMoveStruct &move) const{ ServerPlayer *from = (ServerPlayer*)move.from; if(from && move.from_place == Player::PlaceHand && from->getRoom()->getCurrent() == move.from && (move.to_place == Player::DiscardPile || move.to_place == Player::PlaceSpecial) && move.to == NULL && from->isAlive()){ LogMessage log; log.card_str = getEffectIdString(); log.from = from; Room *room = from->getRoom(); if(getSuit() == Spade){ log.type = "$ShitLostHp"; room->sendLog(log); room->loseHp(from); return; } DamageStruct damage; damage.from = damage.to = from; damage.card = this; switch(getSuit()){ case Club: damage.nature = DamageStruct::Thunder; break; case Heart: damage.nature = DamageStruct::Fire; break; default: damage.nature = DamageStruct::Normal; } log.type = "$ShitDamage"; room->sendLog(log); room->damage(damage); } }
int main () { srand(time(NULL)); cardv c1, c2, c3, c4, c5; int a, b, c, d, e, z, x, y, w, v; a = drawCard(); b = drawCard(); c = drawCard(); d = drawCard(); e = drawCard(); z = getSuit(); x = getSuit(); y = getSuit(); w = getSuit(); v = getSuit(); strcpy(c1.suit, z); printf("%d %d\n", a,z); printf("%d %d\n", b,x); printf("%d %d\n", c,y); printf("%d %d\n", d,w); printf("%d %d\n", e,v); return 0; }
const Card *QiceCard::validateInResposing(ServerPlayer *xunyou, bool *continuable) const{ *continuable = true; Room *room = xunyou->getRoom(); room->playSkillEffect("qice"); xunyou->setFlags("QiceUsed"); Card *use_card = Sanguosha->cloneCard(user_string, getSuit(this->getSubcards()), getNumber(this->getSubcards())); use_card->setSkillName("qice"); foreach(int id, this->getSubcards()) use_card->addSubcard(id); return use_card; }
void Shit::onMove(const CardMoveStruct &move) const{ ServerPlayer *from = move.from; if(from && move.from_place == Player::Hand && from->getRoom()->getCurrent() == move.from && (move.to_place == Player::DiscardedPile || move.to_place == Player::Special) && move.to == NULL && from->isAlive()){ DamageStruct damage; damage.from = damage.to = from; damage.card = this; switch(getSuit()){ case Club: damage.nature = DamageStruct::Thunder; break; case Heart: damage.nature = DamageStruct::Fire; break; default: damage.nature = DamageStruct::Normal; } from->getRoom()->damage(damage); } }
void getFinalHand(int cardRank[], int cardSuit[], int finalRank[], int finalSuit[], int ranksinHand[], int suitsinHand[]) { int i, j, cardDup; char suit, rank, ans; for(i=0; i < 5; i++) { suit = getSuit(cardSuit[i]); rank = getRank(cardRank[i]); printf("Do you want to keep card #%d: %c%c", i+1, rank, suit); printf("\nPlease answer (Y/N): "); scanf(" %c", ans); if (touppper(ans) == 'Y') { finalRank[i] = cardRank[i]; finalSuit[i] = cardSuit[i]; ranksinHand[finalRank[i]]++; suitsinHand[finalSuit[i]]++; continue; } else if (toupper(ans) == 'N') { cardDup = 0; do { cardDup = 0; finalRank[i] = (rand() % 13); finalSuit[i] = (rand() % 4); for (j=0; j < 5; j++) { if ((finalRank[i] == finalRank[j]) && (finalSuit[i] == finalSuit[j])) { cardDup = 1; } } } while (cardDup == 1); ranksinHand[finalRank[i]]++; suitsinHand[finalSuit[i]]++; } } }
void printHand(const uint8_t * const hand) { uint32_t i,c; for(i=0; i<HAND_SIZE; ++i) { switch(getSuit(hand[i])) { case HEART : c='H'; break; case DIAMOND: c='D'; break; case SPADE : c='S'; break; case CLUB : c='C'; break; default : c='X'; break; } printf("%c%u,",c,getRank(hand[i])); } printf("\n"); }
void BogdanT::Card::Print() { std::cout << getRank() << ';' << getSuit(); }
uint8_t isFlush (uint8_t * const hand) { uint32_t i,match; for(i=match=1; match && i<HAND_SIZE; ++i) match = getSuit(hand[i-1]) == getSuit(hand[i]); return match; }
bool QiceCard::targetFilter(const QList<const Player *> &targets, const Player *to_select, const Player *Self) const{ CardStar card = Sanguosha->cloneCard(user_string, getSuit(this->getSubcards()), getNumber(this->getSubcards())); return card && card->targetFilter(targets, to_select, Self) && !Self->isProhibited(to_select, card); }
GameCard::Color GameCard::getColor() const { return getSuit() < 2 ? SUIT_RED : SUIT_BLACK; }
string Card::prettyPrint() const{ return "suit: " + getSuit() + ", type: " + getType(); };
QString Card::getSuitString() const{ return Suit2String(getSuit()); }
main() { int bet; int bank = 100; int i; int cardRank[5]; int cardSuit[5]; int finalRank[5]; int finalSuit[5]; int ranksinHand[13]; int suitsinHand[4]; int winnings; time_t t; char suit, rank, stillPlay; // This function is called outside of the do-while loop because the // greeting only needs to be displayed once, // while everything else in main will run multiple times, // depending on how many times the user wants to play. printGreeting(); // Loop runs each time the user plays a new hand of draw poker do { bet = getBet(); srand(time(&t)); getFirstHand(cardRank, cardSuit); printf("Your five cards: \n"); for (i=0; i<5; i++) { suit = getSuit(cardSuit[i]); rank = getRank(cardRank[i]); printf("Card #%d: %c%c\n", i+1, rank, suit); } // These two arrays are used to figure out the value of // the player's hand. However, they must be zeroed out // in case the user plays multiple hands. for (i=0; i<4; i++) { suitsinHand[i] = 0; } for (i=0; i<13; i++) { ranksinHand[i] = 0; } getFinalHand(cardRank, cardSuit, finalRank, finalSuit, ranksinHand, suitsinHand); printf("Your final five cards: \n"); for (i = 0; i < 5; i++) { suit = getSuit(finalSuit[i]); rank = getRank(finalRank[i]); printf("Card #%d: %c%c\n", i+1, rank, suit); } winnings = analyzeHand(ranksinHand, suitsinHand); printf("You won %d!\n", bet*winnings); bank = bank - bet + (bet*winnings); printf("\nYour bank is now %d.\n", bank); printf("\nDo you want to play again? "); scanf(" %c", &stillPlay); } while (toupper(stillPlay) == 'Y'); return 0; }
bool Card::sameSuit(const Card& card) { return getSuit() == card.getSuit(); }