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

Dúvida

bom, eu fiz uma proeza aqui. Eu consegui fazer o codigo funcionar de uma forma diferente, o problema é que eu não entendi como ele está funcionando. hauhaua

void fantasmas(char direcao)
{

        if(verificatecla(direcao))
        {
        for(int i = 0; i < m.linhas; i++)
        {
                for(int j = 0; j < m.colunas; j++)
                {
                        if(m.mapa[i][j] == 'F')
                        {
                                if(verificamapa(&m, i, j + 1))
                                {
                                        int irParaFrente = j + 1;
                                        andanomapa(&m, i, j, i, irParaFrente);
                                        return;
                                }
                        }
                }
        }
        }
}

quando eu retiro o return, o programa buga, e os fantasmas andam mais de uma vez para frente.

1 resposta
solução!

Olá Victor.

Se puder postar seu arquivo completo, vou conseguir reproduzir na minha maquina e conseguir te ajudar melhor.

Mas uma coisa que costumo fazer quando tento entender melhor o código é escrever comentários nele:

void fantasmas(char direcao) // função responsável por movimentas os fantasmas
{
    if(verificatecla(direcao))// verifica se jogador fez movimento valido
    {
        for(int i = 0; i < m.linhas; i++)// percorre todas as linhas do mapa
        {
            for(int j = 0; j < m.colunas; j++)// percorre todas as colunas do mapa
            {
                if(m.mapa[i][j] == 'F')// verifica se tem um fantasma nesse local do mapa
                {
                    if(verificamapa(&m, i, j + 1))// verifica se tem uma parede no bloco ao lado desse
                    {
                            int irParaFrente = j + 1; // avança para uma posição a direita da atual
                            andanomapa(&m, i, j, i, irParaFrente);// muda o personagem para a nova posição
                            return; // move apenas um fantasma 
                    }
                }
            }
        }
    }
}

Se possível, mande o código completo e olhamos ele juntos.

Bons Estudos.