Olá pessoal, no curso CIII: Recursos avançados da linguagem estou com um problema sério, da vídeo aula 2.3 para a aula 2.4 o código não acha o Mapa, "sem brincadeira" já refiz a aula 2.4 mais de 5 vezes para tentar achar onde estou errando, mais não achei, aparente mente meu código está idêntico ao do professor, alguém poderia me auxiliar? Segue meu código abaixo:
fogefoge.c
# include <stdio.h>
# include <stdlib.h>
# include "fogefoge.h"
# include "mapa.h"
MAPA m;
int i;
int acabou() {
return 0;
}
void move(char direcao){
int x;
int y;
// acha a posição do foge foge
int i;
for(i=0; i<m.linhas; i++){
int j;
for(j=0; j<m.colunas; j++){
if(m.matriz[i][j] == '@'){
x = i;
y = j;
break;
}
}
}
switch(direcao){
case 'a':
m.matriz [x][y-1] = '@';
break;
case 'w':
m.matriz [x-1][y] = '@';
break;
case 's':
m.matriz [x+1][y] = '@';
break;
case 'd':
m.matriz [x][y+1] = '@';
break;
}
m.matriz [x][y]='.';
}
int main() {
lemapa(&m);
do{
imprimemapa(&m);
char comando;
scanf(" %c", &comando);
move(comando);
} while (!acabou());
liberamapa(&m);
}
fogefoge.h
void move(char direcao);
int acabou();
mapa.h
struct mapa {
char** matriz;
int linhas;
int colunas;
};
typedef struct mapa MAPA;
void liberamapa(MAPA* m);
void lemapa(MAPA* m);
void alocamapa(MAPA* m);
void imprimemapa(MAPA* m);
mapa.c
# include <stdio.h>
# include <stdlib.h>
# include "mapa.h"
void liberamapa(MAPA* m){
for(i = 0; i<m->linhas; i++) {
free(m->matriz[i]);
}
free(m->matriz);
}
void alocamapa(MAPA* m){
//alocando mapa de forma dinamica//
m->matriz = malloc(sizeof(char*) * m->linhas);
for (i=0;i<m->linhas;i++) {
m->matriz[i] = malloc(sizeof(char) * (m->colunas + 1));
}
}
void lemapa(MAPA* m){
FILE* f; //obrir arquivo //
f = fopen("mapa.txt", "r");
if (f==0) {
printf("Erro na leitura do mapa\n");
exit(1);
}
fscanf(f, "%d %d", &(m->linhas), &(m->colunas)); //lendo Linhas e Colunas
alocamapa(m);
for(i=0;i<5;i++) {
fscanf(f, "%s", m->matriz[i]);
}
fclose(f);
}
void imprimemapa(MAPA* m){
for(i=0;i<5;i++) {
printf("%s\n", m->matriz[i]);
}
}