-
Notifications
You must be signed in to change notification settings - Fork 0
/
feria.h
83 lines (70 loc) · 1.96 KB
/
feria.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
#ifndef __FERIA_H__
#define __FERIA_H__
#include <stdbool.h>
#define MAX_BOMBAS 20
#define MAX_HERRAMIENTAS 100
#define MAX_FAMILIARES 10
typedef struct coordenada {
int fil;
int col;
} coordenada_t;
typedef struct personaje {
int vida;
int energia;
bool camuflado;
coordenada_t posicion;
} personaje_t;
typedef struct bomba {
coordenada_t posicion;
int timer;
bool desactivada;
} bomba_t;
typedef struct herramienta {
coordenada_t posicion;
char tipo;
} herramienta_t;
typedef struct familiar {
coordenada_t posicion;
char sentido; // 'A', 'S', 'D' o 'W'
char inicial_nombre;
} familiar_t;
typedef struct juego {
personaje_t perry;
bomba_t bombas[MAX_BOMBAS];
int tope_bombas;
herramienta_t herramientas[MAX_HERRAMIENTAS];
int tope_herramientas;
familiar_t familiares[MAX_FAMILIARES];
int tope_familiares;
int movimientos;
coordenada_t* robots;
int cantidad_robots;
} juego_t;
/*
* Inicializará el juego, cargando toda la información inicial de Perry, los obstáculos, las herramientas y la familia Flynn.
*/
void inicializar_juego(juego_t* juego);
/*
* Realizará la acción recibida por parámetro.
* La acción recibida deberá ser válida.
* Solo se podrá mover a Perry y camuflarlo.
*/
void realizar_jugada(juego_t* juego, char accion);
/*
* Imprime el juego por pantalla
*/
void imprimir_terreno(juego_t juego);
/*
* El juego se dará por ganado cuando estén todas las bombas desactivadas.
* Si el personaje se queda sin vidas, el juego se dará por perdido.
* Devuelve:
* --> 1 si es ganado
* --> -1 si es perdido
* --> 0 si se sigue jugando
*
* En caso de ganado o perdido esta función liberará la memoria reservada a lo largo del juego.
* Queda como responsabilidad del usuario no llamar a esta función dos veces en caso de que se
* devuelva un valor distinto de 0 (para no hacer doble liberación).
*/
int estado_juego(juego_t juego);
#endif /* __FERIA_H__ */