xxxxxxxxxx
169
/*
Artur dos Santos Shon(SkyArtur)
Estudante Alura - abril - 2022
Estudando, testando, arriscando...
===============VARIÁVEIS DE ELEMENTOS DO JOGO===================.
BOLINHA*/
let xBall = 300;
let yBall = 200;
let dBall = 30;
let radBall = dBall / 2;
let speedBall = 5;
let speedX = speedBall;
let speedY = speedBall;
// PLAYERS
let xPlayer1 = 5;
let xPlayer2 = 585;
let yPlayer1 = 150;
let yPlayer2 = 150;
let wPlayers = 10;
let hPlayers = 100;
let speedYPlayer2;
// COLISÃO E ERRO DO JOGADOR 2
let collision = false;
let player2Err = 0;
// PONTOS
let pntsPlayer1 = 0;
let pntsPlayer2 = 0;
// SONS
let points;
let touch;
let soundtrack;
function preload(){
points = loadSound("ponto.mp3");
touch = loadSound("raquetada.mp3");
soundtrack = loadSound("trilha.mp3");
}
/*============== CRIAÇÃO DE ELEMENTOS DO JOGO ====================*/
class CreateElements{
constructor(){
fill(color("#FFF8DC"));/*<<==== Adicionando cor aos elementos*/
this.ball = circle(xBall, yBall, dBall);
fill(color("#4169E1"))
this.player_01 = rect(xPlayer1, yPlayer1, wPlayers, hPlayers);
fill(color("#DC143C"))
this.player_02 = rect(xPlayer2, yPlayer2, wPlayers, hPlayers);
}
/*Função para possibilitar o erro do oponente*/
chanceToMiss(){
if(pntsPlayer2 >= pntsPlayer1){
player2Err += 1
if(player2Err >= 39){
player2Err = 40
}
}else{
player2Err -= 1
if(player2Err <= 35){
player2Err = 35
}
}
}
/*Função para movimentar a bolinha.*/
moveBall(){
xBall += speedX;
yBall += speedY;
}
/*Função para movimentar a raquete1 (Esquerda).*/
movePlayer1(){
if(keyIsDown(87)){
yPlayer1 -= 10;
}
if(keyIsDown(83)){
yPlayer1 += 10;
}
}
/*Função para movimentar a raquete2 (Direita).*/
movePlayer2(){
if(keyIsDown(UP_ARROW)){
yPlayer2 -= 10;
}
if(keyIsDown(DOWN_ARROW)){
yPlayer2 += 10;
}
}
/*Função para movimentar a raquete2 (Direita) automaticamente.*/
movePlayer2Auto(){
speedYPlayer2 = yBall - yPlayer2 - hPlayers / 2 - 30;
yPlayer2 += speedYPlayer2 + player2Err;
this.chanceToMiss();
}
/*Função para verificar a colisão da bolinha com a borda.*/
ballCollisionEdge(){
if(xBall + radBall == width || xBall - radBall == 0){
speedX *= -1;
}
if(yBall + radBall == height || yBall - radBall == 0){
speedY *= -1;
}
}
/*Função para verificar a colisão com a raquete.*/
playersCollision(x, y){
collision = collideRectCircle(x, y, wPlayers, hPlayers, xBall, yBall, (radBall + wPlayers));/* <<==== Para corrigir o toque da bolinha*/
if(collision){
if(xBall >= 570){
xBall = 565;
}
if(xBall <= 30){
xBall = 35;
}
speedX *= -1;
touch.play();
}
}
/*Função para colocar o placar.*/
putScoreboard(){
textAlign(CENTER)
stroke(255)
//Caixas do Placar
fill(color('#FF8C00'));
rect(130, 10, 40, 20, 5);/* <<==== Arrendondamento de borda*/
rect(430, 10, 40, 20, 5);/* <<==== Arrendondamento de borda*/
//Meus Pontos
fill(255);
textSize(16);
text(pntsPlayer1, 150, 26);
//Pontos do Oponente
fill(255);
textSize(16);
text(pntsPlayer2, 450, 26);
}
/*Função para manipular o placar*/
scorePoints(){
if(xBall >= 585){
pntsPlayer1 += 1;
points.play();
}
if(xBall <= 15){
pntsPlayer2 += 1;
points.play();
}
}
/*Função para iniciar os elementos do jogo */
launcherElements(){
this.moveBall();
this.movePlayer1();
//this.movePlayer2(); /*<<==== Modo MultiPlayer*/
this.movePlayer2Auto()
this.ballCollisionEdge();
this.playersCollision(xPlayer1, yPlayer1);
this.playersCollision(xPlayer2, yPlayer2);
this.putScoreboard();
this.scorePoints();
}
}
//===========================EXECUÇÃO=============================
function setup() {
createCanvas(600, 400);
soundtrack.loop();
}
function draw() {
background("#2E8B57");
const elements = new CreateElements();
elements.launcherElements();
}