-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBARALHO.h
195 lines (165 loc) · 6.47 KB
/
BARALHO.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#if ! defined( BARALHO_ )
#define BARALHO_
/***************************************************************************
* $MCD Módulo de definição: BAR Baralho
*
* Arquivo gerado: BARALHO.h
* Letras identificadoras: BAR
*
* Projeto: INF 1301 Jogo de Truco
* Gestor:
* Autores: gsc, jvr, tgf
*
* $HA Histórico de evolução:
* Versão Autor Data Observações
* 2 gsc, jvr, tgf 31/abr/2018 criação da função CriarBaralho
* 1 gsc 19/abr/2018 início desenvolvimento
*
* $ED Descrição do módulo
* Cria um baralho (lista) de 40 (ou vamos fazer com 52?) cartas (sem os 8,
* 9, 10 e coringa) pegando elementos previamente embaralhados em um vetor;
* Cria as mãos dos jogadores (lista de 3 elementos, que são 3 cartas);
* Cria uma lista que armazena as cartas apostadas na mesa e a manilha;
* Destrói esse baralho.
***************************************************************************/
#include "LISTA.h"
#if defined( BARALHO_OWN )
#define BARALHO_EXT
#else
#define BARALHO_EXT extern
#endif
/**************** DECLARAÇÕES EXPORTADAS PELO MÓDULO **********************/
// Tipo referência para uma carta
typedef struct BAR_tagCarta * BAR_tppCarta ;
/***************************************************************************
* $TC Tipo de dados: BAR Condições de retorno
*
* $ED Descrição do tipo
* Condições de retorno das funções de carta.
***************************************************************************/
typedef enum { //não tenho certeza se algumas dessas condições de retorno devem existir
BAR_CondRetOK, // 0 Concluiu corretamente
BAR_CondRetNaoCriouBaralho, // 1 Não criou ponteiro pro tpLista
BAR_CondRetNaoCriouCarta, // 2 Não criou ponteiro pro tpCarta
BAR_CondRetNaoCriouMaoJogador, // 3 Não criou ponteiro pro tpLista
BAR_CondRetNaoCriouMesa, // 4 Não criou ponteiro pro tpLista
BAR_CondRetNaoDestruiu, // 5 Não liberou ponteiro
BAR_CondRetFaltouMemoria, // 6 Faltou memoria
BAR_CondRetParamIncorretos // 7 Parâmetros da função incorretos
} BAR_tpCondRet;
/***************************************************************************
* $TC Tipo de dados: BAR tpValorCarta
*
* $ED Descrição do tipo
* Domínio dos possíveis valores de uma carta.
***************************************************************************/
typedef enum {
_4, // 0
_5, // 1
_6, // 2
_7, // 3
_Q, // 4
_J, // 5
_K, // 6
_A, // 7
_2, // 8
_3, // 9
} BAR_tpValorCarta ;
/***************************************************************************
* $TC Tipo de dados: BAR tpNaipeCarta
*
* $ED Descrição do tipo
* Dominio dos possiveis naipes de uma carta.
***************************************************************************/
typedef enum {
Ouros, // 0
Espadas, // 1
Copas, // 2
Paus // 3
} BAR_tpNaipeCarta ;
/***************************************************************************
* $TC Tipo de dados: BAR tpCarta
*
* $ED Descrição do tipo
* Estrutura de uma carta, que tem um valor e um naipe.
***************************************************************************/
typedef struct BAR_tagCarta {
BAR_tpValorCarta valor ;
BAR_tpNaipeCarta naipe ;
} BAR_tpCarta;
/***************************************************************************
* $FC Função: BAR &Criar Baralho
*
* $ED Descrição da função
* Cria um baralho (tpLista) de 40 elementos (tpCarta) sem os 8, 9, 10
* e coringas.
*
* $EP Parâmetros
*
*
* $FV Valor retornado
* Se executar corretamente retorna o ponteiro para o início do baralho
* (ponteiro para o tipo lista). Este ponteiro será utilizado pelas
* funções que manipulem este baralho.
*
* Se ocorrer algum erro, por exemplo falta de memória ou dados errados,
* a função retornará NULL.
* Não será dada mais informação quanto ao problema ocorrido.
***************************************************************************/
LIS_tppLista BAR_CriarBaralho();
/***************************************************************************
* $FC Função: BAR &Criar Carta
*
* $ED Descrição da função
* Cria uma variável tipo carta com valores definidos.
*
* $EP Parâmetros
* valor - Um tipo ValorCarta
* naipe - Um tipo NaipeCarta
*
* $FV Valor retornado
* Se executar corretamente retorna o ponteiro para tpCarta.
* Este ponteiro será utilizado para adicionar carta em um vetor.
***************************************************************************/
BAR_tppCarta BAR_CriarCarta (BAR_tpValorCarta valor, BAR_tpNaipeCarta naipe);
/***************************************************************************
* $FC Função: BAR &Destruir Carta
*
* $ED Descrição da função
* Destrói uma carta.
***************************************************************************/
void BAR_DestruirCarta(void * pCarta);
/***************************************************************************
* $FC Função: BAR &Destruir Baralho
*
* $ED Descrição da função
* Destrói a lista baralho fornecida.
* O parâmetro ponteiro para a lista não é modificado.
* Se ocorrer algum erro durante a destruição, a lista resultará
* estruturalmente incorreta.
* OBS. não existe previsão para possíveis falhas de execução.
***************************************************************************/
void BAR_DestruirBaralho(void * pBaralho);
/***************************************************************************
* $FC Função: BAR &Obter Informações da Carta
*
* $ED Descrição da função
* Recebe uma carta e põe suas informações em dois ponteiros de tipo
* valor e naipe.
*
* $EP Parâmetros
* carta - Um ponteiro para tipo Carta
* *valor - Um ponteiro para tipo ValorCarta
* *naipe - Um ponteiro para tipo NaipeCarta
*
* $FV Valor Retornado
* BAR_CondRetOK
* BAR_CondRetParamIncorretos
*
***************************************************************************/
BAR_tpCondRet BAR_ObterInfoCarta(BAR_tppCarta carta,
BAR_tpValorCarta *valor, BAR_tpNaipeCarta *naipe);
#undef BARALHO_EXT
/**************** FIM DO MÓDULO DE DEFINIÇÃO: BAR Baralho *****************/
#else
#endif