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++;
}
}