1
resposta

Meu código continua tendo vários pacmans (e nas posições erradas)

Quis deixar o scaneamento do comando dentro da função anda() desse jeito:

void anda(){
    int x, y;
    for(int i = 0; i < linhas; i++){
        for (int j = 0; j < colunas; j++){
            if (mapa[i][j] = '@'){
                x = j;
                y = i;
                break;
            }
        }
    }

    char comando;
    scanf(" %c", &comando);

    switch (comando){
        case 'a':
        mapa[y][x - 1] = '@';
        break;    
        case 'w':
        mapa[y - 1][x] = '@';
        break;
        case 's':        
        mapa[y + 1][x] = '@';
        break;
        case 'd':
        mapa [y][x + 1] ='@';
        break;
    }

    mapa[y][x] = '.';

}

int main(){

    le_mapa();

    do {

        imprime_mapa();
        anda();

    } while (!fimdejogo());

    limpa_mapa();


    return 1;
}

mas meu código fica com vários pacman's, um aparece na posição certa e outro fica onde o outro em luagres aleatórios, quando aperto aparece a mensagem "Falha de segmentação (imagem do núcleo gravada)". Alguém pode me ajudar? (tentei tirar o scanf do anda() e colocar o main, mas continuou com o mesmo problema).

1 resposta

Mauro, para fazer a comparação no IF você deve usar ==.

Se você utilizar apenas um =(igual) o C entende uma atribuição de valor.

Como ficaria:

if (mapa[i][j] == '@'){