Olá a todos, terminei recentemente o meu projeto do pong, e senti que o mesmo estava meio cru, e que poderia ser melhorado em alguns aspectos, vagando pelos forum, vi que muitos tinham realizados correções e adições muito boas aos seus projetos e graças a comunidade consegui melhorar meu código e jogo para que ficasse mais fluido e gostaria de um feedback para algo mais que possa ser melhorado ou até adicionado para deixa-lo melhor
Segue o código abaixo:
//Variáveis da bolinha
let xBall = 300;
let yBall = 200;
let diameter = 15;
let ray = diameter / 2 ;
//Variáveis da raquete
let xSpeedOfTheBall = 5;
let ySpeedOfTheBall = 5;
let lengthRacket = 8;
let heightRacket = 70;
let xRacket = 2;
let yRacket = 150;
//Variáveis do Oponente
let xEnemyRacket = 590;
let yEnemyRacket = 150;
let yEnemySpeed;
//Variáveis de colisão
let collide = false;
//Variáveis dos pontos
let myPoints = 0;
let enemyPoints = 0;
//Variáveis dos sons
let racketSound;
let pointSound;
let soundtrack;
//Variáveis dos erros da IA
let missChance = 0;
//Preset dos sons do jogo
function preload(){
soundtrack = loadSound("soundtrack.mp3");
pointSound = loadSound("pointSound.mp3");
racketSound = loadSound("racketSound.mp3");
}
//Criação do Plano de fundo
function setup() {
createCanvas(600, 400);
soundtrack.loop();
}
//Organização de funções
function draw() {
background(0, 139, 139);
back();
Ball();
ballMov();
ballCollide();
Racket(xRacket, yRacket);
racketControl();
enemyRacket(xEnemyRacket, yEnemyRacket);
enemyRacketMovement();
racketCollide(xEnemyRacket, yEnemyRacket);
racketCollide(xRacket, yRacket);
scoreboard();
scorePoints();
}
//Função da Bolinha
function Ball(){
fill(color(255, 255, 0));
circle(xBall, yBall, diameter);
}
//Movimentação da bolinha
function ballMov(){
xBall += xSpeedOfTheBall;
yBall += ySpeedOfTheBall;
}
//Colisão da Bolinha
function ballCollide(){
if(xBall + ray > width || xBall - ray < 0){
xSpeedOfTheBall *= -1;
}
if(yBall + ray > height || yBall - ray < 0){
ySpeedOfTheBall *= -1
}
}
//Criação da raquete
function Racket(x, y) {
stroke(0),
fill(color(0, 0, 255))
rect(x, y, lengthRacket, heightRacket);
}
//Criação da raquete inimiga
function enemyRacket(x, y) {
stroke(0),
fill(color(255, 0, 0))
rect(x, y, lengthRacket, heightRacket);
}
//Controles da raquete
function racketControl(){
if(keyIsDown(UP_ARROW) && yRacket >= 0){
yRacket -= 8;
}
if(keyIsDown(DOWN_ARROW) && yRacket <= (400 - heightRacket)){
yRacket += 8;
}
}
//Colisão da raquete
function racketCollide(x, y){
collide = collideRectCircle(x, y, lengthRacket, heightRacket, xBall, yBall, ray);
if (collide) {
xSpeedOfTheBall *= -1;
racketSound.play();
}
}
//Movimento da raquete oponente
function enemyRacketMovement(){
yEnemySpeed = yBall -yEnemyRacket - lengthRacket / 2 - 30;
yEnemyRacket += yEnemySpeed + missChance
calcMissChance()
}
//Placar
function scoreboard(){
stroke(255),
textAlign(CENTER);
textSize(16);
fill(color(0, 139, 139));
rect(150, 10, 40, 20);
fill(255)
text(myPoints, 170, 26);
fill(color(0, 139, 139));
rect(450, 10, 40 ,20);
fill(255)
text(enemyPoints, 470, 26);
}
//Marcar os pontos
function scorePoints(){
{
if (xBall > 590) {
myPoints += 1;
setTimeout(returnBall,0);
pointSound.play();
}
if (xBall < 10) {
enemyPoints += 1;
setTimeout(returnBall,0);
pointSound.play();
}
};
}
//Calcular chance de erro
function calcMissChance(){
if(enemyPoints >= myPoints){
missChance += 1;
if(missChance >= 39){
missChance = 40;
}
}else{
missChance -= 1
if(missChance <= 35){
missChance = 35
}
}
}
//Plano de fundo
function back(){
fill(color(0, 139, 139));
circle(300,200,100);
line(300,300,300,0);
line(300,300,300,450);
}
//Retorno da Bola ao centro
function returnBall(){
xBall = 300;
yBall = 200;
}
Sou grato a todos que possam tirar um tempinho para poderem avaliar meu código, e aos que postaram no fórum, por causa de vocês eu consegui evoluir o meu codigo base! :)