Progress on poker logic

This commit is contained in:
2022-11-20 22:18:50 -08:00
parent 4eeecced2f
commit 5762f12841
31 changed files with 1779 additions and 222 deletions

View File

@ -6,54 +6,71 @@
#pragma once
#include "dawnlibs.hpp"
enum CardSuit {
CLUBS = 0,
DIAMONDS = 1,
HEARTS = 2,
SPADES = 3
};
namespace Dawn {
enum CardSuit {
CARD_CLUBS = 0,
CARD_DIAMONDS = 1,
CARD_HEARTS = 2,
CARD_SPADES = 3
};
enum CardValue {
TWO = 0,
THREE = 1,
FOUR = 2,
FIVE = 3,
SIX = 4,
SEVEN = 5,
EIGHT = 6,
NINE = 7,
TEN = 8,
JACK = 9,
QUEEN = 10,
KING = 11,
ACE = 12
};
enum CardValue {
CARD_TWO = 0,
CARD_THREE = 1,
CARD_FOUR = 2,
CARD_FIVE = 3,
CARD_SIX = 4,
CARD_SEVEN = 5,
CARD_EIGHT = 6,
CARD_NINE = 7,
CARD_TEN = 8,
CARD_JACK = 9,
CARD_QUEEN = 10,
CARD_KING = 11,
CARD_ACE = 12
};
/** Count of cards in each suit */
#define CARD_COUNT_PER_SUIT 13
/** Count of cards in each suit */
#define CARD_COUNT_PER_SUIT 13
/** Count of suits */
#define CARD_SUIT_COUNT 4
/** Count of suits */
#define CARD_SUIT_COUNT 4
/** Standard Card Deck Size */
#define CARD_DECK_SIZE CARD_COUNT_PER_SUIT*CARD_SUIT_COUNT
/** Standard Card Deck Size */
#define CARD_DECK_SIZE CARD_COUNT_PER_SUIT*CARD_SUIT_COUNT
struct Card {
uint8_t cardValue;
struct Card {
public:
uint8_t cardValue;
Card(CardSuit suit, CardValue num) :
cardValue((suit * CARD_COUNT_PER_SUIT) + num)
{
}
static void fillDeck(std::vector<struct Card> *deck);
static void shuffle(std::vector<struct Card> *deck);
Card(uint8_t cv) : cardValue(cv) {
}
/**
* Sort a hand of cards. Cards are ordered in descending weight, aces are
* high. Cards will be grouped by their suits, e.g. CARD_CLUBS_TWO will
* appear before CARD_DIAMONDS_KING.
*
* @param deck Hand of cards to sort.
*/
static void sort(std::vector<struct Card> *deck);
CardValue getValue() {
return (CardValue)(cardValue % CARD_COUNT_PER_SUIT);
}
Card(CardSuit suit, CardValue num) :
cardValue((suit * CARD_COUNT_PER_SUIT) + num)
{
}
CardSuit getSuit() {
return (CardSuit)(cardValue / CARD_COUNT_PER_SUIT);
}
};
Card(uint8_t cv) : cardValue(cv) {
}
CardValue getValue() {
return (CardValue)(cardValue % CARD_COUNT_PER_SUIT);
}
CardSuit getSuit() {
return (CardSuit)(cardValue / CARD_COUNT_PER_SUIT);
}
};
bool_t cardSorter(struct Card left, struct Card right);
}