1
resposta

o meu codigo não imprime o mapa



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

MAPA m;
POSICAO heroi;
int acabou() {
    return 0;
}
void move(char direcao) {
    if (direcao != 'a' &&
        direcao != 'w' &&
        direcao != 's' &&
        direcao != 'd' )
        return;

    int proximox = heroi.x;
    int proximoy = heroi.y;
    switch (direcao)
    {
        case 'a' :
        proximox--;
        break;
        case 'w' :
        proximoy--;
        break;
        case 's' :
        proximoy++;
        break;
        case 'd' :
        proximox++;
        break;
    }
    if (proximoy >= m.linhas)
    return;
    if (proximox >= m.colunas)
    return;
    if (m.mapa[proximox][proximoy] != '.')
    return;
    m.mapa[proximoy][proximox] = '@';
    m.mapa[heroi.y][heroi.x] = '.';
    heroi.y = proximoy;
    heroi.x = proximox;
    printf("ila\n");
}
int main() {
    setlocale(LC_ALL, "portuguese");
    
    lermapa(&m);

    encontraMapa(&m, &heroi, '@');
    do
    {
        imprimirMapa(&m);
        char comando;
        scanf(" %c", &comando);
        move(comando);
    } while (!acabou());
    
    
}
1 resposta

Oi, Alexandre, tudo bem?

Você usou proximox e proximoy para calcular a próxima posição do herói, mas ao verificar os limites do mapa e a posição vazia, você usou o m.mapa[proximox][proximoy] no lugar do m.mapa[proximoy][proximox]. As coordenadas ficaram invertidas.

Se a dúvida persistir, estamos por aqui.

Abraços! :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.