1
resposta

[Bug] Bug de Pontuação com Bolinha

Olá, fiz o meu código do pong de acordo com os passos que foram feitos em nas aulas, mesmo assim a bolinha ao bater na borda esta marcando dois pontos, e as vezes trava na barra, tem algum código errado? Projeto : https://scratch.mit.edu/projects/781902362/

1 resposta

Oi, Aline! Tudo bem?

O código está no caminho certo, só precisamos fazer algumas alterações!

Para resolvermos o nosso problema primeiro centralizamos a bolinha, dessa forma a representação dela na tela do jogo vai ser exata:

Inicio da transcrição. Imagem de um círculo verde e um ícone de mouse em forma de punho sobre ele. É possível visualizar uma cruz azul no centro do círculo e o ícone de um alvo preto sobre ele. Fim da Transcrição.

No código referente a pontuação do jogador, foi utilizado 215 como posição x da tela, porém, esta coordenada é muito distante da borda, sendo assim a bolinha bate na parede e volta antes mesmo do jogo computar um ponto.

Início da transcrição. Na tela há um plano cartesiano com 1 retângulo de pé em cada centro das laterais. Em cima do retângulo da direita há uma bolinha em que seu centro é tangente a lateral esquerda do retângulo, esse tangenciamento é marcado por uma linha vermelha que se segue do centro da bolinha, atravessa a lateral do retângulo até a linha do plano cartesiano. Abaixo da linha vermelha, na perpendicular com a linha do plano cartesiano o número duzentos e quinze pode ser visto. Fim da transcrição

Dessa forma, se modificarmos o valor de 215 para um maior, como por exemplo, 222, teremos o resultado esperado da pontuação marcando corretamente.

Início da transcrição. Na tela há um plano cartesiano com 1 retângulo de pé em cada centro das laterais. Em cima do retângulo da direita há uma bolinha em que seu centro é tangente a lateral esquerda do retângulo, esse tangenciamento é marcado por uma linha vermelha que se segue do centro da bolinha, atravessa a lateral do retângulo até a linha do plano cartesiano. Abaixo da linha vermelha, na perpendicular com a linha do plano cartesiano o número duzentos e vinte e dois pode ser visto. Fim da transcrição.

Esta lógica, segue a mesma para as demais pontuações, como a do inimigo, que nesse caso usará um valor negativo devido a sua posição no plano cartesiano.

Prontinho! Dessa forma solucionamos o problema da contagem de pontos, porém, podemos de outra forma, resolver tanto o problema da pontuação quanto da bolinha presa na raquete seguindo o código:

Inicio da transcrição. Captura de tela do Scratch, em que há um fundo branco e 2 blocos de código com comandos coloridos, um ao lado do outro, de forma que, ao lado esquerdo se encontra um bloco de código com os seguintes comandos, seguindo a ordem de cima para baixo: quando bandeira verde for clicada, sempre, espere até que posição x seja menor que -222, toque o som Coin, espere 0.5 segundos, se posição x menor que -222, adicione 10 a x, senão, adicione 1 a pontos-oponente. Ao lado direito se encontra um bloco de código com os seguintes comandos, seguindo a ordem de cima para baixo: quando bandeira verde for clicada, sempre, espere até que posição x seja maior que 222, toque o som Coin, espere 0.5 segundos, se posição x maior que 222, adicione -10 a x, senão, adicione 1 a meus-pontos. Fim da transcrição.

As alterações consistem na seguinte lógica: sempre que a bolinha tocar a parede (quando a posição x da bolinha for menor que -222 ou maior que 222), o som da pontuação será tocado normalmente, entretanto, o programa esperará 0.5 segundos e irá conferir se a bolinha está presa ou não, para pontuar.

Caso a posição da bolinha continue menor que -222 ou maior que 222, isso significa que a bolinha está presa, então, será adicionado um valor a posição x para libertá-la. Caso não, adiciona-se 1 ponto normalmente.

Dessa forma, o código, então, apenas irá adicionar 1 ponto quando a bolinha sair daquela localização e após o intervalo de 0.5 segundos, evitando possíveis bugs de pontuação.

Segue o projeto resolvido:

Se precisar estamos à disposição, conte conosco!

Um feliz ano novo e bons estudos!

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