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

[Dúvida] ExplodePilula

Olá, boa tarde! Tudo bem? Do jeito que a fução foi implementada ela não está explodindo as 4 direções no plano cartesiano?

3 respostas

Olá, Pedro! Tudo bem?

A função explodepilula2 é chamada quatro vezes dentro da explodepilula, cada uma com parâmetros diferentes que representam as direções: direita, esquerda, cima e baixo.

Um resumo de como cada chamada está configurada:

  • explodepilula2(heroi.x, heroi.y, 0, 1, 3); - Direção direita (soma 0 no eixo x e 1 no eixo y).
  • explodepilula2(heroi.x, heroi.y, 0, -1, 3); - Direção esquerda (soma 0 no eixo x e -1 no eixo y).
  • explodepilula2(heroi.x, heroi.y, 1, 0, 3); - Direção para baixo (soma 1 no eixo x e 0 no eixo y).
  • explodepilula2(heroi.x, heroi.y, -1, 0, 3); - Direção para cima (soma -1 no eixo x e 0 no eixo y).

Cada chamada está configurada para modificar a posição x ou y conforme a direção desejada, e a função explodepilula2 é responsável por realizar a explosão em cada direção de forma recursiva.

Se a função não está funcionando como esperado, sugiro verificar se a função ehvalida e ehparede estão retornando os valores corretos, pois elas determinam se a explosão pode continuar em uma determinada direção.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

A função funciona conforme o esperado, a minha dúvida é se ela explode para as 4 direções ao mesmo tempo. Visto que não vi local onde delimita uma direção para a explosão dela.

solução!

Olá, Pedro! Peço desculpa pela demora em responder.

A função deve, sim, explodir em todas as quatro direções ao mesmo tempo. O funcionamento está relacionado ao fato de a explodepilula chamar a função explodepilula2 quatro vezes, uma para cada direção.

Mesmo que não haja uma "delimitação" explícita de uma direção dentro da explodepilula, essas chamadas subsequentes fazem o trabalho de espalhar a explosão nos eixos x e y. O código está montado para que, quando uma chamada é feita, ela trata uma direção específica. Cada uma dessas quatro chamadas é processada em paralelo, uma para direita, esquerda, cima e baixo, como explicado na resposta anterior.

Se a sua dúvida é se todas essas explosões acontecem simultaneamente, pode ser que o comportamento pareça "sequencial" visualmente, mas, na lógica do programa, o processo está acontecendo para todas as direções dentro da mesma execução da função.

Se precisar de mais ajuda, o fórum está à disposição!

Bons estudos e continue firme!