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

[Dúvida] Bolinha trava no canto e não sai

Quando a bolinha fica presa entre a raquete e a borda do adversário não tem mais como jogar. https://scratch.mit.edu/projects/786130501 Cheguei a usar a solução que constava em algumas perguntas aqui no Fórum mas não solucionaram esse problema.

Bolinha travada no canto

3 respostas
solução!

Oi, Vitor! Tudo bem?

Podemos observar no código do link enviado, como apontam as setas da imagem abaixo, que os sentidos dos valores que devem ser adicionados a x estão alternados.

Captura de tela do Scratch. Fundo branco com dois blocos de código colorido ao centro, um ao lado do outro. O bloco de código localizado à esquerda da imagem possui os seguintes comandos, seguindo a ordem de cima para baixo: quando bandeira verde for clicado, sempre, espere até que posição x maior que 215, espere 0.5 segundos, se posição x maior que 215 então, adicione 10 a x, senão, adicione 1 a Pontos Vermelho, toque o som Ponto. O bloco de código localizado à direita da imagem possui os seguintes comandos, seguindo a ordem de cima para baixo: quando bandeira verde for clicado, sempre, espere até que posição x menor que -215, espere 0.5 segundos, se posição x menor que -215 então, adicione -10 a x, senão, adicione 1 a Pontos Azul, toque o som Ponto.

Para resolvermos esse probleminha, basta adicionarmos o sinal oposto ao número declarado, de forma que, 10 agora vire -10 e -10 vire 10. Dessa forma, quando a bolinha estiver presa, por estar em uma posição de x menor que a da raquete, por exemplo, será adicionado um valor positivo para aumentar o número correspondente à sua localização. A localização da bolinha que antes era menor que a da raquete se torna, então, maior, libertando-a.

Para garantirmos que a bolinha realmente seja liberta podemos também aumentar esse número adicionado à posição de x, deixando o nosso código da seguinte forma:

Captura de tela do Scratch. Fundo branco com dois blocos de código colorido ao centro, um ao lado do outro. O bloco de código localizado à esquerda da imagem possui os seguintes comandos, seguindo a ordem de cima para baixo: quando bandeira verde for clicado, sempre, espere até que posição x maior que 215, espere 0.3 segundos, se posição x maior que 215 então, adicione -25 a x, senão, adicione 1 a Pontos Vermelho, toque o som Ponto. O bloco de código localizado à direita da imagem possui os seguintes comandos, seguindo a ordem de cima para baixo: quando bandeira verde for clicado, sempre, espere até que posição x menor que -215, espere 0.3 segundos, se posição x menor que -215 então, adicione 25 a x, senão, adicione 1 a Pontos Azul, toque o som Ponto.

Todavia, adiciono a sugestão de mais uma possível solução para o nosso problema. Podemos também substituir os comandos adicione -25 a x e adicione 25 a x por mude x para 0, deixando o código da seguinte maneira:

Captura de tela do Scratch. Fundo branco com dois blocos de código colorido ao centro, um ao lado do outro. O bloco de código localizado à esquerda da imagem possui os seguintes comandos, seguindo a ordem de cima para baixo: quando bandeira verde for clicado, sempre, espere até que posição x maior que 215, espere 0.3 segundos, se posição x maior que 215 então, mude x para 0, senão, adicione 1 a Pontos Vermelho, toque o som Ponto. O bloco de código localizado à direita da imagem possui os seguintes comandos, seguindo a ordem de cima para baixo: quando bandeira verde for clicado, sempre, espere até que posição x menor que -215, espere 0.3 segundos, se posição x menor que -215 então, mude x para 0, senão, adicione 1 a Pontos Azul, toque o som Ponto.

Espero ter ajudado!

Caso tenha ficado alguma dúvida, sinta-se a vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

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

Boa tarde, este código acima não está de acordo com a resposta disponibilizada pelo professor e a orientação da aula. Também estou com o mesmo problema reportado pelo victor hugo

Vi que se aumentar o tamanho da bolinha diminui o erro!