1
resposta

Fantasma seguindo o heroi

int praondeofantasmavai(int xatual, int yatual, int* xdestino, int* ydestino) {
    int opcoes[4][2] = { {xatual, yatual +1},
                       {xatual +1, yatual},
                       {xatual, yatual -1}, 
                       {xatual -1, yatual} 
    };

    for(int i = 0; i < 10; i++) {
            if(heroi.x > xatual) {
                if(ehvalida(&m, opcoes[1][0], opcoes[1][1]) 
                && ehvazia(&m, opcoes[1][0], opcoes[1][1])) {
                    *xdestino = opcoes[1][0];
                    *ydestino = opcoes[1][1];

                    return 1;
                    break;
                }
            }
            else if(heroi.x < xatual) {
                if(ehvalida(&m, opcoes[3][0], opcoes[3][1]) 
                && ehvazia(&m, opcoes[3][0], opcoes[3][1])) {
                    *xdestino = opcoes[3][0];
                    *ydestino = opcoes[3][1];
                    return 1;
                    break;
                }
            }
            else if(heroi.y > yatual) {
                if(ehvalida(&m, opcoes[0][0], opcoes[0][1]) 
                && ehvazia(&m, opcoes[0][0], opcoes[0][1])) {
                    *xdestino = opcoes[0][0];
                    *ydestino = opcoes[0][1];

                    return 1;
                    break;
                }
            }
            else if(heroi.y < yatual) {
                if(ehvalida(&m, opcoes[2][0], opcoes[2][1]) 
                && ehvazia(&m, opcoes[2][0], opcoes[2][1])) {
                    *xdestino = opcoes[2][0];
                    *ydestino = opcoes[2][1];

                    return 1;
                    break;
                }
                }

            else {
                srand(time(0));
                int posicao = rand() % 4;                 

                if (ehvalida(&m, opcoes[posicao][0], opcoes[posicao][1])
                && ehvazia(&m, opcoes[posicao][0], opcoes[posicao][1])){
                    *xdestino = opcoes[posicao][0];
                    *ydestino = opcoes[posicao][1];

                    return 1;
                    break;
            }
        }
    }
}
1 resposta

Olá, Matheus! Tudo bem?

Ficamos felizes em ver sua evolução.

Caso tenha alguma dúvida estou à disposição para tentar te auxiliar.

Abraços e ótimos estudos :)