PokerUnicorn
Loading...
Searching...
No Matches
card.h
Go to the documentation of this file.
1/*
2 * PokerUnicorn Server
3 * This project uses test network, NO real coin or NO real money involved.
4 * Copyright (C) 2023, Oğuzhan Eroğlu <meowingcate@gmail.com> (https://meowingcat.io)
5 * Licensed under GPLv3 License
6 * See LICENSE for more info
7 */
8
9#pragma once
10
11#include <stdbool.h>
12
13static char CARD_KINDS[] = {'H', 'C', 'D', 'S'};
14static int CARDS[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
15static const char* CARD_SYMBOLS[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
16
29
30static int FIVES_INDEXES[] = {
31 0, 1, 2, 3, 4,
32 0, 1, 2, 3, 5,
33 0, 1, 2, 3, 6,
34 0, 1, 2, 4, 5,
35 0, 1, 2, 4, 6,
36 0, 1, 2, 5, 6,
37 0, 1, 3, 4, 5,
38 0, 1, 3, 4, 6,
39 0, 1, 3, 5, 6,
40 0, 1, 4, 5, 6,
41 0, 2, 3, 4, 5,
42 0, 2, 3, 4, 6,
43 0, 2, 3, 5, 6,
44 0, 2, 4, 5, 6,
45 0, 3, 4, 5, 6,
46 1, 2, 3, 4, 5,
47 1, 2, 3, 4, 6,
48 1, 2, 3, 5, 6,
49 1, 2, 4, 5, 6,
50 1, 3, 4, 5, 6,
51 2, 3, 4, 5, 6
52};
53
54typedef struct pkrsrv_card pkrsrv_card_t;
55typedef struct pkrsrv_card_check_result pkrsrv_card_check_result_t;
56typedef struct pkrsrv_card_score_result pkrsrv_card_score_result_t;
57
59 int index;
60 int kind;
61};
62
65 int rank;
66 pkrsrv_card_t cards[5];
67};
68
71 bool is_pair;
77 bool is_quad;
80 pkrsrv_card_check_result_t check_result;
81 pkrsrv_card_t cards[5];
82};
83
84pkrsrv_card_t pkrsrv_card_get_random(pkrsrv_card_t* history);
85
86void pkrsrv_card_sort_sevens(pkrsrv_card_t* sevens);
87
88void pkrsrv_card_get_fives(pkrsrv_card_t* sevens, pkrsrv_card_t* target);
89pkrsrv_card_score_result_t pkrsrv_card_get_best_fives_score(pkrsrv_card_t* sevens);
90pkrsrv_card_score_result_t pkrsrv_card_get_get_fives_score(pkrsrv_card_t* fives);
91
92pkrsrv_card_check_result_t pkrsrv_card_check_high_card(pkrsrv_card_t* fives);
93pkrsrv_card_check_result_t pkrsrv_card_check_pair(pkrsrv_card_t* fives);
94pkrsrv_card_check_result_t pkrsrv_card_check_two_pair(pkrsrv_card_t* fives);
95pkrsrv_card_check_result_t pkrsrv_card_check_three_kind(pkrsrv_card_t* fives);
96pkrsrv_card_check_result_t pkrsrv_card_check_straight(pkrsrv_card_t* fives);
97pkrsrv_card_check_result_t pkrsrv_card_check_flush(pkrsrv_card_t* fives);
98pkrsrv_card_check_result_t pkrsrv_card_check_full_house(pkrsrv_card_t* fives);
99pkrsrv_card_check_result_t pkrsrv_card_check_quad(pkrsrv_card_t* fives);
100pkrsrv_card_check_result_t pkrsrv_card_check_straight_flush(pkrsrv_card_t* fives);
101pkrsrv_card_check_result_t pkrsrv_card_check_royal_flush(pkrsrv_card_t* fives);
int index
Definition card.h:59
pkrsrv_card_check_result_t pkrsrv_card_check_quad(pkrsrv_card_t *fives)
pkrsrv_card_check_result_t check_result
Definition card.h:80
pkrsrv_card_check_result_t pkrsrv_card_check_three_kind(pkrsrv_card_t *fives)
pkrsrv_card_check_result_t pkrsrv_card_check_full_house(pkrsrv_card_t *fives)
void pkrsrv_card_get_fives(pkrsrv_card_t *sevens, pkrsrv_card_t *target)
int rank
Definition card.h:65
bool is_pair
Definition card.h:71
void pkrsrv_card_sort_sevens(pkrsrv_card_t *sevens)
bool is_two_pair
Definition card.h:72
pkrsrv_card_check_result_t pkrsrv_card_check_royal_flush(pkrsrv_card_t *fives)
pkrsrv_card_t pkrsrv_card_get_random(pkrsrv_card_t *history)
pkrsrv_card_hand_rank_t
Definition card.h:17
@ PKRSRV_CARD_HAND_RANK_ROYAL_FLUSH
Definition card.h:27
@ PKRSRV_CARD_HAND_RANK_STRAIGHT
Definition card.h:22
@ PKRSRV_CARD_HAND_RANK_TWO_PAIR
Definition card.h:20
@ PKRSRV_CARD_HAND_RANK_STRAIGHT_FLUSH
Definition card.h:26
@ PKRSRV_CARD_HAND_RANK_THREE_KIND
Definition card.h:21
@ PKRSRV_CARD_HAND_RANK_HIGH_CARD
Definition card.h:18
@ PKRSRV_CARD_HAND_RANK_FLUSH
Definition card.h:23
@ PKRSRV_CARD_HAND_RANK_FULL_HOUSE
Definition card.h:24
@ PKRSRV_CARD_HAND_RANK_QUAD
Definition card.h:25
@ PKRSRV_CARD_HAND_RANK_PAIR
Definition card.h:19
pkrsrv_card_check_result_t pkrsrv_card_check_straight(pkrsrv_card_t *fives)
bool is_straight
Definition card.h:74
pkrsrv_card_check_result_t pkrsrv_card_check_straight_flush(pkrsrv_card_t *fives)
bool is_full_house
Definition card.h:76
bool is_straight_flush
Definition card.h:78
pkrsrv_card_t cards[5]
Definition card.h:81
int kind
Definition card.h:60
pkrsrv_card_check_result_t pkrsrv_card_check_flush(pkrsrv_card_t *fives)
pkrsrv_card_t cards[5]
Definition card.h:66
bool is_high_card
Definition card.h:70
bool is_flush
Definition card.h:75
bool is_exists
Definition card.h:64
pkrsrv_card_score_result_t pkrsrv_card_get_get_fives_score(pkrsrv_card_t *fives)
pkrsrv_card_score_result_t pkrsrv_card_get_best_fives_score(pkrsrv_card_t *sevens)
pkrsrv_card_check_result_t pkrsrv_card_check_two_pair(pkrsrv_card_t *fives)
bool is_quad
Definition card.h:77
pkrsrv_card_check_result_t pkrsrv_card_check_high_card(pkrsrv_card_t *fives)
pkrsrv_card_check_result_t pkrsrv_card_check_pair(pkrsrv_card_t *fives)
bool is_royal_flush
Definition card.h:79
bool is_three_kind
Definition card.h:73
Definition card.h:58
Definition card.h:63
Definition card.h:69