diff --git a/src/baralho.h b/src/baralho.h new file mode 100644 index 0000000000000000000000000000000000000000..a3276219c85ff8114e0987dca4e8e9add0e5e88d --- /dev/null +++ b/src/baralho.h @@ -0,0 +1,61 @@ +#ifndef H_BARALHO_H +#define H_BARALHO_H + +#include <stdio.h> +#include <stdlib.h> +#include <strings.h> +#include <time.h> + +#define NAIPES 4 +#define CARTAS 13 +#define MAGIC_LEN 4 /* 2 letras, 1 '\n', 1 '\0' */ +#define PPMEXT "ppm" + +static char vals[13] = {'A', '2', '3', '4', '5', '6', '7', '8', '9', 'D', 'J', 'Q', 'K'}; +static char naipes[4] = {'P', 'C', 'E', 'O'}; +int load; + +FILE *ENTRADA; + +typedef struct { + unsigned char R, G, B; +} Pixel; + +typedef struct { + char valor, naipe; + /* É necessário alocar o espaço da imagem. + img é um ponteiro para um vetor que guarda os dados + da carta (pixels), com exceção do cabeçalho. */ + Pixel *img; +} Carta; + +typedef struct { + char magic[MAGIC_LEN]; + int w, h, maxval; +} Cabecalho; + +/* Baralho é do tipo Carta**, o baralho é uma matriz de cartas. + É a imagem original com "recortes" nas cartas. */ +typedef Carta **Baralho; + +/* Enquanto Baralho é a imagem original "recortada", Monte são as + as cartas propriamente ditas empilhadas, porem sem a imagem. */ +typedef char **Monte; + +typedef struct tm tm; + +Cabecalho cabeca; + +Carta NADA; + +Baralho init (char *imgFile, int cw, int ch, char primCarta, char *ordNaipes); +Baralho geraBaralho (Baralho cartas); +Carta getCarta (char naipe, char valor, Baralho cartas); +void geraCarta (char naipe, char valor, Baralho cartas); +Monte criaMonte (int n); +Carta tiraCarta (Monte deck, Baralho bar); +Monte colocaCarta (int n, Carta c, Monte deck); +void troca (Monte deck, int i, int ir); +Monte embaralha (Monte deck); + +#endif \ No newline at end of file