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

Pong Finalizado no Scratch (com alguns bugs)

Olá, pessoal

Finalizei o meu jogo Pong no Scratch, porém ele ainda apresenta algumas falhas: -Quando a bolinha toca nas pontas das raquetes elas grudam e não saem mais, e consequentemente o placar dispara a pontuação sem parar. -Também ocorre algumas vezes problemas nas contagens de pontos, contando pontos duplos.

Eu alterei o tamanho dos atores e as coordenadas diversas vezes, mas ainda não consegui deixar o jogo funcionando perfeitamente. Vou deixar o link do meu projeto aqui para que vocês possam ver, e quem puder me ajudar nos bugs serei muito grato!!! :)

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

3 respostas

Bom dia Iago, tudo certo?

Obrigado pela paciência no aguardo de uma resposta!

Primeiramente, gostaria de parabenizá-lo pelo seu projeto, tanto os sons quanto o design estão ótimos!

O Jogo:


Pontos Duplos:

Quanto aos pontos duplos, não me ocorreu em nenhum momento ao testar o seu código, mas o que eu recomendo é:

1.Retire o contorno da bolinha

Captura de tela retirada do scratch, tela de edição de imagem com uma bolinha colorida em um passo a passo. Primeiro passo na área de atores com a bolinha selecionada. Segundo passo a aba de fantasias está selecionada. Terceiro passo na área de edição está escrito contorno e o símbolo de um quadrado branco com um risco vermelho na diagonal

2.Aumente o tamanho da bolinha:

Captura de tela do scratch da área dos atores, com o ator Bola selecionado e rodeado por um quadrado que cada extremidade e centros dos seus lados possui uma bolinha menor usada para ampliar ou contrair o ator.

3.Reposicione o centro da bolinha para que ela estivesse alinhada com a do plano.

Captura de tela da aba de fantasias com uma bolinha e seu centro indicado por um símbolo de positivo ligeiramente deslocado do centro do plano indicado por um alvo

4.No código de pontos do nosso jogo, faça alguns testes movendo a bolinha e usando a posição horizontal (eixo x) dela como referencial para definir aonde será contabilizado os pontos. Usando como exemplo o 226 para o jogador e -226 para o oponente, isso vai variar por conta das medidas diferentes que definimos.

Captura de tela do scratch, o ator bolinha está selecionado juntamente com a aba de código. Na tela do jogo há uma seta que parte da posição x do ator, que é -226 e aponta até a bolinha na extremidade. Além disso, na aba de código há 2 códigos semelhantes e grifados em vermelho na mesma parte. Um dos códigos diz que quando a bandeira for clicado sempre esperar até que a posição x é menor que menos duzentos e vinte e seis adicione um ponto aos pontos do oponente e toque o som de ponto. A parte de espere até que a posição x seja menor que menor que menos duzentos e vinte e seis está grifada

  • Isso ocorre pelo fato de não definirmos um ponto exato aonde a bolinha ao bater conta o ponto. Na verdade, o que fazemos é escolher uma coordenada a partir da qual a bolinha contará os pontos, ou seja, se os pontos estão sendo contados em maior quantidade, a coordenada está mais afastada do que deveria da borda, fazendo a bolinha contar os pontos pela quantidade de tempo que ela ultrapassa essa coordenada.

solução!

Raquete prendendo bolinha:

  • No ator bolinha, remova o bloco “aponte para a direção * (-1)”. Para acrescentarmos outros blocos, essa é uma das formas de resolver o bug da pontuação infinita e do travamento da bolinha.

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 forma de resolver:

Podemos tomar algumas medidas:

  • Colocar a raquete contra a parede para não ter chance de passar para atrás dela;
  • Modificar o código de colisão fazendo com que ao tocar na raquete a posição x da bolinha vá para frente da raquete e mude de direção:

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 quinze e aponte para a direção inversa menos um e toque o som de raquetada. 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 quinze positivo.

Ou

Captura de um código do scratch, o código descreve que quando a bandeira for clicada sempre espere até que a posição horizontal seja menor que menos duzentos e vinte e oito e toque o som de ponto, enquanto isso espere até 1 segundo e se a posição ainda for menor que menos duzentos e vinte e oito adicione vinte ao eixo horizontal e adicone  aos pontos do oponente

Quando a bolinha fica presa ela está fixada em um posição, fazendo com os pontos e o som de pontos sejam contabilizados várias vezes.

O código primeiramente irá verificar se a bolinha chegou até o local onde os ponto são contados, se isso se comprovar, o som de ponto é tocado.

A parte de esperar vai basicamente ver se a bolinha ainda está naquela posição, se ela estiver a sua posição x (horizontal) receberá um valor que retire ela de lá e a partir desse momento o ponto é contado, evitando que seja repetido várias vezes.


Se precisar de ajuda com qualquer dúvida ou problema fico à disposição, conte com a gente!

Um bom dia para você e bons estudos.

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

Boa tarde, Gabriel! Muito obrigado pela sua ajuda!