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();
} 
            