Gostaria de pedir ajuda para separar o meu código em arquivos assim como fez o instrutor, mas usando o dev c++.
#include <stdio.h>
#include <stdlib.h>
#include "mapa.h"
#include "direcao.h"
MAPA m;
POSICAO h;
void tasma(){
for(m.i = 0; m.i < m.linhas; m.i++){
for(m.j = 0; m.j < m.colunas; m.j++){
if(m.matriz[m.i][m.j] == TASMA){
int proximox = m.i;
int proximoy = m.j;
h.x = proximox;
h.y = proximoy;
if(ehvalida()) {
m.matriz[proximox][proximoy] = TASMA;
m.matriz[h.x][h.y] = VAZIO;
h.x = proximox;
h.y = proximoy;
}
}
}
}
}
//}
// matriz 5x10
void liberamapa() {
for(m.i = 0; m.i < m.linhas; m.i++) {
free(m.matriz[m.i]);
}
free(m.matriz);
}
int ehvalida() {
if(h.x >= m.linhas) return 0;
if(h.y >= m.colunas) return 0;
return 1;
}
int ehvazia(int proximox, int proximoy) {
return m.matriz[proximox][proximoy] == VAZIO;
}
andandonomapa(int proximox, int proximoy) {
m.matriz[proximox][proximoy] = PERSONAGEM;
m.matriz[h.x][h.y] = VAZIO;
h.x = proximox;
h.y = proximoy;
}
void alocamapa() {
m.matriz = malloc(sizeof(char*) * m.linhas);
for(m.i = 0; m.i < m.linhas; m.i++) {
m.matriz[m.i] = malloc(sizeof(char) * (m.colunas + 1));
}
}
void lemapa(){
FILE* f;
f = fopen("mapa.txt", "r");
if(f == 0) {
printf("Erro arquivo mapa não encontrado");
exit(1);
}
fscanf(f, "%d %d", &(m.linhas), &(m.colunas));
alocamapa();
for(m.i = 0; m.i < 5; m.i++){
fscanf(f, "%s", m.matriz[m.i]);
}
fclose(f);
}
void imprimemapa() {
for(m.i = 0; m.i < 5; m.i++) {
printf("%s\n", m.matriz[m.i]);
}
}
//Verificar a informação do movimento de entrada
int ehdirecao (char direcao) {
if( direcao != ESQUERDA ||
direcao != CIMA ||
direcao != DIREITA ||
direcao != BAIXO);
}
// acha a posicao do foge foge
void Move(char direcao) {
encontra();
if(!ehdirecao(direcao)) return;
int proximox = h.x;
int proximoy = h.y;
switch(direcao) {
//anda para esquerda
case ESQUERDA:
proximoy--; //m.matriz[h.x][h.y-1] = '@';
break;
//h.y--;
//anda para cima
case CIMA:
proximox--; //m.matriz[h.x-1][h.y] = '@';
break;
//h.x--;
//para baixo
case BAIXO:
proximox++; //m.matriz[h.x+1][h.y] = '@';
break;
//h.x++;
//para direita
case DIREITA:
proximoy++; //m.matriz[h.x][h.y+1] = '@';
break;
//h.y++;
}
if(!ehvalida()) return;
if(!ehvazia(proximox, proximoy)) return;
andandonomapa(proximox, proximoy);
}
//Função encontra heroi "@" no mapa
void encontra() {
for(m.i = 0; m.i < m.linhas; m.i++) {
for(m.j = 0; m.j < m.colunas; m.j++) {
if(m.matriz[m.i] [m.j] == PERSONAGEM){
h.x = m.i;
h.y = m.j;
break;
}
}
}
}
int acabou() {
return 0;
}
int main() {
lemapa();
do {
imprimemapa();
char comando;
scanf(" %c", &comando);
Move(comando);
tasma();
} while(!acabou());
liberamapa();
}