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?
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?
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!
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.
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!