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

Curva de Dificuldade

Quando fiz o modelo do PONG no scratch eu criei uma "curva" de dificuldade para o oponente, setei que o valor que ia ser de "erro" do inimigo não seria o valor fixo em 50 como o professor fez, fiz que o valor fosse randômico entre um intervalo especifico, ou seja, não daria para prever com exatidão em que rodada da partida o adversário iria errar. Tenter refazer o comportamento randômico no JS mas não deu certo, escrevi assim:

function movimentoRaquete2(){
  yVelRaquete2=yBolinha-yRaquete2-hRaquete/2-random(-50, 50)
  yRaquete2+=yVelRaquete2;
}

No scratch eu fiz com que o numero aleatório fosse gerado a cada hit que a bolinha dava na raquete do adversário, então se tornou algo sutil, já aqui no JS ficou parecendo que a barrinha está completamente louca nas drogas, pois o random roda por segundo. Tem como eu ainda gerar o numero aleatório mas que não seja calculado por segundo, e sim quando um evento ocorrer?

Segue meu Código do JS:(Raquete1=Jogador; Raquete2=Computador)

'Parâmetros do Frame-Define tamanho da tela do jogo'
let xFrame=600;
let yFrame=400;

'Parâmetros Iniciais Bola-Define parâmetros da bola'
  'Variavel Fixa-Se alterar essas variáveis altero a maior parte do projeto"
let diametroBolinha = 15;
  'Variavel Dinâmica-Variaveis que dependem de valores padrão'
let xBolinha = xFrame/2;
let yBolinha = yFrame/2;
let raioBolinha=diametroBolinha/2

'Velocidade Bola'
  'Variavel Fixa'
let xVelB = 4
let yVelB = 4

'Parametros Iniciais Raquete'
  'Variavel Fixa'
let xRaquete1=5
let wRaquete = 10
  'Variavel Dinâmica'
let hRaquete = yFrame/5
let xRaquete2=xFrame-wRaquete-5
let yRaquete1 = yFrame*0.4
let yRaquete2 = yFrame*0.4
let yVelRaquete2

'Colisão'
let hit = false;

function setup() {
  createCanvas(xFrame,yFrame);
}

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  colisaoBorda();
  mostraRaquete();
  movimentoRaquete1();
  colisaoRaquete();
  movimentoRaquete2();

}

"Código Bolinha-código que rege o funcionamento da bolinha"
function mostraBolinha(){
  circle(xBolinha, yBolinha, diametroBolinha); 
}
function movimentaBolinha(){
  xBolinha+=xVelB;
  yBolinha+=yVelB;
}
function colisaoBorda(){
  if(xBolinha > width-raioBolinha || xBolinha < 0+raioBolinha){
    xVelB*=-1;
  }
  if(yBolinha > height-raioBolinha || yBolinha < 0+raioBolinha){
    yVelB*=-1;
  }
}

"Código Raquete-código que rege o funcionamento das raquetes"
function mostraRaquete(){
  rect(xRaquete1, yRaquete1, wRaquete, hRaquete)
  rect(xRaquete2, yRaquete2, wRaquete, hRaquete)
}
function movimentoRaquete1(){
  if (keyIsDown(UP_ARROW)){
    yRaquete1-=10;
  }
  if (keyIsDown(DOWN_ARROW)){
    yRaquete1+=10;
  }  
}
function colisaoRaquete(){
  if (xBolinha - raioBolinha < xRaquete1 + wRaquete && yBolinha - raioBolinha < yRaquete1 + hRaquete && yBolinha + raioBolinha > yRaquete1){
    xVelB*=-1
  }
}
function movimentoRaquete2(){
  yVelRaquete2=yBolinha-yRaquete2-hRaquete/2-30
  yRaquete2+=yVelRaquete2
}
1 resposta
solução!

Fala, Gustavo! Tudo bom contigo?

Acredito que isso vai ficar melhor quando for criado a função para o erro da raquete do oponente.

Temos algumas discussões aqui no fórum sobre essa possibilidade de erro e pode te dar uma visão bacana de como implementar

Qualquer dúvida nos procure!

Um abraço