Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como faço para separar o codigo?

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

}
1 resposta
solução!

Olá Marcelo,

a separação pode ser feita no Dev C++ de um modo muito semelhante ao que foi feito no vídeo.

Você pode clicar com o botão direito no seu projeto, ou ir no menu de arquivo e depois escolher a criação de um novo arquivo. Assim, vá adicionando os arquivos novos.

No final, é só dar o #include "mapa.h", como no vídeo.

Caso tenha algum problema na compilação, manda o erro aqui pra gente resolver!

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