Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Oponente nunca erra e dúvida quanto a parte da explicação

Possuo as seguintes observações a serem feitas:

1) Oponente nunca erra bolinha, bolinha colide sempre no mesmo ponto da raquete do oponente;

1.1) Ao definir como a raquete do oponente irá se mover, pela explicação dada, a variável raqueteComprimento usada na função de movimentaRaqueteOponente deveria ser raqueteAltura, não?

1.2) Independente disto, na função está-se definindo a velocidade do movimento como uma posição com distância fixa da posição da bolinha. O fato de usar a metade do comprimento só faz com que a bolinha fique no meio da raquete, e o -30 aqui não fez tanto sentido porque simplesmente está deslocando a raquete em -30 em seu eixo y, algo que ficará constante. Acredito que a forma mais correta seria que a velocidade da raquete fosse constante e ele tentasse se mover de acordo com o sinal da movimentação vertical da bolinha, não?

1.3) Ressalta-se que no script demonstrado não foi feita checagem quanto a limites máximos de movimento nem da minha raquete, nem da raquete do oponente, quem sabe fosse interessante implementar isto para que as raquetes não passem da área do jogo, por exemplo:

function movimentaMinhaRaquete() {
  if (keyIsDown(UP_ARROW) && yRaquete >= 0) {
    yRaquete1 -= 10;
  } else if (keyIsDown(DOWN_ARROW) && yRaquete <= (height - raqueteAltura)) {
    yRaquete1 += 10;
  }
}

2) Por que não colocar a verificação do ponto junto da verificação da colisão nas bordas? Por exemplo:

function verificaColisaoBorda() {
  if (xBolinha + raio > width) {
  // Bateu na borda direita
    pontos1++;
    velocidadeXBolinha *= -1;
  } else if (xBolinha - raio < 0) {
  // Bateu na borda esquerda
    pontos2++;
    velocidadeXBolinha *= -1;
  }
  if (yBolinha + raio > height || yBolinha - raio < 0) {
    velocidadeYBolinha *= -1;
  }
}
1 resposta
solução!

Olá Eugenio, tudo bem com você? Espero que sim.

Agradeço a sua paciência por aguardar uma resposta para o seu tópico.

Tomei a liberdade de editar o seu tópico para que o código fique em destaque, apenas fiz o seguinte:

  • Selecionei o código compartilhado no fórum.
  • Nas ferramentas do campo O que você acha disso? cliquei na sétima ferramenta de nome Inserir bloco de código.

Dessa forma o seu código pode ficar formatado certinho e todos podem usufruir dele tranquilamente.

1. Com base na forma de construção das funcionalidades de tanto a bolinha quanto da raquete do oponente esse resultado será realmente sempre constante, pelo fato de trata-se de valores estáticos.

1.1. Você está certo! Este é um ponto em que visamos modificar, embora não afete o funcionamento do jogo já foi repassado para o time de conteúdo, se observar a transcrição da aula também está descrito “altura/2”.

1.2. Essa estrutura de movimento é mais um ponto que vamos solucionar, contudo, um dos nossos monitores desenvolveram uma função onde esse erro de movimento acontece de uma forma condizente para um jogo de Pong, com isso, deixo o link de recomendação do tópico em questão:

1.3. De fato, é interessante acrescentar um limite para que as raquetes fiquem contidas dentro da tela, parabéns pela iniciativa e obrigado pelo feedback, repassaremos para o time de conteúdo onde sua proposta será analisada.

2.0. Sua forma de desenvolver está correta, podemos sim realizar dessa forma, o método empregado pelo instrutor decidiu separar em duas funções por um fator de leitura do código, deixando mais limpo e organizado.


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

Abraços e bons estudos!

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