fiz meu código de acordo com o passado no vídeo, mas o contador de pontos está dando 3 pontos a cada batida na borda, para o oponente... Se ajusto o número da posição, ele para de contar os pontos mesmo encostando na borda!!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
fiz meu código de acordo com o passado no vídeo, mas o contador de pontos está dando 3 pontos a cada batida na borda, para o oponente... Se ajusto o número da posição, ele para de contar os pontos mesmo encostando na borda!!
Bom dia Julia,
coloca o link do seu código no Scratch aqui, pode ser algum problema em outro trecho da sua lógica.
Ajuste para -227 a condicional de colisão e veja se resolve.
-227 também é um bom número!
Verifica a posição das raquetes quando o jogo inicia,
Raquete 1 x -232
Raquete 2 x 232
Ponto pro jogador 1 quando x da bolinha for maior que 232
Ponto pro jogador 2 quando x da bolinha for menor que -232
Bom dia, Júlia!
Acredito que o problema seja devido a velocidade de processamento do comando. A explicação é um tanto comprida, mas de nada adianta eu te dar a solução sem antes tu entender por que ela funciona.
No seu código atual, quando a bolinha está em uma posição inferior a -229 (p.ex: -235) então o ponto é computado. Até aí, tudo bem, esse era o comportamento esperado. Quase que instantaneamente, o bloco de código então volta para o início da execução (no bloco mais externo - "sempre").
O problema é que seu computador processa isso de maneira tão rápida que ele reinicia a execução dos blocos internos ( "espere até que" e do "adicione 1") antes mesmo de a bolinha ter saído deste limite inferior de -229 que você definiu. Por exemplo, ela pode ter batido na parede e está voltando, mas ainda se encontra na posição -230 (que é inferior ao limite que você definiu). Neste caso, serão computados dois pontos quando, na verdade, deveria ser computado apenas 1, entendeu? Quanto mais rápido o processamento do seu computador, mais pontos serão computados.
Alguns colegas sugeriram ajustar o limite de forma a deixar o tempo de processamento mais apertado, porém esta não é a solução mais adequada porque sempre dependerá da velocidade de processamento, e isso muda de máquina para máquina.
Para resolver isso de maneira mais adequada, que funciona para qualquer computador, você pode criar um "filtro". A lógica é a seguinte:
O passo 2 garante que o código só volte a executar novamente depois que a bolinha já voltou para o lado do adversário (passa da metade da tela do jogo). No caso do lado oposto, a lógica inverte. Se o limite é 229, então você tem que ajustar o filtro para esperar até que "posição x < 0".
Veja o meu código como exemplo: