43 lines
937 B
C++
43 lines
937 B
C++
//
|
|
// Created by alex on 7/14/25.
|
|
//
|
|
|
|
#ifndef CARD_H
|
|
#define CARD_H
|
|
#include <array>
|
|
#include <iostream>
|
|
|
|
enum class Suit {
|
|
Clubs, Diamonds, Hearts, Spades
|
|
};
|
|
enum class Rank {
|
|
Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine,
|
|
Ten, Jack, Queen, King
|
|
};
|
|
|
|
|
|
class Card {
|
|
public:
|
|
Card(Suit s, Rank r);
|
|
// Getters
|
|
Suit getSuit() const;
|
|
Rank getRank() const;
|
|
int getValue() const;
|
|
|
|
friend std::ostream& operator<<(std::ostream& os, const Card& card);
|
|
|
|
// These arrays exist to store all types of cards
|
|
static std::array<Suit, 4> constexpr Suits = {Suit::Clubs, Suit::Diamonds, Suit::Hearts, Suit::Spades};
|
|
static std::array<Rank, 13> constexpr Ranks = {Rank::Ace, Rank::Two, Rank::Three, Rank::Four, Rank::Five, Rank::Six,
|
|
Rank::Seven, Rank::Eight, Rank::Nine, Rank::Ten, Rank::Jack, Rank::Queen, Rank::King};
|
|
|
|
private:
|
|
Suit suit;
|
|
Rank rank;
|
|
int value;
|
|
};
|
|
|
|
|
|
|
|
#endif //CARD_H
|