#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char** mapa;
int linhas;
int colunas;
FILE* f;
void tamanhodomapa()
{
f = fopen("mapa.txt", "r");
if(f == 0)
{
printf("erro na abertura do arquivo\n");
exit(1);
}
fscanf(f, "%d %d", &linhas, &colunas);
printf("%d-%d\n", linhas, colunas);
}
void alocamapa()
{
tamanhodomapa();
mapa = malloc(sizeof(char*) * linhas); //alocar memoria para o mapa
for(int i = 0; i < linhas; i++)
{
mapa[i] = malloc(sizeof(char) * colunas + 1); //alocar memoria para as colunas
}
for(int i = 0; i < linhas; i++)
{
fscanf(f, "%s", mapa[i]); //ler todas as linhas e botar em mapa[i]
}
fclose(f);
}
void liberamapa()
{
for(int j = 0; j < linhas; j++)
{
free(mapa[j]);
}
free(mapa);
}
void imprimimapa()
{
for(int j = 0; j < linhas; j++)
{
printf("%s\n", mapa[j]); //imprimir as linhas do mapa
}
}
void personagem(char direcao)
{
int x;
int y;
for(int i = 0; i < linhas; i++)
{
for(int j; j < colunas; j++)
{
if(mapa[i][j] == '@')
{
x = i;
y = j;
break;
}
}
}
switch(direcao)
{
case 'a':
mapa[x][y-1] = '@';
break;
case 's':
mapa[x-1][y] = '@';
break;
case 'd':
mapa[x][y+1] = '@';
break;
case 'w':
mapa[x+1][y] = '@';
break;
}
mapa[x][y] = '.';
}
int main()
{
int acabou = 0;
alocamapa();
do
{
imprimimapa();
char comando;
scanf(" %c", &comando);
personagem(comando);
}while(!acabou);
liberamapa();
}