#include <cassert>
#include <iostream>
#include <string>
#include "Card.h"
// add any necessary #include or using directives here
// rank and suit names -- do not remove these
constexpr const char* const Card::RANK_TWO;
constexpr const char* const Card::RANK_THREE;
constexpr const char* const Card::RANK_FOUR;
constexpr const char* const Card::RANK_FIVE;
constexpr const char* const Card::RANK_SIX;
constexpr const char* const Card::RANK_SEVEN;
constexpr const char* const Card::RANK_EIGHT;
constexpr const char* const Card::RANK_NINE;
constexpr const char* const Card::RANK_TEN;
constexpr const char* const Card::RANK_JACK;
constexpr const char* const Card::RANK_QUEEN;
constexpr const char* const Card::RANK_KING;
constexpr const char* const Card::RANK_ACE;
constexpr const char* const Card::SUIT_SPADES;
constexpr const char* const Card::SUIT_HEARTS;
constexpr const char* const Card::SUIT_CLUBS;
constexpr const char* const Card::SUIT_DIAMONDS;
Card::Card() {
rank = RANK_TWO;
suit = SUIT_SPADES;
}
//REQUIRES rank is one of "Two", "Three", "Four", "Five", "Six", "Seven",
// "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"
// suit is one of "Spades", "Hearts", "Clubs", "Diamonds"
//EFFECTS Initializes Card to specified rank and suit
Card::Card(const std::string& rank_in, const std::string& suit_in) {
rank = rank_in;
suit = suit_in;
}
//EFFECTS Returns the rank
std::string Card::get_rank() const {
return rank;
}
//EFFECTS Returns the suit. Does not consider trump.
std::string Card::get_suit() const {
return suit;
}
//REQUIRES trump is a valid suit
//EFFECTS Returns the suit
//HINT: the left bower is the trump suit!
std::string Card::get_suit(const std::string& trump) const {
if (rank == RANK_JACK && suit == Suit_next(trump)) {
return trump;
}
else
return suit;
}
This study source was downloaded by 100000850872992 from CourseHero.com on 02-10-2023 23:27:02 GMT -06:00
https://www.coursehero.com/file/89322978/Cardcpp/
, //EFFECTS Returns true if card is a face card (Jack, Queen, King or Ace)
bool Card::is_face() const {
if (rank == RANK_JACK) {
return true;
}
if (rank == RANK_QUEEN) {
return true;
}
if (rank == RANK_KING) {
return true;
}
if (rank == RANK_ACE) {
return true;
}
else
return false;
}
//REQUIRES trump is a valid suit
//EFFECTS Returns true if card is the Jack of the trump suit
bool Card::is_right_bower(const std::string& trump) const {
if (rank == RANK_JACK && suit == trump) {
return true;
}
return false;
}
//REQUIRES trump is a valid suit
//EFFECTS Returns true if card is the Jack of the next suit
bool Card::is_left_bower(const std::string& trump) const {
if (rank == RANK_JACK && suit == Suit_next(trump)) {
return true;
}
return false;
}
//REQUIRES trump is a valid suit
//EFFECTS Returns true if the card is a trump card. All cards of the trump
// suit are trump cards. The left bower is also a trump card.
bool Card::is_trump(const std::string& trump) const {
if (suit == trump || is_left_bower(trump)) {
return true;
}
return false;
}
int get_suit_names_by_weight(const Card card) {
std::string suit = card.get_suit();
for (int i = 0; i < NUM_SUITS; ++i) {
if (suit == SUIT_NAMES_BY_WEIGHT[i]) {
return i;
}
}
return false;
}
int get_rank_names_by_weight(const Card card) {
std::string rank = card.get_rank();
for (int i = 0; i < NUM_RANKS; ++i) {
if (rank == RANK_NAMES_BY_WEIGHT[i]) {
return i;
}
}
This study source was downloaded by 100000850872992 from CourseHero.com on 02-10-2023 23:27:02 GMT -06:00
https://www.coursehero.com/file/89322978/Cardcpp/