Oi Maxaylla, vi seu código ele está perfeito para o que foi pedido no curso, mas caso queira sumir com a falha da pontuação excessiva sugiro algumas alterações:
Problema da marcação excessiva de pontos:
Também tive problema, isso se deve a uma falha resultante do código apresentado no curso. Primeiro vamos entender o que acontece e depois corrigir. A tela do jogo tem 480 pixels de largura, ou seja ela vai de -240 até +240 no eixo x. Podemos ver isso adicionando o cenário Xy-grid
no Palco. Outro detalhe importante é que a bolinha foi programada para inverter a direção quando sua borda tocasse na borda da tela. Ou seja quando o x da bolinha menos o raio da bolinha toca o canto esquerdo da tela (-240) a bolinha muda de direção. O mesmo vale para a outra extremidade da tela, caso o x da bolinha mais o raio toque o canto direito da tela (240) ela muda de direção.
Até aqui tudo bem, porém a bolinha também foi programada para mudar de direção quando tocasse as raquetes. Lembre-se que as raquetes do jogador e do oponente estão nas respectivas posições -229 e 231 do eixo x. Isso cria uma falha onde a bolinha vai rebater por trás das raquetes e pontuar várias vezes. Exemplo: a bolinha atinge a borda esquerda da tela (-240 do eixo x) e dá 1 ponto para o oponente. Ela muda de direção, porém bate no fundo da raquete do jogador (-229). Assim ela muda de direção novamente e rebate na borda esquerda da tela (-240 do eixo x) dando mais 1 ponto para o oponente e mudando novamente de direção. Repare que esse movimento se repetirá até que ela saia por uma das extremidades da raquete dando muitos pontos ao oponente.
Como corrigir isso? Podemos programar para que a bolinha evite fazer esse rebote. Para tanto temos que dividir o quinto bloco de código em 2. Um cuidará da raquete do jogador e outro cuidará da raquete do oponente, onde mudaremos o x da bolinha quando ela tocar na raquete. Remova o operador ou
e separe os dois sensores tocando em
. Deixaremos cada um dentro de um se então
clique com o botão direito sobre este comando e o duplique.
Dentro do bloco que referencia minha raquete
adicione o comando de movimento mude x para
-220 abaixo do comando aponte para a direção
. Pois o ponto de contato da bolinha e da borda da raquete é -240 da borda da tela + 10 do espaço da borda com a raque + 5 da largura da raquete + 5 do raio da bola. Faça o mesmo no outro bloco para a raquete do oponente com a diferença que o comando mude x para
será no valor de 220.
Um último ajuste, no terceiro e quarto blocos, os que são responsáveis pela pontuação. Dentro do operador menor que
, que está no evento espere até que
, altere o valores de x para -230 no terceiro bloco e 230 no quarto bloco. Isso ajudará a impedir o excesso de pontuação.
Mudanças visuais e limpeza de código.
Modificar o formato da bolinha diminuindo sua altura, pois ela está oval. Deixar ela circular vai ajudar na visualização e no código. Sugiro deixar 15 x15. Você pode conferir essa informação no painel fantasia, no canto superior esquerdo da tela, lá tem um quadro com essa informação.
Remover o comando de controle: Esconda a variável posição y da bolinha. Pois ele não tem funcionalidade ali. Ele se encontra no primeiro bloco, que controla o movimento da bolinha.
Segue o link do remix com as alterações que sugeri: https://scratch.mit.edu/projects/467438342
Desculpe o textão, hehehehehe, mas não sei como explicar de uma maneira mais resumida. Espero que tenha ajudado a entender o bug.