Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
void Card::displayCard()
{
	if (getFace().empty())
	{
		cout << "\t" << getValue() << " of " << getSuit() << "\n";
	}
	else
	{
		cout << "\t" << getFace () << " of " << getSuit() << "\n";
	}
}
Esempio n. 4
0
// 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();
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
int main () {
int q, w;
char values, suits;
q = drawCard(values);
w= getSuit(suits);

printf("%d of %s", q, w);

return 0;
}
Esempio n. 8
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);
    }
}
Esempio n. 9
0
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;

}
Esempio n. 10
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;
}
Esempio n. 11
0
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);
    }
}
Esempio n. 12
0
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]]++;
        }
    }
}
Esempio n. 13
0
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");
}
Esempio n. 14
0
void BogdanT::Card::Print()
{
	std::cout << getRank() << ';' << getSuit();
}
Esempio n. 15
0
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;
}
Esempio n. 16
0
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);
}
Esempio n. 17
0
GameCard::Color GameCard::getColor() const
{
    return getSuit() < 2 ? SUIT_RED : SUIT_BLACK;
}
Esempio n. 18
0
string Card::prettyPrint() const{
  return "suit: " + getSuit() + ", type: " + getType();
};
Esempio n. 19
0
QString Card::getSuitString() const{
    return Suit2String(getSuit());
}
Esempio n. 20
0
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;
}
Esempio n. 21
0
bool Card::sameSuit(const Card& card) {
    return getSuit() == card.getSuit();
}