3
respostas

[Bug] A bolinha trava na raquete

Eu consegui fazer tudo certo, mas de vez em quando a bolinha trava na raquete e faz com que vários pontos sejam ganhos de uma só vez. Eu já centralizei os atores, mas mesmo assim não deu certo.

3 respostas

Olá Pablo, como vais?

Por conta do código ser trabalhado em arquivos diferentes, poderia por gentileza em enviar o seu código completo? Dessa forma posso analisar o seu código na totalidade e simular o problema para ajudá-lo de forma mais assertiva.

Para enviar o link do seu projeto é só seguir os passos abaixo:

1. Com o projeto aberto na parte superior da tela ao centro, clique em compartilhar;

Captura de tela colorida do Scratch mostrando no lado esquerdo uma barra com o nome do arquivo “Movimento Browniano” e ao lado direito um botão retangular laranja escrito “Compartilhar”. O fundo da imagem é azul claro.

2. Você será redirecionada para outra página, nela clique no canto inferior direito em “Copiar link”, que está ao lado do botão “Adicionar ao Estúdio” ;

Captura de tela colorida  do Scratch mostrando no lado esquerdo um botão azul claro escrito “Adicionar ao estúdio” e ao lado direito outro botão azul claro escrito “Copiar Link”.

3. Cole o link do projeto aqui no fórum da Alura;

Fico à disposição.

Tenha um bom dia e bons estudos.

https://scratch.mit.edu/projects/816271178 o link do meu Pong

Opa Pablo.

Esse não é um problema de 7 cabeças, podemos contornar com algumas modificações no nosso código de pontuaçã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 < -225, 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 vinte e cinco 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 vinte e cinco 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 15 a x” na primeira parte da condição, além disso moveremos o bloco “adicione 1 a Away” 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 vinte e cinco 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 vinte e cinco adicionaremos 15 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 vinte e cinco 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 vinte e cinco adicionaremos 15 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 -225 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 vinte e cinco 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 vinte e cinco adicionaremos 15 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 ✓

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software