monaxys
2 years ago
7 changed files with 130 additions and 4 deletions
@ -1,2 +1,3 @@
@@ -1,2 +1,3 @@
|
||||
CC=cc
|
||||
CFLAGS=-ansi -pedantic -Wall -g
|
||||
CFLAGS=-std=c99 -pedantic -Wall -g
|
||||
LDFLAGS =
|
||||
|
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
#ifndef CARD_H_ENTRY |
||||
#define CARD_H_ENTRY |
||||
//Описание структуры карты
|
||||
|
||||
enum suits |
||||
{ |
||||
hearts = 0, |
||||
spades, |
||||
clubs, |
||||
diamonds |
||||
}; |
||||
enum rangs |
||||
{ |
||||
two = 0, |
||||
three, |
||||
four, |
||||
five, |
||||
six, |
||||
seven, |
||||
eight, |
||||
nine, |
||||
ten, |
||||
jack, |
||||
queen, |
||||
king, |
||||
ace |
||||
}; |
||||
struct card |
||||
{ |
||||
enum rangs rang; |
||||
enum suits suit; |
||||
}; |
||||
|
||||
#endif /* CARD_H_ENTRY */ |
@ -0,0 +1,59 @@
@@ -0,0 +1,59 @@
|
||||
#include "dealer.h" |
||||
#include <stdint.h> |
||||
#include <limits.h> |
||||
#include <fcntl.h> |
||||
#include <unistd.h> |
||||
#include <stdlib.h> |
||||
#define CARD_AMOUNT_SUIT 13 |
||||
#define SUIT_AMOUNT 4 |
||||
#define CARD_AMOUNT_DECK CARD_AMOUNT_SUIT * SUIT_AMOUNT |
||||
|
||||
int fill_deck(struct card *deck) |
||||
{ |
||||
puts("заполняем колоду..."); |
||||
for(int i = 0; i < SUIT_AMOUNT; i++) |
||||
{ |
||||
for (int k = 0; k < CARD_AMOUNT_SUIT; k++) |
||||
{ |
||||
deck[k + i * CARD_AMOUNT_SUIT].rang = k; |
||||
deck[k + i * CARD_AMOUNT_SUIT].suit = i; |
||||
} |
||||
} |
||||
return 0; |
||||
} |
||||
static uint8_t get_num() |
||||
{ |
||||
int fd = open("/dev/urandom", O_RDONLY); |
||||
if (fd < 0) { |
||||
return -1; |
||||
} |
||||
uint8_t c; |
||||
do{ |
||||
read(fd, &c, 1); |
||||
if(c == EOF){ |
||||
close(fd); |
||||
return -2; |
||||
} |
||||
}while(c >= (UCHAR_MAX + 1) / CARD_AMOUNT_DECK * CARD_AMOUNT_DECK); |
||||
close(fd); |
||||
return abs(c % CARD_AMOUNT_DECK); |
||||
} |
||||
|
||||
int shuffle_deck(struct card *deck) |
||||
{ |
||||
for(int i = 0, k = 0; i < 1000; i++, k++){ |
||||
if(k >= CARD_AMOUNT_DECK){ |
||||
k = 0; |
||||
} |
||||
uint8_t chg_card = get_num(); |
||||
if (chg_card >= CARD_AMOUNT_DECK || chg_card < 0){ |
||||
return 1; |
||||
} |
||||
struct card tmp = deck[k]; |
||||
deck[k] = deck[chg_card]; |
||||
deck[chg_card] = tmp; |
||||
|
||||
}
|
||||
return 0; |
||||
} |
||||
|
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
#ifndef DEALER_H_ENTRY |
||||
#define DEALER_H_ENTRY |
||||
#include <stdio.h> |
||||
#include "card.h" |
||||
|
||||
struct card *pick_card(); |
||||
int fill_deck(struct card *deck); |
||||
|
||||
int shuffle_deck(struct card *deck); |
||||
#endif /* DEALER_H_ENTRY */ |
@ -1,4 +1,16 @@
@@ -1,4 +1,16 @@
|
||||
#include <stdio.h> |
||||
#include "dealer.h" |
||||
#define PLAERSCNT 4 |
||||
|
||||
int money, bet; |
||||
char players[PLAERSCNT] = {1, 2, 3, 4}; |
||||
|
||||
int main(int argc, char **argv) |
||||
{ |
||||
struct card deck[52]; |
||||
fill_deck(deck); |
||||
if(shuffle_deck(deck)){ |
||||
return 2; |
||||
} |
||||
return 0; |
||||
} |
||||
|
Loading…
Reference in new issue