Finalizando essa primeira parte do curso, está ai meu PONG no javascript. Não darei como finalizado, pois pretendo incrementa-lo conforme for aprendendo mais.aparentemente o game está bem funcional.
usei também algumas dicas aqui do forum para melhorar a questão do bug da bolinha.
https://editor.p5js.org/gutohd25/full/SIS1HniUh
CÓDIGO:
//parametros bolinha
let xBolinha = 400;
let yBolinha = 200;
let diametro = 20;
let raio = diametro/2;
// velocidade bolinha
let vlxb = 8
let vlyb = 7
// Parametros Raquete
let xRe = 5
let yRe = 155
let cRq = 15
let alturaRq = 90
// Parametros Oponente
let xRd = 780
let yRd = 155
let chanceDerrar = 0
let velocidadeYOp;
//Placar
let jogador1 = 0
let jogador2 = 0
//Sound
let raquetada;
let ponto;
let trilha;
//librarie
let collide = false
function preload(){
trilha = loadSound("trilha2.mp3");
raquetada = loadSound("raquetada.mp3");
ponto = loadSound("ponto.mp3");
}
function setup() {
createCanvas(800, 400)
trilha.loop()
;
}
function draw() {
background(0)
showcircle();
movcircle();
cborda();
raquetes(xRe,yRe);
raquetes(xRd, yRd);
movRaqEsq();
//cRaq();
collide2d(xRe,yRe);
collide2d(xRd,yRd);
oponente();
showplacar();
pontuacao();
desbugaBolinha ();
}
function showcircle(){
fill(color(102,255,178));
circle (xBolinha,yBolinha,diametro);
fill(255)
}
function movcircle(){
xBolinha = xBolinha + vlxb;
yBolinha = yBolinha + vlyb;
}
function cborda(){
if (xBolinha + raio > width| xBolinha - raio <0)
vlxb*=-1;
if (yBolinha + raio > height || yBolinha - raio <0)
vlyb *=-1;
}
function raquetes(x,y) {
rect(x,y ,cRq ,alturaRq);
}
function movRaqEsq(){
if (keyIsDown(UP_ARROW)) {yRe -=8 ;}
if (keyIsDown(DOWN_ARROW)) {yRe +=8;}
}
function cRaq(){
if (xBolinha - raio < xRe + cRe
& yBolinha - raio < yRe + alturaRq
& yBolinha + raio > yRe ) {
vlxb *=-1
}}
function collide2d(x, y) {
// calculo variavel
collide = collideRectCircle(x, y, cRq, alturaRq , xBolinha, yBolinha, diametro);
// operacao
if (collide){
vlxb*=-1
raquetada.play();
}
}
function oponente(){
velocidadeYOp = yBolinha - yRd - alturaRq /2;
yRd += velocidadeYOp + chanceDerrar;
calculochanceDerrar();
}
function showplacar(){
textAlign(CENTER);
textSize(25);
fill(color(192, 192 ,192));
rect(185, 4 ,30,26);
rect(585, 4 ,30,26);
fill(color(102,255,178));
text(jogador1, 200 , 26);
fill(color(102,255,178));
text(jogador2, 600 , 26);
fill(255)
}
function pontuacao(){
if (xBolinha > 785 ){
jogador1 +=1;
ponto.play();
}
if (xBolinha < 12 ){
jogador2 +=1;
ponto.play()
;
}
}
function calculochanceDerrar(){
if (jogador2 >= jogador1){
chanceDerrar +=1}
else {chanceDerrar -=1}
if (chanceDerrar>=65){chanceDerrar = 50}
if (chanceDerrar<=30){chanceDerrar = 40 }
}
function desbugaBolinha(){
if (xBolinha - raio < 0 ){xBolinha = 40}
if (xBolinha + raio > 800 ){xBolinha = 760}
}