-
Notifications
You must be signed in to change notification settings - Fork 0
/
copa.h
114 lines (95 loc) · 2.58 KB
/
copa.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
#ifndef __LABERINTO_H__
#define __LABERINTO_H__
#define TAMANIO 15
#define PARED '#'
#define VACIO ' '
#define TOTAL_AYUDAS 6
#define TOTAL_OBSTACULOS 3
typedef struct coordenada {
int fil;
int col;
} coordenada_t;
typedef struct obstaculo {
char codigo;
coordenada_t posicion;
int danio;
} obstaculo_t;
typedef struct ayuda {
char codigo;
coordenada_t posicion;
int vida_a_recuperar;
} ayuda_t;
typedef struct jugador {
char codigo;
int vida;
coordenada_t posicion;
int tope_ayudas;
ayuda_t ayudas[TOTAL_AYUDAS];
} jugador_t;
typedef struct rival {
char codigo;
int vida;
coordenada_t posicion;
char direccion;
int cantidad_pasos;
} rival_t;
typedef struct copa {
char codigo;
coordenada_t posicion;
} copa_t;
typedef struct juego{
char laberinto_original[TAMANIO][TAMANIO];
jugador_t jugador;
rival_t rival;
copa_t copa;
obstaculo_t obstaculos[TOTAL_OBSTACULOS];
int tope_obstaculos;
ayuda_t ayudas[TOTAL_AYUDAS];
int tope_ayudas;
} juego_t;
/*
* Inicializará todas las estructuras con los valores correspondientes,
* creará el laberinto, posicionará todos los elementos, etc.
*/
void inicializar_laberinto(juego_t* juego);
/*
* Determinará si el caracter ingresado es válido, esto es, es el caracter ‘a’ o
* ‘s’ o ‘d’ o ‘w’ y además el jugador puede moverse en esa dirección, o sea,
* hay pasillo.
*/
bool es_movimiento_valido(juego_t* juego, char tecla);
/*
* Moverá el jugador hacia la dirección especificada.
* Dicho movimiento es válido.
*/
void mover_jugador(jugador_t* jugador, char direccion);
/*
* Moverá el rival a la próxima posición.
*/
void mover_rival(juego_t* juego);
/*
* Actualizará el juego. Restará vida si el jugador está sobre un obstáculo
* o lo eliminará si cuenta con el hechizo, aprenderá hechizos y todo lo
* que pueda suceder luego de un turno.
*/
void actualizar_juego(juego_t* juego);
/*
* Devolverá el estado del juego, 1 ganado, 0 en curso, -1 perdido.
*/
int estado_juego(juego_t juego);
/*
* Devolverá una coordenada aleatoria dentro del rango TAMANIOxTAMANIO.
* No valida que dicha coordenada coincida con un pasillo ni que exista
* otro objeto en esa posición.
*/
coordenada_t posicion_aleatoria();
/*
* Actualizará la matriz mostrada al usuario, con los elementos presentes
* en el juego.
*/
void actualizar_laberinto(juego_t juego, char laberinto[TAMANIO][TAMANIO]);
/*
* Mostrará el laberinto por pantalla.
*/
void mostrar_laberinto(char laberinto[TAMANIO][TAMANIO]);
#endif /* __LABERINTO_H__ */