#include using namespace std; #include "Deck.h" void Deck::Shuffle(int r) { srand(r); for (int i = 0; i < 52; ++i) { int j = rand() % 52; swapByReference(cards[i], cards[j]); } } Deck::Deck() { cards = createDeck(); } void Deck::swapByReference(Card &a, Card &b) { Card t = b; b = a; a = t; } void Deck::swapByAddress(Card *a, Card *b) { Card t = *b; *b = *a; *a = t; } Card *Deck::createDeck() { Card *d = new Card[DECK_SIZE]; for (int j = 0; j < 4; j++) for (int i = 0; i < 52 / 4; i++) d[j * 13 + i] = Card(i + 1.0 + ((j + 1) / 10.0)); return d; } void Deck::sortCard() { bool f = false; do { f = false; for (int i = 0; i < 52 - 1; i++) { if (cards[i].getCard() > cards[i + 1].getCard()) { f = true; swapByReference(cards[i], cards[i + 1]); } } } while (f); } void Deck::distribute() { player1 = new Card[26]; player2 = new Card[26]; for (int i = 0; i < 26; i++) { player1[i] = cards[i]; player2[i] = cards[i + 26]; } } void Deck::printCard(int i) { cards[i].print(); } Card *Deck::getPlayer1() { return player1; } Card *Deck::getPlayer2() { return player2; } void Deck::show(Card *c) { for (int i = 0; i < 3; i++) c[i].print(); } void Deck::compare() { for (int i = 0; i < 3; i++) { int suit1 = (player1[i].getCard() - (int)player1[i].getCard()) * 10; int suit2 = (player2[i].getCard() - (int)player2[i].getCard()) * 10; int symbol1 = (int)player1[i].getCard(); int symbol2 = (int)player2[i].getCard(); int winner = 0; if (symbol1 == symbol2) { if (suit1 > suit2) winner = 1; else if (suit1 < suit2) winner = 2; else winner = 0; } else { if (symbol1 == 2) winner = 1; else if (symbol2 == 2) winner = 2; else if (symbol1 == 1) winner = 1; else if (symbol2 == 1) winner = 2; else if (symbol2 > symbol1) winner = 2; else winner = 1; } cout << "Game" << i << ":" << endl; cout << "player" << winner << " win" << endl; } }