-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcharacters.h
127 lines (109 loc) · 3.88 KB
/
characters.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
/**
* @file characters.h
* @author Luthiery C. Cavalcante
* @date 22/11/17
*
* @brief Arquivo contendo as funções e estruturas envolvendo os personagens do jogo.
*/
#ifndef _PERSONAGENSS_
#define _PERSONAGENSS_
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define STR_SIZE 50
/**
* @brief A principal estrutura do jogo, que guarda as informações de cada carta.
*/
typedef struct {
char* name; /**< o nome do personagem */
char* house; /**< a casa a qual o personagem pertence */
int agility; /**< o atributo agilidade do personagem */
int strength; /**< o atributo forca do personagem */
int intelligence; /**< o atributo inteligencia do personagem */
int health; /**< o atributo energia(vida) do personagem */
} Character;
/**
* @brief Enumeração dos atributos dos personagens.
*/
typedef enum attributes {
AGILITY = 1, /**< o atributo agilidade */
STRENGTH, /**< o atributo forca */
INTELLIGENCE, /**< o atributo inteligencia */
HEALTH /**< o atributo energia(vida) */
} Stat;
/**
* @brief É a estrutura que representa a carta do jogador (P1) ao longo do torneio.
*/
typedef struct {
Character* chr; /**< o personagem que o player controla*/
bool alive; /**< se o player esta vivo ou morto*/
Stat last_used; /**< o ultimo atributo usado pelo player em uma luta*/
} t_player;
/* includes aqui, por causa de dependencias com as estruturas */
#include "lists.h"
/**
* @brief Lê o arquivo dos personagens e os armazena numa lista linear duplamente encadeada.
*
* Depois de armazenar as informações de cada linha em variáveis
* locais, usa a função character_create para criar elementos do tipo Character
* enquanto os armazena na lista.
*
* @return A lista com todos os personagens extraídos.
*/
lList* aloca_personagens();
/**
* @brief Cria um elemento de tipo #Character contendo as informações obtidas em cada linha do arquivo.
*
* @param _name O nome do personagem
* @param _house A casa do personagem
* @param[in] _agility Sua agilidade
* @param[in] _strength Sua strength
* @param[in] _intelligence Sua inteligência
* @param[in] _health Sua saúde
*
* @return O endereço do elemento criado.
*/
Character* character_create(char* _name, char* _house, int _agility, int _strength, int _intelligence, int _health);
/**
* @brief Cria uma lista com 16 personagens sorteados da lista maior.
*
* @param lista_personagens A lista com todos os personagens, da qual serão extraídos 16.
* @return Uma lista com os 16 personagens a serem inseridos no torneio.
*/
lList* sorteia_personagens(lList* lista_personagens);
/**
* @brief mostra para o player as opções de personagens, e retorna a escolha dele
*
* Somente um atributo de cada personagem disponível (escolhido aleatóriamente) deve ser
* mostrado ao player.
*
* @param lista_players lista com os 16 presonagens possíveis
* @return Character* referencia ao personagem escolhido
*/
Character* escolhe_personagem(lList* lista_players);
/**
* @brief Pega o personagem escolhido pelo jogador e o define como Player1.
*
* Esse "registro", que nos diz ao longo do jogo quem é o usuário,
* nos fornece informações como o atributo usado na última luta
* e se ele está vivo.
*
* @param personagem O personagem escolhido;
* @return O endereço da estrutura criada.
*/
t_player* inicializa_player(Character* personagem);
/**
* @brief Libera memória referente a um elemento de tipo #Character.
*
* @param character O personagem a ser apagado
* @return Não há retorno.
*/
void character_free(Character* character);
/**
* @brief imprime na tela o player e seu oponente
*
* @param player endereço do player
* @param opponent endereço do oponente
*/
void print_player(t_player* player, Character* opponent);
#endif /* _PERSONAGENSS_ */