Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Bug na Bomba

Fiz modificações no jogo para tentar otimizar e talz, hoje fui aplicar a bomba e ela já vem com o valor 1 por causa do meu caçador de inimigos no mapa, o que posso ter feito de errado?

foge_foge_estudo.c

encontrainimigos(&m, &ghosts, FANTASMA, &d); //encontro o total de fantasmas e suas posições //depois daqui o tempilula ou qualquer nome que eu coloque fica com o valor de 1

mapa.c

/* encontro os inimigos = fantasmas / int encontrainimigos(MAPA m, GHOST* ghosts, char c, EL* d) { int num_ghosts = 0; //localizando a posição atual do heóri for (int i = 0; i < m->linhas; i++) { for (int j = 0; j < m->colunas; j++) { if (m->matriz[i][j] == c) { ghosts[num_ghosts].num_fantasma = num_ghosts; ghosts[num_ghosts].xfantasma = i; ghosts[num_ghosts].yfantasma = j; // ghosts[num_ghosts].objeto_fantasma = '.'; num_ghosts++; if (num_ghosts >= d->inimigos) { return 1; }; } } } return 0; }

2 respostas

Olá, Alexandre! Pelo que entendi, você está com um problema onde a variável tempilula está sendo alterada para 1 após a execução da função encontrainimigos(), certo?

A função encontrainimigos() retorna 1 quando o número de fantasmas encontrados é maior ou igual ao valor armazenado em d->inimigos. Se essa função está sendo chamada antes da verificação da pílula, é possível que o valor retornado esteja sendo atribuído à tempilula, fazendo com que ela seja 1 mesmo sem o herói ter coletado uma pílula.

Para solucionar isso, você precisa garantir que o valor retornado pela função encontrainimigos() não esteja sendo atribuído à tempilula. Verifique se, em algum lugar do seu código, você não está fazendo algo como tempilula = encontrainimigos(&m, &ghosts, FANTASMA, &d);.

Além disso, é importante verificar se a função move() está sendo chamada corretamente. Ela é responsável por alterar o valor de tempilula para 1 quando o herói se move para uma casa que contém uma pílula. Se a função não estiver sendo chamada ou se a condição if(ehpersonagem(&m, PILULA, proximox, proximoy)) não estiver sendo satisfeita, tempilula não será alterada para 1.

Espero ter ajudado e bons estudos!

solução!

Olá, segui outro caminho e cheguei a solução meu bug ficou para quando o fantasma me pegua que fica umas linhas em branco, rs

Mas obrigado por responder