I am trying to code a pong game. Even when following tutorials, the same bug appears: if you loose on the first try, the ball will never bounce on the rectangle. But if you win, the ball will bounce even when the rectangle is not there… can someone help? Thanks!
(the notes are in Portuguese, my first language, sorry)
boolean gameStart = false;
float xVACA, yVACA, moveXVACA, moveYVACA, diam; //variáveis vaca
float xPlat, yPlat; //variáveis plataforma, localização
float larguraPlat, alturaPlat; // variáveis plataforma, tamanho
int pontos; //pontuação
PShape vaca; // carrega imagem da bola 1
PImage fundo;
void setup () {
size (500, 600);
background(0);
pontos = 0;
vaca = loadShape (“vaca.svg”);
fundo = loadImage (“fundo.jpg”);
//sorteia valor aleatório para a coordenada x da bola entre 0 e largura da janela
xVACA = random(width);
//sorteia valor aleatório para a coordenada y da bola entre 0 e 20 px antes da raquete
yVACA = random(0,height-90);
//sorteia algum valor entre -10 e 10 para incrementar a posição y da bola, definindo a “velocidade” de x
moveXVACA = 5;
//sorteia algum valor entre -10 e 10 para incrementar a posição y da bola, definindo a “velocidade” de y
moveYVACA = 5;
diam = 80; //diâmetro da bola
larguraPlat=200;
alturaPlat=50;
xPlat = width/2; //onde começa coordenada x da raquete inferior
yPlat = height-(alturaPlat/2 + 20); //onde começa coordenada y da raquete inferior, com uma distância do final da tela
rectMode (CENTER); //muda localização dos parâmetros da função rect()para centro do retângulo
}
void draw () {
background(fundo);
fill (0);
textSize (20);
text (pontos, width/2, 30);
shapeMode (CENTER); // inicia o desenho da bola pelo centro
//sobe a imagem da primeira bola
shape (vaca, xVACA, yVACA, diam,diam);
//desenha retângulo que acompanha movimento do mouse
noStroke ();
fill (253, 185, 200);
rect(mouseX, yPlat, larguraPlat, alturaPlat);
if (gameStart) {
//incrementa as posições x e y da bolinha
xVACA = xVACA + moveXVACA;
yVACA = yVACA + moveYVACA;
//faz com que a bola “quique” na raquete
if (xVACA >= (xPlat - larguraPlat/2) && xVACA <= (xPlat + larguraPlat/2) &&
( (yVACA+diam/2) >= (yPlat - alturaPlat/2) || (yVACA) >= (yPlat - alturaPlat/2) || (yVACA+diam/4) >= (yPlat - alturaPlat/2))) {
moveYVACA = -moveYVACA;
moveXVACA = -moveXVACA;
xVACA = xVACA + moveXVACA;
yVACA = yVACA + moveYVACA;
pontos = ++pontos; }
//faz com que a bola "quique" nas paredes
else if (yVACA < 0) {
moveYVACA = -moveYVACA;
}
if (xVACA < 0 || xVACA > width) {
moveXVACA = -moveXVACA;
}
if (yVACA+diam/2 > height) {
gameStart = false;
xVACA = width/2;
yVACA = height/2;
moveXVACA = 5;
moveYVACA = 5;
pontos = 0;
}
}
noCursor ();
}
void mousePressed() {
gameStart = true;
}