o código completo
//variaveis da bolinha
let xBolinha = 300; let yBolinha = 200; let diametro = 20;
//velocidade da bolinha
let velocidadeXBolinha = 5; let velocidadeYBolinha = 5;
//para bolinha nao entrar nas bordas
let raio = diametro / 2;
//variaveis da raquete
let xRaquete = 10; let yRaquete = 150;
//dimensões das raquetes
let larguraRaquete = 6; let alturaRaquete = 100; let raioDosCantos = 2.5;
let paredaRaquete = larguraRaquete/2
//variaveis da raquete do oponente
let xRaqueteOponente = 585; let yRaqueteOponente = 150;
let velocidadeYdoOponente;
let chanceDeErrar = 0;
//variavel da colisão
let colidiu = false;
// sons do jogo
let raquetada;
let ponto;
let trilha;
//pre carrega o som do jogo
function preload(){
trilha = loadSound("trilha.mp3");
ponto = loadSound("ponto.mp3");
raquetada = loadSound("raquetada.mp3")
}
//placar do jogo
let meusPontos = 0; let pontosOponente = 0;
function setup() {
createCanvas(600, 400);
trilha.loop();
}
function draw() {
background(0);
mostraBolinha();
movimentaBolinha();
verificaColisaoBorda();
mostraRaquete(xRaquete, yRaquete);
mostraRaquete(xRaqueteOponente, yRaqueteOponente);
movimentoDaRaquete();
colisaoPorBiblioteca(xRaquete,yRaquete);
colisaoPorBiblioteca(xRaqueteOponente,yRaqueteOponente);
//movimentoDaRaqueteOpomenteMultiplayer();
movimentoRaqueteOponente();
chanceDeErro(xBolinha);
//verificaColisaoComRaquete();//solução criado pelo professor
incluirPlacar();
marcaPonto()
}
//função montra a bolinha na tela
function mostraBolinha(){
circle(xBolinha,yBolinha,diametro);
}
//função comanda o movimento da bolinha
function movimentaBolinha(){
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeYBolinha;
}
//função para verificar o limite das bordas para a bolinha
function verificaColisaoBorda(){
if(xBolinha + raio > width || xBolinha - raio < 0){
velocidadeXBolinha *= -1;
}
if(yBolinha + raio > height || yBolinha - raio < 0){
velocidadeYBolinha *= -1;
}
}
//função para mostrar a raquete
function mostraRaquete(x ,y){
rect(x, y, larguraRaquete, alturaRaquete, raioDosCantos);
}
//função movimento da raquete
function movimentoDaRaquete(){
if (keyIsDown(DOWN_ARROW)) {
yRaquete += 5;
}
if (keyIsDown(UP_ARROW)){
yRaquete -= 5;
}
}
//função comanda a colisão da bola com a raquete
function verificaColisaoComRaquete(){
if (xBolinha - raio < xRaquete + larguraRaquete && yBolinha - raio < yRaquete + alturaRaquete && yBolinha + raio > yRaquete){
velocidadeXBolinha *= -1;
raquetada.play();
}
}
// função que e identifica colisão da bolinha com as raquetes
function colisaoPorBiblioteca(x,y){
colidiu = collideRectCircle(x,y,larguraRaquete, alturaRaquete,xBolinha,yBolinha,raio);
if (colidiu){
velocidadeXBolinha *= -1;
raquetada.play();
}
}
// função movimento do oponente
function movimentoRaqueteOponente(){
velocidadeYdoOponente = yBolinha - yRaqueteOponente - alturaRaquete / 2;
yRaqueteOponente += velocidadeYdoOponente + chanceDeErrar;
}
//função coloca o placar
function incluirPlacar(){
stroke(255)
textAlign(CENTER)
textSize(22);
fill(color(255,140,0))
rect(130,3,40,30,10);
fill(255);
text(meusPontos,150, 25);
fill(color(255,140,0))
rect(430,3,40,30,10);
fill(255);
text(pontosOponente,450, 25);
}
//função para marcas os pontos do jogo
function marcaPonto(){
if (xBolinha > 594){
meusPontos ++
ponto.play();
}
if (xBolinha <6){
pontosOponente ++
ponto.play();
}
}
//função movimento da raquete do opomente com 'W' e 'S'
function movimentoDaRaqueteOpomenteMultiplayer(){
if (keyIsDown(83)) {
yRaqueteOponente += 5;
}
if (keyIsDown(87)){
yRaqueteOponente -= 5;
}
}
function chanceDeErro(x){
if (x <25){
chanceDeErrar = random(-80,80)
}
}