-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrabalho.c
136 lines (109 loc) · 3.59 KB
/
trabalho.c
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char **AlocaTabuleiro(int linhas, int colunas){
char **M;
int i, j;
M = (char **) malloc (linhas * sizeof(char *));
if(M == NULL){
printf("Erro, memoria insuficiente!");
exit (1);
}
for (i = 0; i < linhas; i++){
M[i] = (char *) malloc (colunas * sizeof(char));
if(M[i] == NULL){
printf("Erro, memoria insuficiente!");
exit (1);
}
}
return M;
}
char *AlocaVetor(int colunas){
char *v;
v = (char *) malloc (colunas * sizeof(char));
if(v == NULL){
printf("Erro, memoria insuficiente!");
exit(1);
}
return v;
}
int *AlocaVetorInt(int num){
int *v;
v = (int *) malloc (num * sizeof(int));
if(v == NULL){
printf("Erro, memoria insuficiente!");
exit(1);
}
return v;
}
void ImprimeTabuleiro(char **tabuleiro, int linhas, int colunas){
int i, j;
for(i = 0; i < linhas; i++){
for(j = 0; j < colunas; j++){
printf("%c", tabuleiro[i][j]);
}
printf("\n");
}
}
int *Limitador(int *limitadores, int indice_linha, int indice_coluna, int limitador, int linhas, int colunas){
// limitador = [cima, direita, baixo, esquerda]
limitadores[0] = limitador;
limitadores[1] = limitador;
limitadores[2] = limitador;
limitadores[3] = limitador;
do{
if(indice_coluna - limitador < 0){
limitadores[0] -= 1;
}
if(indice_linha + limitador >= linhas){
limitadores[1] -= 1;
}
if(indice_linha + limitador >= colunas){
limitadores[2] -= 1;
}
if(indice_linha - limitador < 0){
limitadores[3] -= 1;
}
}while(indice_coluna - limitador < 0 || indice_linha + limitador >= linhas || indice_linha + limitador >= colunas || indice_linha - limitador < 0);
return limitadores;
}
void queima(char **tabuleiro,int linhas, int colunas, int indice_Linha, int indice_coluna){
int i, j, *limitadores;
// preciso andar pela direita e pela esquerda. O fogo começa numa cela central, a partir dela, serão contadas
// oito celulas da direita e oito pra esquerda. Para cima e para baixo serao oito, mas na celula seguinte passa para
// sete células
// ATENÇÃO: teoricamente eu precisaria de um limitador, para nao ultrapassar o tamanho da matriz
limitadores = AlocaVetorInt(4);
limitadores = Limitador(limitadores, indice_Linha, indice_coluna, 8, linhas, colunas);
printf("Chuegei");
for(i = indice_Linha - limitadores[0] ; i < limitadores[2] ; i++){
for(j = indice_coluna - limitadores[3]; j < limitadores[1]; j++){
if(tabuleiro[indice_Linha - i][indice_coluna - j] == 'P'){
tabuleiro[indice_Linha - i][indice_coluna - j] = 'F';
}
}
}
}
void ataque_MagoFogo(char **tabuleiro, int linhas, int colunas){}
int main(){
int linhas, colunas, i, j;
char **tabuleiro, *Vetor;
scanf("%d %d", &linhas, &colunas);
tabuleiro = AlocaTabuleiro(linhas, colunas);
Vetor = AlocaVetor(colunas + 1);
for(i = 0; i < linhas; i++){
getchar();
fgets(Vetor, colunas + 1, stdin);
for(j = 0; j < colunas; j++){
tabuleiro[i][j] = Vetor[j];
}
}
// queima(tabuleiro, linhas, colunas, 2, 2);
// ImprimeTabuleiro(tabuleiro, linhas, colunas);
for(i = 0; i < linhas; i++){
for(j = 0; j < colunas; j++){
printf("%c", tabuleiro[i][j]);
}
printf("\n");
}
}