Progress on poker logic
This commit is contained in:
@ -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);
|
||||
}
|
Reference in New Issue
Block a user