1
resposta

Projeto Pong Copa concluído [Porem ocorrem Bugs]

Projeto concluido porem ocorrem alguns Bugs...

1 A bolinha as vezes trava na raquete e gera vários pontos. 2 As vezes a bolinha não marca ponto 3 As vezes a bolinha não emite o som https://scratch.mit.edu/projects/768615015/

1 resposta

Olá, Vagner, tudo bem?

Que bom que você buscou aperfeiçoar seu código, parabéns, é exatamente isso que vai te fazer crescer como programador!

Vamos falar dos três problemas que você citou:

  1. A bolinha as vezes trava na raquete e gera vários pontos;
  2. As vezes a bolinha não marca ponto;
  3. As vezes a bolinha não emite o som;

1. A bolinha as vezes trava na raquete e gera vários pontos

Para essa situação, uma das possibilidades é de que sempre quando for computado o gol, a bolinha voltar ao centro, isso evita que a bolinha fique entre a raquete gerando vários pontos.

Neste caso, basta que você coloque uma linha que desloca o x da bola para o meio do campo sempre que for gol, tipo assim:

Captura da tela do Scratch. Há dois blocos responsavel pela pontuacao. No primeiro há um bloco de evento "when bandeira verde clicked". Em seguida, há um bloco de controle 'forever', 'wait x position < -231. Bloco de variavel, 'change pontos do oponente by 1', abaixo há um bloco de movimento, 'set x to 0 '. Abaixo há um bloco de controle condicional 'if pontos do oponente >9' then ' 'diga VOCE PERDEU' bloco de som start sound 'goalGANHADOR', start sound 'Trap Beat 'VENCER', em seguida há um bloco de controle if 'pontos do oponente>9' then, bloco de controle 'wait 3 seconds', bloco de controle 'stop all'.Por fim, há um bloco de som, 'coin gol'. O ouro bloco responsavel pela pontuaçao, há os mesmo bolocos com a diferença na posicao x, sendo 231, a variavel sendo meus pontos, e o bloco de aparencia diz "VOCE GANHOU"

Adicionamos o set x to 0 sempre que for gol!

2. As vezes a bolinha não marca ponto!

Você já percebeu que isso só acontece logo depois da bolinha ficar presa na frente da raquete? E que ela só fica presa bate exatamente na quina da raquete?

Isso acontece, pois no mundo ideal o nosso if das verificações só acontece uma vez por raquetada. Mas entrando bem na quina a bola consegue ficar em um espaço bem pequeno onde ela ativa esse if várias vezes, fazendo aquele zig-zag e aquele barulho chato.

Além de, aparentemente, bugar a colisão do Scratch impedindo a gente de computar os pontos e fazer o som da bolinha.

Podemos resolver isso dando um “empurrão” quase imperceptível na bola sempre que ocorrer a raquetada?

Segue o código abaixo:

Captura de tela da ferramenta Scratch. No bloco de evento "When bandeira verde clicked". Em seguida há um código de controle "forever" seta indicando repetição. Dentro desse bloco, há um bloco de controle "se então": "se touching em raquete1 então", bloco de movimento 'point in direction -1', 'set x to -220', bloco de som ‘som bolinha’. Abaixo um bloco de condiçao if, bloco de sensor ‘touching raquete 2’ then, bloco de movimento ‘point in direction-1’ bloco de movimento ‘set x to 220’ bloco de som ‘start sound som bolinha’.

Primeiro eu separei a verificação do toque para cada raquete, depois fiz com que a bola (depois de mudar de direção) fosse para uma posição logo a frente da raquete, evitando assim que a colisão aconteça várias vezes por raquetada!

3. As vezes a bolinha não emite o som!

Teoricamente, resolvendo o segundo problema, esse também é resolvido!

Espero ter te ajudado.

Reforço que estou à disposição para tirar dúvidas.

Abraços.

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