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

[Dúvida] Tentei melhorar a dificuldade do oponente mas não consegui. Ajuda?

Boa noite pessoal! Minha primeira vez publicando aqui, eu estou iniciando agora meus estudos em programação e esse curso de lógica ta sendo meu primeiro contato real com alguma linguagem de programação, então eu tô meio perdido em algumas coisas ainda rs.

Eu vi que várias pessoas utilizaram métodos diferentes para mudar a dificuldade do oponente e tentar deixar algo mais orgânico, eu fiz testes usando quase todos que achei só que não conseguia notar uma diferença que fizesse sentido na hora do jogo, eu estou utilizando o que foi mostrado no próprio curso em um dos tópicos que é o chanceDeErrar

function movimentaRaqueteOponente(){
  velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteAltura / 2 - 30
  yRaqueteOponente += velocidadeYOponente + chanceDeErrar
  calculaChanceDeErrar();
  //limitação da movimentação da raquete do oponente para não sair da borda
  yRaqueteOponente = constrain(yRaqueteOponente, 10, 310);
}

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

E mesmo usando essa função não sinto que está orgânico, basicamente o oponente só erra pra "igualar" aos meus pontos. Algum ser tem uma dica ou sugestão? Código completo aqui

1 resposta
solução!

Olá, Yuri! Tudo bem?

Primeiramente, parabéns por estar se aventurando no mundo da programação e por já estar tentando melhorar o código do jogo Pong por conta própria, isso é um ótimo sinal!

Analisando o seu código, percebi que você está utilizando a variável chanceDeErrar para tentar tornar o comportamento do oponente mais orgânico. No entanto, a maneira como está sendo feita a atualização dessa variável pode não estar produzindo o efeito desejado.

Na função calculaChanceDeErrar(), você aumenta a chanceDeErrar se o oponente estiver vencendo e a diminui se estiver perdendo. Isso faz com que o oponente erre mais quando está à frente no placar e erre menos quando está atrás, o que pode não parecer muito orgânico.

Uma sugestão seria fazer a chanceDeErrar variar de forma mais aleatória, para que o comportamento do oponente seja menos previsível. Por exemplo, você poderia usar a função random() do JavaScript para gerar um número aleatório a cada rodada e usar esse número para ajustar a chanceDeErrar. Aqui está um exemplo de como você poderia fazer isso:

function calculaChanceDeErrar(){
  var ajuste = random(-10, 10); // gera um número aleatório entre -10 e 10
  chanceDeErrar += ajuste;
  chanceDeErrar = constrain(chanceDeErrar, 10, 90); // limita a chanceDeErrar entre 10 e 90
}

Neste exemplo, a chanceDeErrar pode aumentar ou diminuir aleatoriamente a cada rodada, tornando o comportamento do oponente mais imprevisível e, possivelmente, mais orgânico.

Espero ter ajudado, caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!