1
resposta

Não imprime mapa

Meu arquivo para o mapa é "mapa.txt", meu programa está compilando mas não aparece o mapa para mim. Qual pode ser o problema?

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

struct mapa m;

void lemapa() {
    FILE* f;
    f = fopen("mapa.txt", "r");

    if(f == 0) {
        printf("Erro na leitura do mapa");
        exit(1);
    }

    fscanf(f, "%d %d", &(m.linhas), &(m.colunas));
    alocamapa();

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

    fclose(f);
}

void alocamapa() {
    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 liberamapa() {
    for(int i = 0; i < m.linhas; i++) {
        free(m.matriz[i]);
    }

    free(m.matriz);
}

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

int acabou(){
    return 0;
}

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

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

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

    }while (!acabou());

    liberamapa();
}
1 resposta

Olá Fernanda.

Testei seu código aqui e ele funcionou corretamente.

Poderia mandar o seu foge.h e o que está aparecendo quando você compila e executa o programa.

Ah também se possível mostrar como está o seu mapa.txt, entendo que o problema não está no arquivo foge.c que você mandou.

Bons Estudos.

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