-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgamelib.h
172 lines (139 loc) · 3.31 KB
/
gamelib.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
#include <stdbool.h>
/****************************************************
* gamelib.h | Intestazione della libreria di gioco *
****************************************************/
/*
* TIPI DI DATO
*/
typedef unsigned char numero;
/*
* DICHIARAZIONE DELLE FUNZIONI DI GIOCO
*/
extern void impostaGioco();
extern void gioca();
extern void terminaGioco();
extern void crediti(bool min, bool classifica);
/*
* STRUTTURE
*/
typedef enum direzione {
init,
destra,
sinistra,
sopra,
sotto
} Direzione;
typedef enum esito {
successo,
errore
} Esito;
typedef enum sceltaMainMenu {
nessunaScelta,
menuImposta,
menuGioca,
menuTermina,
menuCrediti
} SceltaMainMenu;
typedef enum sceltaImpostaGioco {
nessunaImpostazione,
impGiocatori,
impMappa,
terminaImpostazioni
} SceltaImpostaGioco;
typedef enum sceltaMappa {
nessunaImp,
nuovaStanza,
rimuoviStanza,
stampaStanze,
generaRandom,
terminaImpostaMappa,
} SceltaMappa;
typedef enum tipoStanza{
ingresso,
corridoio,
scala,
salaBanchetto,
magazzino,
postoDiGuardia,
prigione,
armeria,
moschea,
torre,
bagni
} TipoStanza;
typedef enum tipoTesoro {
nessunTesoro,
verdeVeleno, // -1 pVita
bluGuarigione, // +1 pVita
rossoAumentaVita, // +1 pVitaMax e pVita = pVitaMax
spadaTagliente, // +1 dadiAttacco
scudo // +1 dadiDifesa
} TipoTesoro;
typedef enum tipoTrabocchetto {
nessunTrabocchetto,
tegola, // -1 pVita
lame, // -2 pVita
caduta, // -1 o -2 pVita (50% di probabilità ciascuna)
burrone // come caduta + turno perso
} TipoTrabocchetto;
typedef enum tipoNemico {
nessunNemico,
scheletro,
guardia,
Jaffar
} TipoNemico;
typedef struct nemico {
TipoNemico tipo;
numero pVita;
numero dadiAttacco;
numero dadiDifesa;
} Nemico;
typedef struct stanza {
TipoStanza tipo;
TipoTesoro tesoro;
bool tesoroRaccolto;
bool isSegreta;
bool isDefault;
TipoTrabocchetto trabocchetto;
struct stanza *stDestra;
struct stanza *stSinistra;
struct stanza *stSopra;
struct stanza *stSotto;
struct stanza *precedente;
Nemico *nemico;
} Stanza;
typedef enum classeGiocatore {
nessunaClasse,
principe,
doppleganger
} ClasseGiocatore;
typedef struct giocatore {
char nome[25];
ClasseGiocatore classe;
Stanza *posizione;
numero pVitaMax;
numero pVita;
numero dadiAttacco;
numero dadiDifesa;
numero scappa;
bool ignoraTrabocchetto;
bool avanzato;
bool turnoBloccato;
numero cercataSegreta;
bool inVita;
bool turnoPassato;
char azioniConcesse[10];
} Giocatore;
/*
* DICHIARAZIONE DELLE FUNZIONI DI BASE (non specifiche del gioco ma grafiche e di input/output)
*/
extern void attendiUtente();
extern void nuovaSchermata();
extern void stampaElencoScelte(bool numerico, const char* simboli, const char* elenco[]);
extern void logNota(const char* messaggio);
extern void logSpicy(const char* messaggio);
extern void logAvviso(const char* messaggio);
extern void logErrore(const char* messaggio);
extern void logSuccesso(const char* messaggio);
extern Esito numInput(numero *p, numero MIN_L, numero MAX_L);
extern Esito stringInput(char *p, numero MIN_L, numero MAX_L);