Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <iostream>
- #include <array>
- #include <ctime>
- #include <cstdlib>
- enum class Result
- {
- PLAYER_WINS,
- PLAYER_LOSE,
- NO_ONE_WINS
- };
- enum class Dignity
- {
- TWO,
- THREE,
- FOUR,
- FIVE,
- SIX,
- SEVEN,
- EIGHT,
- NINE,
- TEN,
- JACK,
- LADY,
- KING,
- ACE,
- MAX_DIGNITY
- };
- enum class Suit
- {
- CLUBS,
- DIAMOND,
- HEARTS,
- PEAKS,
- MAX_SUIT
- };
- struct Card
- {
- Dignity dignity;
- Suit suit;
- };
- void printCard(const Card &card)
- {
- using namespace std;
- switch (card.dignity) {
- case Dignity::TWO:
- cout << '2';
- break;
- case Dignity::THREE:
- cout << '3';
- break;
- case Dignity::FOUR:
- cout << '4';
- break;
- case Dignity::FIVE:
- cout << '5';
- break;
- case Dignity::SIX:
- cout << '6';
- break;
- case Dignity::SEVEN:
- cout << '7';
- break;
- case Dignity::EIGHT:
- cout << '8';
- break;
- case Dignity::NINE:
- cout << '9';
- break;
- case Dignity::TEN:
- cout << "10";
- break;
- case Dignity::JACK:
- cout << 'J';
- break;
- case Dignity::LADY:
- cout << 'L';
- break;
- case Dignity::KING:
- cout << 'K';
- break;
- case Dignity::ACE:
- cout << 'A';
- break;
- case Dignity::MAX_DIGNITY:
- break;
- }
- switch (card.suit) {
- case Suit::CLUBS:
- cout << 'C';
- break;
- case Suit::DIAMOND:
- cout << 'D';
- break;
- case Suit::HEARTS:
- cout << 'H';
- break;
- case Suit::PEAKS:
- cout << 'P';
- break;
- case Suit::MAX_SUIT:
- break;
- }
- cout << endl;
- }
- void printDeck(const std::array<Card, 52> &deck)
- {
- short printedCardInRow { 0 };
- for (auto card : deck) {
- if (printedCardInRow == 13) {
- std::cout << '\n';
- }
- printCard(card);
- std::cout << ' ';
- ++printedCardInRow;
- }
- }
- void swapCard(Card &cardOne, Card &cardTwo)
- {
- Card tmpCard = cardTwo;
- cardTwo = cardOne;
- cardOne = tmpCard;
- }
- static int getRandomNumber(int min, int max)
- {
- static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0);
- return static_cast<int>(rand() * fraction * (max - min + 1) + min);
- }
- void shuffleDeck(std::array<Card, 52> &deck)
- {
- for (int i = 0; i < static_cast<int>(deck.size()); ++i) {
- int randomCardIndex = getRandomNumber(1, 52);
- swapCard(deck[static_cast<unsigned long long>(i)], deck[static_cast<unsigned long long>(randomCardIndex)]);
- }
- }
- int getCardValue(Card &card)
- {
- switch (card.dignity) {
- case Dignity::TWO:
- return 2;
- case Dignity::THREE:
- return 3;
- case Dignity::FOUR:
- return 4;
- case Dignity::FIVE:
- return 5;
- case Dignity::SIX:
- return 6;
- case Dignity::SEVEN:
- return 7;
- case Dignity::EIGHT:
- return 8;
- case Dignity::NINE:
- return 9;
- case Dignity::TEN:
- case Dignity::JACK:
- case Dignity::LADY:
- case Dignity::KING:
- return 10;
- case Dignity::ACE:
- return 11;
- default:
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement