1
resposta

oponente nunca perde ou sempre perde

olá, Ao fazer o código reparei que a raquete do oponente funciona num padrão: ou nunca perde ou sempre perde, dependendo do valor que eu colocar onde atualmente está 30. Ex: velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;

Testei vários valores e o resultado sempre foi esse, mesmo usando o código do instrutor. Como vocês fizeram?

function setup() {
  createCanvas(600, 400);
}

// variaveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;

// velocidade da bolinha
let velocidadeYBolinha = 6;
let velocidadeXBolinha = 6;

//variaveis raquete
let xRaquete = 5;
let yRaquete = 150;
let larguraRaquete = 10;
let alturaRaquete = 70;

// variaveis raquete oponente
let xRaqueteOponente = 595 - larguraRaquete;
let yRaqueteOponente = 150;
let velocidadeYRaqueteOponente; 

let colidir = false;

//placar do jogo
let meusPontos = 0;
let pontosOponente = 0;
let xPlacarJogador = 200;
let yPlacar = 26;
let xPlacarOponente = 400;

//funcao geral
function draw() {
  background(0);
  desenhaBolinha();
  velocidadeBolinha();
  verificaBordaBolinha();
  desenhaRaquete(xRaquete, yRaquete);
  desenhaRaquete(xRaqueteOponente, yRaqueteOponente);
  movimentaRaquete();
  movimentaRaqueteOponente();
  //verificaColisaoRaquete();
  verificaColisaoDaMinhaBiblioteca(xRaquete, yRaquete);
  verificaColisaoDaMinhaBiblioteca(xRaqueteOponente, yRaqueteOponente);
  incluiPlacar (meusPontos, xPlacarJogador, yPlacar);  
  incluiPlacar (pontosOponente, xPlacarOponente, yPlacar);
  ganhaPontos();
}
//funcoes bolinha
function desenhaBolinha() {
  circle(xBolinha, yBolinha, diametro);
}
function velocidadeBolinha(){
  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
}

function verificaBordaBolinha(){

   if (xBolinha > width - raio || xBolinha < 0 + raio){
    velocidadeXBolinha *= -1;
  }
  if (yBolinha > height - raio || yBolinha < 0 + raio){
    velocidadeYBolinha *= -1;
  }
}

//funcoes raquete
function desenhaRaquete(x,y){
  rect(x, y, larguraRaquete, alturaRaquete)
}

function movimentaRaquete(){

  if (keyIsDown(UP_ARROW)) {
    yRaquete -= 5;
  }

  if(keyIsDown(DOWN_ARROW)) {
    yRaquete += 5;
  }
}
function verificaColisaoRaquete(){
  if(xBolinha - raio < xRaquete + larguraRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete){
    velocidadeXBolinha *= -1;
  }
}
function verificaColisaoDaMinhaBiblioteca(x,y) {
  colidir = collideRectCircle(x,y,larguraRaquete,alturaRaquete,xBolinha,yBolinha,diametro);

  if(colidir){
   velocidadeXBolinha *= -1;
  }
}
function movimentaRaqueteOponente(){
  velocidadeYRaqueteOponente = yBolinha - yRaqueteOponente - alturaRaquete/2 - 20;
  yRaqueteOponente += velocidadeYRaqueteOponente;
}
// posicao placar jogador - 278 , 26. oponente - 378,26;
function incluiPlacar (pontos, x, y){
  fill(255);
  text(pontos, x, y);
}

function ganhaPontos() {
  if(xBolinha - raio < 1){
    pontosOponente++;
  }
  if(xBolinha + raio > 599) {
    meusPontos++;
  }
}
1 resposta

Olá, João! Tudo bem contigo?

Realmente, a raquete do oponente possui um padrão, pois no curso o foco foi trabalhar a lógica de programação, porém o p5js é um mundo que dá diversas possibilidades para explorar.

Fica o desafio e a criatividade para criar outras funcionalidades da raquete!!!

Bons estudos, João!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software