#include <stdio.h>
#include <math.h> // floor, rand
#include <stdlib.h> // srand (for rand init)
#include <time.h> // time (for srand based on time)
// returns random double between in [0, 1)
double random_double() {
static int initialized = 0;
if (!initialized) {
srand(time(NULL));
initialized = 1;
}
return (double) rand() / RAND_MAX;
}
// returns random int between min and max
int random_int(int min, int max) {
return floor(random_double() * (max - min + 1)) + min;
}
// returns character representation of suit (depends on OS)
const char* get_suit_char(int suit) {
static const char* suits[] = {
#ifdef _WIN32
"\3",
"\4",
"\5",
"\6"
#else
"\u2665",
"\u2666",
"\u2663",
"\u2660"
#endif
};
if (suit < 0) return suits[0];
if (suit > 13) return suits[3];
return suits[suit];
}
// returns character representation of rank (if has)
const char get_rank_char(int rank) {
switch (rank) {
case 1: return 'A';
case 11: return 'J';
case 12: return 'Q';
case 13: return 'K';
default: return ' ';
}
}
// prints card of given rank and suit
void print_card(int rank, int suit) {
if (rank < 1 || rank > 13) return;
const char* suit_char = get_suit_char(suit);
const char rank_char = get_rank_char(rank);
printf("-------\n");
printf("|%s |\n", suit_char);
if (rank_char != ' ') {
printf("| %c |\n", rank_char);
} else if (rank < 10) {
printf("| %i |\n", rank);
} else {
printf("| %i |\n", rank);
}
printf("| %s|\n", suit_char);
printf("-------\n");
}
int main() {
print_card(11, 0);
return 0;
}
/*
6. Моделирование игры «Blackjack»
Стандартная игра в «21».
Но общая колода состоит из N обычных карточных колод.
Обычно N>=8.
Структура карточной комбинации должна иметь операции:
· присваивания =
· сравнения ==, !=
· сравнения >=,>,<=,<
· вывода в консоль
· ввода из консоли
*Реализовать подсчёт вероятности выигрыша.
*/