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

[Dúvida] a raquete não erra a bolinha

A raquete do oponente não erra a bolinha e quando coloco uma chance de errar maior a bolinha fica presa na raquetee e na parede mesmo com o codigo para fazer a bolinha não ficar presa.

o codigo esta assim:

function calculaChanceDeErrar() {
  if (pontosDoOponente >= meusPontos) {
    chanceDeErrar += 1;
    if (chanceDeErrar >= 39) {
      chanceDeErrar = 40;
    }
  } else {
    chanceDeErrar -= 1;
    if (chanceDeErrar <= 35) {
      chanceDeErrar = 35;
    }
  }
}

function bolinhaNaoFicaPresa() {
  if (xBolinha - raio < 0) {
    XBolinha = 23;
  }
}

link do jogo:

https://editor.p5js.org/vhcurydearaujo/sketches/lDoLDkln9

5 respostas

Oii, Vitor! Tudo bem?

Obrigada por fornecer um trecho do seu código. Nele pude perceber que há um erro de sintaxe. Foi definido bolinhaNaoFicaPresa() para a correção da bolinha e nele você está usando o xBolinha com o X maiúsculo, sendo que utilizamos o x minúsculo.

O JavaScript é muito sensível quando se trata de sintaxe no código. Sendo assim, sugiro que corrija essa parte do código.

Como está o seu código:

function bolinhaNaoFicaPresa() {
  if (xBolinha - raio < 0) {
    XBolinha = 23;
  }
}

Com correção:

function bolinhaNaoFicaPresa() {
  if (xBolinha - raio < 0) {
    xBolinha = 23;
  }
}

Feito isso, revise novamente todo o projeto para ter certeza de que está tudo certo para prosseguir com as aulas.

Espero que dê certo! Continue interagindo no fórum compartilhando suas dúvidas, sugestões e feedbacks.

Bons estudos, Vitor!

oi

fiz isso e mesmo assim não deu certo ou a raquete não erra a bolinha ou quando ela errar a bolinha fica presa atras da raquete

link do jogo

https://editor.p5js.org/vhcurydearaujo/sketches/lDoLDkln9

Oii, Vitor! Tudo bem?

Desculpas pela demora para te dar um retorno, estava fazendo alguns testes.

Bom, vamos tentar outra alternativa e para isso é preciso realizar algumas modificações no seu código.

  • Pelo que pude observar, a Raquete do oponente nunca errava, pois a função marcaPonto não estava sendo inicializada, devido aos ângulos estarem próximos da borda. Sendo assim, essa é a primeira modificação que faremos:
function marcaPonto() {
  if (xBolinha > 590) { // diminuimos de 600 para 590
    meusPontos += 1;
  }
  if (xBolinha < 12) { //aumentamos o ângulo de 0 para 12
    pontosDoOponente += 1;
  }
}
  • Depois precisamos adicionar parênteses () à expressão yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30; que está na função:
function movimentaRaqueteOponente() {
  velocidadeYOponente =
   ( yBolinha - yRaqueteOponente - raqueteComprimento) / 2 - 30;
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar;
  calculaChanceDeErrar();
}

Como se trata cálculo em que todas as opções serão divididas por 2, o parêntese é necessário.

  • Feito isso, é preciso alterar os parâmetros na função calculaChanceDeErrar() para que a contagem dos pontos fiquem condizentes com as alterações anteriores e passam a contar:
function calculaChanceDeErrar() {
  if (pontosDoOponente >= meusPontos) {
    chanceDeErrar += 40; //aumentamos de 1 para 40 pois a chance de errar precisa ser maior do que o diâmetro da bolinha
    if (chanceDeErrar >= 120) { //multiplicamos o 40 por 3 para a raquete do oponente tenha uma possibilidade mais aleatória 
      chanceDeErrar = 40; // quando ela chegar em 120 ela volta para 40 e repete o processo.
    }
  } else {
    chanceDeErrar -= 1;
    if (chanceDeErrar <= 1) { // mudamos tudo para 1 para ela voltar a posição original quando o oponente tiver mais pontos
      chanceDeErrar = 1; 
    }
  }
}

Após realizar as alterações, salve o jogo e teste. Com as alterações, tanto a chance de errar é inicializada e a contagem de pontos também.

Deixarei aqui o link da cópia do seu projeto que fiz para fazer os testes, caso queira copiar os códigos, fique à vontade.

Espero que dê certo. Bons estudos, Vitor!

oi, funcionou, muito obrigado, e só para saber se eu quiser que a raquete do oponente erre menos vezes oque eu tenho que mudar?

solução!

Oii, Vitor! Tudo bem?

Fico feliz que tenha dado certo! Basta você alterar o valor do if (chanceDeErrar >= 120).

Espero ter ajudado.

Abraço, Vitor!