Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se
0
respostas

Codigo foge foge até aki.

fogefoge.c

include <stdio.h>

include <stdlib.h>

include "fogefoge.h"

include "mapa.h"

MAPA m;

POSICAO heroi;

//------------------------------------------------------------------------------------------

int acabou(){ return 0; }

//-------------------------------------------------------------------------------------------

void move(char direcao){

m.matriz[heroi.x] [heroi.y] = '.';

switch(direcao){ case 'a': m.matriz[heroi.x][heroi.y-1] = '@'; heroi.y--; break;

case 'w': m.matriz[heroi.x-1][heroi.y] = '@'; heroi.x--; break;

case 's': m.matriz[heroi.x+1][heroi.y] = '@'; heroi.x++; break;

case 'd': m.matriz[heroi.x][heroi.y+1] = '@'; heroi.y++; break;

}

}

//------------------------------------------------------------------------------------------

int main(){

lemapa(&m); encontramapa(&m,&heroi,'@');

do{

imprimemapa(&m);

char comando; scanf(" %c",&comando); move(comando);

}while(!acabou());

liberamapa(&m); }


mapa.h

struct mapa{ char** matriz; int linhas; int colunas;}; typedef struct mapa MAPA;

struct posicao{ int x; int y; }; typedef struct posicao POSICAO;

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(int i =0; ilinhas; i++){ free(m->matriz[i]); }

free(m->matriz); }

//--------------------------------------------------------------

void lemapa(MAPA* m){ FILE* f; f= fopen("mapa.txt","r"); if (!f){ printf("Desculpe, banco de dados não acessivel\n"); exit(1); }

fscanf(f,"%d %d", &(m->linhas), &(m->colunas));

alocamapa(m);

for(int i = 0; i < 5; i++) { fscanf(f, "%s", m->matriz[i]); } fclose(f); }

//-----------------------------------------------------------------------------------------

void alocamapa(MAPA* m){ m->matriz = malloc(sizeof(char)*m->linhas); for(int i= 0; ilinhas; i++ ){ m->matriz[i] = malloc(sizeof(char)(m->colunas+1)); } }

//---------------------------------------------------------------------------------------

void imprimemapa(MAPA* m){

for(int i = 0; i < 5; i++) { printf("%s\n", m->matriz[i]); }

}

//-------------------------------------------------------------------------------------------

void encontramapa(MAPA* m, POSICAO* p, char c){ for (int i=0; ilinhas; i++){ for (int j=0; jcolunas; j++){ if (m->matriz[i][j] == '@'){ p->x=i; p->y=j; break; } } } } ****

fogefoge.h

int acabou();

void move(char direcao); void encontramapa(MAPA* m, POSICAO* heroi, char c); **** mapa.txt

5 10

|--------| |...|..-.| |..-|.@..| |......-.| |--------|

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software