#include <stdio.h>
#include <stdlib.h>
#include "foge_fogeBiblioteca.h"//biblioteca local se inclui com aspas duplas
//variaveis de escopo aberto ou variaveis globais .
char** mapa;
int linhas;
int colunas;
int i,j;
void liberaMapa();
void lemapa();
void alocamapa();
void imprimeMapa();
int acabou();
void move(char direcao);
int main (){
/*Alocacao estatica*/
lemapa();
do
{
imprimeMapa();
char comando;
scanf(" %c",&comando);
move(comando);
} while (!acabou());
liberaMapa();
}
void liberaMapa(){
for ( i = 0; i < linhas; i++)
{
free(mapa[i]);
}
free(mapa);
}
void alocamapa(){
mapa = malloc(sizeof(char*) * linhas);
for ( i = 0; i < linhas; i++)
{
mapa[i] = malloc( sizeof( char ) * ( colunas + 1 ) );
}
};
void lemapa(){
FILE* f;
f = fopen("mapa.txt","r");
if(f == 0){
printf("Erro ao carregar o mapa");
exit(1);
}
fscanf(f, "%d %d" ,&linhas,&colunas);//recebe o valor de linhas e colunas do arquivo mapa.txt e armazena nas variaveis correspondentes
printf("Linhas %d ,Colunas %d\n",linhas,colunas);
///////////////////////////////-Alocaçao dinamica-/////////////////////////////////
alocamapa();
///////////////////////////////////////////////////////////////////////////////////
for ( i = 0; i < 4; i++)
{
fscanf(f, "%s",mapa[i]);
}
fclose(f);
}
void imprimeMapa(){
for ( i = 0; i < 4; i++)
{
printf(" %s\n",mapa[i]);
}
}
int acabou(){
return 0;
}
void move(char direcao){
int x;
int y;
for ( i = 0; i < linhas; i++)
{
for ( j = 0; j < colunas; j++)
{
if (mapa[i][j] == '@')
{
x = i;
y = j;
break;
}
}
}
switch (direcao)
{
case 'a':
mapa[x][y-1] = '@';
break;
case 'w':
mapa[x-1][y] = '@';
break;
case 's':
mapa[x+1][y] = '@';
break;
case 'd':
mapa[x][y+1] = '@';
break;
}
}