2
respostas

[Dúvida] Erro de compilação

Boa noite, estou tendo problemas na compilção do seguinte código: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Assim que está o arquivo principal do jogo:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Ficaria muito agradecida se alguém pudesse me ajudar

2 respostas

Boa noite, tudo bem?

Muito estranho... tentei fazer o mesmo que você e no meu caso está compilando. Consegue copiar os arquivos que está usando pra eu testar por completo? Ou são os arquivos do próprio curso? Caso seja, só avisar que consigo copiar do curso mesmo.

Aguardo sua resposta!

Oi! Bom dia Esses são os arquivos que estou usando:

mapa.txt:

5 10
|--------|
|...|..-.|
|..-|.@..|
|......-.|
|--------|

mapa.c:

#include <stdio.h>
#include <stdlib.h>
#include "mapa.h"

void liberamapa(MAPA *m) {
    for (int i = 0; i < (*m).linhas; i++) {
        free((*m).matriz[i]);
    }
    free((*m).matriz);
}

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

}


void lemapa(MAPA *m) {
    FILE *f;
    f = fopen("mapa.txt", "r");
    if(f == 0) {
        printf("Erro na leitura do mapa\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 imprimemapa(MAPA *m) {

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

mapa.h:

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

void liberamapa(MAPA *m);
void lemapa(MAPA *m);
void alocamapa(MAPA *m); 
void imprimemapa(MAPA *m);

pac-man.c:

#include <stdio.h>
#include <stdlib.h>

#include "mapa.c"
#include "mapa.h"
#include "pac-man.h"

MAPA m;


int acabou() {
    return 0;
}

void move(char direcao) {
    int x;
    int y;

    //acha a posicao do pacman
    for(int i = 0; i < m.linhas; i++) {
        for(int j = 0; j < m.colunas; j++) {
            if(m.matriz[i][j] == '@') {
                x = i;
                y = j;
                break;
            }
        }
    }

    switch(direcao) {
        case 'a':
            m.matriz[x][y-1] = '@';
            break;
        case 'w':
            m.matriz[x-1][y] = '@';
            break;
        case 's':
            m.matriz[x+1][y] = '@';
            break;
        case 'd':
            m.matriz[x][y+1] = '@';
            break;
    }

    m.matriz[x][y] = '.';
}
int main() {
    
    
    lemapa(&m);
    
    do {

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

    } while(1);

    liberamapa(&m);

    return 0;
}

pac-man.h:

void move(char direcao);
int acabou();