Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Dúvida] Bolinha fica bugada na raquete quando encosta

Quando a bolinha se encontra com a raquete ela não muda de posição, fica parada marcando pontos. Podem me ajudar? https://scratch.mit.edu/projects/766025425

5 respostas

Olá, Karoline, tudo bem?

Para resolver a questão da bolinha ficar grudada na raquete quando há a colisão. Podemos implementar um código diferente na colisão, onde sempre que tocar na raquete a bolinha mudará para uma posição aleatória a frente da raquete. Ao ser “lançada” mais a frente, ela não mais ficará presa na raquete.

• No ator bolinha, remova o bloco “aponte para a direção * (-1)”.

Captura de imagem do jogo Pong no Scratch mostrando o bloco aponte para a direção vezes menos abre parênteses menos um fecha parênteses sendo retirado. O aponte para direção direção vezes menos um está destacado em vermelho

• Remova também o bloco verde com o operador “ou” e substitua pelo bloco “tocando em raquete 2”.

Captura de imagem do jogo Pong no Scratch mostrando, quando a bandeira verde que inicia o jogo for clicada, sempre, se tocando em raquete 2 então, volte. O bloco, se tocando em Raquete2 ? então, está destacado em vermelho

• Acrescente o bloco “aponte para a direção”, o bloco “número aleatório entre” e coloque os números -30 e -125. Essa opção terá um resultado semelhante ao do professor quando ele coloca o bloco direção * -1, a diferença é que, a bolinha a partir de agora voltará para uma direção aleatória resolvendo o bug da pontuação duplicada e da bolinha ficar presa na raquete.

Captura de imagem do jogo Pong no Scratch mostrando quando a bandeira verde que inicia o jogo for clicada, sempre, se tocando em raquete 2 então, acrescente aponte para a direção e número aleatório entre -30 e -125, este bloco está destacado em vermelho

• Repita no código da Raquete, alterando os ângulos para 30 e 125.

Captura de imagem do jogo Pong no Scratch mostrando quando a bandeira verde que inicia o jogo for clicada, sempre, tocando em raquete2 então, aponte para a direção, número aleatório entre -30 e -125, toque o som acertar bolinha, se, tocando em raquete então, aponte para direção, número aleatório entre 30 e 125, toque o sim acertar bolinha, volte. O segundo bloco está destacado em vermelho

Outra opção é jogar a bolinha para uma posição logo a frente da raquete.

Captura de tela retirada do scratch, na imagem há um código que diz que quando a bandeira for clicada sempre que a bolinha estiver tocando em minha raquete então mude a posição horizontal da bolinha para menos duzentos e cinco e aponte para a direção inversa menos. A outra parte do código se refere ao mesmo modelo só que tocando na raquete do oponente ela mudará a posição horizontal da bolinha para duzentos e dez positivo.”

Além dessas duas opções, deixo também uma outra sugestão de ao colidir na raquete, ela faz uma verificação se permanece na mesma posição, ela será movida para outro lugar. Você pode dá uma olhada nesse tópico:

Quanto a pontuação notei que na contagem dos meus pontos na verificação da posição x, você coloca posicao x < 229 quando deveria ser > (maior que). Além disso, o fato de haver divergência no tamanho da bolinha, pois como é nós que criamos e não há um padrão, ela começa a pontuar na posição -223/223 . O código corrigido ficará assim:

Captura de tela da ferramenta Scratch. Há um bloco de evento “quando bandeira verde clicar”, em seguida há um bloco de controle “sempre…seta indicando repetição”, dentro desse bloco há um bloco de controle “’espere até que’ ‘bloco de operador < -223’ , dentro dele há um  bloco de ‘posição x’ “ . Em seguida há um bloco de controle “adicione 1 a “, bloco de variável “opponent points”. Fecha bloco. Inicia um novo bloco de evento, “quando a bandeira verde for clicada”. Em seguida um bloco de controle “sempre…seta indicando repetição” dentro dele há um bloco de controle “’espere até que’ ‘bloco de operador > 223’ , dentro dele há um  bloco de ‘posição x’ “. Por fim, um bloco de controle “adicione 1 a”, bloco de variável “my_points”

[...]

solução!

Notei, que a posição da pontuação no canvas está trocada, podemos notar nessa imagem:

Print do Scratch. A bolinha de cor lilás, o placar do adversário pontua ao errar.

Ou seja, mesmo que o código esteja correto, para o jogador é como se tivesse pontuando para o adversário. Para isso, é só trocar a posição com o mouse.

Lembre-se que ponto do oponente quando a posição x for menor, quer dizer que a partir de -223 vai contar, ou seja, -224, -225… levando em conta o plano cartesiano.

Print da ferramenta Sratch. Há um preview do jogo pong, no background há um plano cartesiano com as coordenadas Y lendo de cima para baixo, os valores são (x:0,y:180), (x:0, y:0)(x:0,y:-180). E coordenada X lendo da esquerda para direita, os valores são (x:-240, y:0), (x:0, y:0), (x:240,y:0

Espero ter ajudado.

Reforço que estou à disposição para tirar dúvidas.

Abraços.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

O meu tem hora que dá erro e a bolinha volta pro início, tem hora que agarra na raquete e não marca pontuação.

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

Olá, Fernando, tudo bem?

Peço, por gentileza, que abra um novo tópico com a sua dúvida. Isso ajudará também outros alunos que possam ter o mesmo problema que o seu.

Abraços!

Já abri e resolveram. rigado