1
resposta

[Bug] Consegui fazer porém com alguns bugs na pontuação

As vezes o placar não conta e as vezes um ponto acaba valendo dois

https://scratch.mit.edu/projects/819370007

1 resposta

Opa Luiz, tudo bem?

Esse não é um problema de 7 cabeças, podemos contornar com algumas modificações no nosso código de pontuação!

Para resolvermos o nosso problema primeiro centralizamos a bolinha, dessa forma a representação dela na tela do jogo vai ser exata:

Inicio da transcrição. Imagem de um círculo verde e um ícone de mouse em forma de punho sobre ele. É possível visualizar uma cruz azul no centro do círculo e o ícone de um alvo preto sobre ele. Fim da Transcrição.

Para evitarmos que contemos vários pontos com a bolinha presa, mudaremos a sua posição para frente da raquete quando ficar presa, além disso, aproveitaremos para contarmos os pontos, para isso usaremos os seguintes blocos:

  • No bloco de código da pontuação adicionaremos uma condição quando a bolinha ficar presa atrás da raquete, por meio do bloco se, senãoe posição x < -230, essa condição possibilitará que manejemos a posição e a pontuação da bolinha:

Inicio da transcrição. Captura de tela de um código do scratch, o código está incompleta e é uma mistura de vários blocos diferentes, este código explica que ao clicar na bandeira sempre será esperado até que a posição horizontal seja menor que menos duzentos e trinta para um ponto para o oponente, tocar o som de ponto e por fim é colocado uma condição, caso a posição horizontal seja menor que menos duzentos e trinta algo que não está descrito ainda vai acontecer, se não outra coisa ainda não descrita vai acontecer. Fim da transcrição.

  • Adicionaremos o bloco de movimento “adicione 10 a x” na primeira parte da condição, além disso moveremos o bloco “adicione 1 a pontos do mano” para a segunda linha. Sendo assim moveremos a bolinha no eixo x quando estiver atrás da raquete, caso ela tenha passado desse ponto contamos um ponto ao oponente:

Inicio da transcrição. Captura de tela de um código do scratch, o código é uma mistura de vários blocos diferentes. Juntos os códigos fazem com que ao clicar na bandeira sempre esperaremos até que a posição horizontal seja menor que menos duzentos e trinta para aumentar em um o ponto do oponente e tocar o som de ponto. Por fim é colocado uma condição, caso a posição horizontal seja menor que menos duzentos e trinta adicionaremos 10 para a posição horizontal, se não adicionaremos 1 ponto para o oponente. Fim da transcrição.

  • Por fim, para que essa mudança da bolinha não seja imediata e leve um certo tempo para ser executada, usaremos o bloco de tempo “espere 0.5 seg":

Inicio da transcrição. Captura de tela de um código do scratch, o código é uma mistura de vários blocos diferentes. Juntos os códigos fazem com que ao clicar na bandeira sempre esperaremos até que a posição horizontal seja menor que menos duzentos e trinta para aumentar em um o ponto do oponente e tocar o som de ponto. Após tocar o som de ponto esperaremos quinhentos milissegundos para que aconteça uma condição. A condição diz que caso a posição horizontal seja menor que menos duzentos e trinta adicionaremos 10 para a posição horizontal, se não adicionaremos 1 ponto para o oponente. Fim da transcrição

Dessa forma o nosso código está completo! Sempre tocaremos o som de ponto assim que a posição da bolinha passar de -230 como normalmente fazíamos, porém esperaremos 0.5 segundos para avaliar se a bolinha ainda está presa na raquete, caso ela esteja movemos ela para frente, se não contamos o ponto.

Fazemos a mesma mudança para o código do jogador:

Inicio da transcrição. Captura de tela de um código do scratch, o código é uma mistura de vários blocos diferentes. Juntos os códigos fazem com que ao clicar na bandeira sempre esperaremos até que a posição horizontal seja maior que duzentos e trinta para aumentar em um o ponto do oponente e tocar o som de ponto. Após tocar o som de ponto esperaremos quinhentos milissegundos para que aconteça uma condição. A condição diz que caso a posição horizontal seja menor que duzentos e trinta adicionaremos 10 para a posição horizontal, se não adicionaremos 1 ponto para o jogador. Fim da transcrição.

Link do projeto funcionando:

Se precisar de ajuda conte conosco!

Tenha um bom dia e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓