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!!
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: