1
resposta

Bolinha travando na raquete e pontuação fica infinita

Pessoal eu segui todo o gabarito do professor mas minha bolinha quando carrego o jogo em certo momento gruda em uma das raquetes e fica contando uma pontuação infinita. Já desgrudei, grudei raquete na borda, ja desenhei no centro, aumente, diminui bolinha, tirei o som, mas nada resolve, poderiam me auxiliar ?,

Jogo Pong

1 resposta

Oi, Mayla! Tudo bem? Espero que esteja gostando do curso! Peço desculpas pela demora por um retorno

Para conseguirmos ajustar esse problema não esperado devemos inicialmente identificar o que o caracteriza. Nesse caso, em alguns momentos a bolinha fica presa, sempre nas extremidades do jogo (quando x > 220 para o lado direito, ou quando x < -220 para o lado esquerdo e em alguns casos com y > 170 ou y < -170), travando a bolinha nessa posição e somando pontos infinitos.

Na programação existem diferentes formas de se chegar a um resultado esperado, nesse caso em especial, uma delas é a adição ao código de algumas condições e alterações:

  • Inicialmente, assim que a bolinha chegar na extremidade de x (quando x > 229 ou x < -229), ou seja: quando a bolinha bater na parede, o som de ponto será tocado instantaneamente, porém o programa esperará 1 segundo e avaliará se a bolinha continua presa naquele local (ou seja, se ela continua com as mesmas coordenadas das extremidades de x ou y 1 segundo após ter tocado a parede).

  • Dessa forma, caso o programa identifique que a bolinha está presa nas extremidades ele moverá a bolinha, alterando a sua localização em x para 220 (caso ela esteja presa a direita) ou para -220 (caso ela esteja presa a esquerda), libertando assim a bolinha daquela posição e devolvendo a sua movimentação ao jogo.

  • Porém, ao contrário do exposto acima, caso o programa identifique que após 1 segundo a bolinha está localizada fora das extremidades (y entre 170 e - 170 e x entre 220 e -220), ele soma 1 ponto normalmente ao placar (e apenas soma o ponto quando a bolinha sai das extremidades, resolvendo o problema da marcação de pontuação infinita).

Segue abaixo duas fotos das alterações feitas no código para resolver o problema e para você acompanhar melhor a explicação dada acima:

Print de tela do site scratch. Blocos de código coloridos seguindo a ordem de cima para baixo: o primeiro bloco amarelo contém os dizeres: “quando, for clicado” intercalado por um desenho de bandeira na cor verde. O segundo bloco alaranjado contém a palavra “sempre” e abriga os demais dentro dele. O terceiro também alaranjado contém os dizeres “espere até”, este bloco abriga um losango verde com dois espaços no primeiro um retângulo com bordas arredondadas  na cor azul contendo a palavra “posição x” e no segundo espaço o valor “-229” intercalados pelo sinal matemático de menor. O quarto bloco roxo apresenta os dizeres “toque o som ponto”. O quinto bloco alaranjado contém os dizeres “espere 1 segundo”. O sexto bloco na sequência é alaranjado e apresenta a preposição “se, “então” e “senão” que abrigam em seu interior um:  losango verde em seu interior com outros três losangos menores intercalados pelas preposições “ou” e pela letra “e”. Na sequência o primeiro losango traz dois espaços, no primeiro um retângulo com bordas arredondadas  na cor azul contendo a palavra “posição x” e no segundo espaço o valor “-220” intercalados pelo sinal matemático de maior; o segundo traz dois espaços, no primeiro um retângulo com bordas arredondadas  na cor azul contendo a palavra “posição y” e no segundo espaço o valor “-170” intercalados pelo sinal matemático de maior; o terceiro traz dois espaços no primeiro um retângulo com bordas arredondadas  na cor azul contendo a palavra “posição y” e no segundo espaço o valor “170” intercalados pelo sinal matemático de maior, ainda dentro do mesmo bloco temos o bloco laranja que contém os dizeres “adicione um a pontos do oponente”. O último bloco azul traz os dizeres “mude x para -220”.Print de tela do site scratch. Descrição igual a anterior, mudando apenas as condicionais relacionadas a posição x, que em ordem de cima para baixo são: 1. terceiro bloco alaranjado com o dizer "espere até que" abriga um losango verde com dois espaços, no segundo espaço o valor “229” antecedido pelo sinal matemático de maior. 2  Sexto bloco condicional alaranjado com o dizer "se" abriga  losango verde em seu interior com outros três losangos menores intercalados pelas preposições “ou” e pela letra “e”. O primeiro losango traz dois espaços, no segundo espaço o valor “220” antecedido pelo sinal matemático de menor . 3. O último bloco azul traz os dizeres “mude x para 220”.

Espero ter ajudado :) Caso tenha ficado alguma dúvida sobre o problema ou a explicação, fique a vontade para perguntar, estou à disposição para ajudar.

Um forte abraço!

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