eu não consegui entender como que o código funciona.
void explodepilula() {
if(!tempilula) return;
explodepilula2(heroi.x, heroi.y, 0, 1, 3);
explodepilula2(heroi.x, heroi.y, 0, -1, 3);
explodepilula2(heroi.x, heroi.y, 1, 0, 3);
explodepilula2(heroi.x, heroi.y, -1, 0, 3);
tempilula = 0;
}
void explodepilula2(int x, int y, int somax, int somay, int qtd) {
if(qtd == 0) return;
int novox = x + somax;
int novoy = y + somay;
if(!ehvalida(&m, novox, novoy)) return;
if(ehparede(&m, novox, novoy)) return;
m.matriz[novox][novoy] = VAZIO;
explodepilula2(novox, novoy, somax, somay, qtd - 1);
}
como que quando o personagem usar o poder, a parede "_" não desaparece ? pois só está indicando ali para não desaparecer as paredes "-" e "|"
funções citadas no códigos
int ehvalida(MAPA* m, int x, int y) {
if(x >= m->linhas)
return 0;
if(y >= m->colunas)
return 0;
return 1;
}
int ehparede(MAPA* m, int x, int y) {
return m->mapa[x][y] == '|' ||
m->mapa[x][y] == '-';
}