Buenas!
Para un trabajo tengo que crear el típico juego de Pong. Cada vez que la pelota llega al final se suma un punto y al llegar a 3 puntos se acaba la partida. Pero antes intento hacer aparecer durante unos segundos “Game Over” y luego se reinicie la partida y el contador. Como puedo poner el texto durante 3 segundos en medio de la pantalla? O es que hay algun fallo al escribirlo?
Aquí abajo dejo el codigo:
// Mides Tauler
int tx = 840; // Pantalla VGA 840
int ty = 580; // x 580
// Mides camp
int cx = tx - 20; // Deixem 10 punts per banda de marge
int cy = ty - 20; // Deixem 10 punt per banda de marge
//Variables pel mouse
float mx;
float my;
//variables per la pilota
float px;
float py;
int dirx = 1;
int diry = 1;
//variables detecció de raqueta/pilota
float i1x;
float i1y;
float i2x;
float i2y;
//aleatorietat
float rx;
float ry;
float irx;
float iry;
//marcador
int puntesq=0;
int puntdret=0;
void setup() // Rutina inicialitzacions
{
size(840, 680); // Obrim la finestra
fill(255); // definim el color de dibuix (blanc)
noStroke(); // no dibuixem línies de contorn
px=420; // posició inical de la pilota
py=290; // posició inical de la pilota
}
void draw() // bucle de programa
{
rx=random(1,1);
ry=random(1,1);
if(rx>0.5) irx=1; else irx=0;
if(ry>0.5) iry=1; else iry=0;
//canvis estètics al camp
background(240,130,0); //fons taronje
fill(255); //cercle de les àrees
ellipse(830,290,470,560);
ellipse(20,290,470,560);
ellipse(20,290,470,560);
fill(240,130,0);
ellipse(830,290,460,550);
ellipse(20,290,460,550);
rect(0,0,10,580);
rect(830,0,10,580);
fill(255); // centre del camp
ellipse(410,290,120,120);
fill(240,130,0);
ellipse(410,290,110,110);
fill(255); //àera petita
ellipse(160,290,90,90);
ellipse(680,290,90,90);
rect(10,245,150,5);
rect(10,330,150,5);
rect(680,330,150,5);
rect(680,245,150,5);
fill(240,130,0);
ellipse(160,290,80,80);
ellipse(680,290,80,80);
// dibuixem el camp usant la funció rectangle
fill(255);
rect(407,10,5,cy); // Línia vertical mig del camp
rect(10,10,5,cy); // Línia vertical esquerra
rect(10,10,cx,5); // Línia horitzontal superior
rect(10,cy+5,cx,5); // Línia horitzontal inferior
rect(cx+5,10,5,cy); // Línia vertical dreta
fill(0);
//Moviment de raquetes
mx = mouseX;
my = mouseY;
if (my<20) my=20; //limitar el moviment per dalt
if (my>490) my=490; //limitar el moviment per baix
rect(30,my,15,70); //dibuix de raqueta esquerra
rect(790,my,15,70); //dibuix de raqueta dreta
//moviment de la pilota
if(dirx==1)
{px=px+3;} else {px=px-3;}
if(px>820) dirx=0;
if(px<15) dirx=1;
if(diry==1)
{py=py+3;} else{py=py-3;}
if(py>560) diry=0;
if(py<15) diry=1;
fill(100,100,200); //dibuixar pilota
ellipse(px,py,20,20);
fill(255,255,255);
//Detector col·lisions pilota/raqueta
i1x=abs(45-px);
i1y=abs(my+35-py);
i2x=abs(790-px);
i2y=abs(my+35-py);
//canviar de direcció la pilota
if((i1x<10)&&(i1y<30))
{
if(dirx==1) dirx=0; else dirx=1;
// factor aleatori de rebot
if(irx==0) {if (diry==1) diry=0; else diry=1;}
}
if((i2x<10) && (i2y<30))
{
if (dirx==1) dirx=0; else dirx=1;
// factor aleatori de rebot
if (iry==0) {if (diry==1) diry=0; else diry=1;}
}
//Si la pilota passa de la raqueta esquerra
if(px<20)
{
px=420; //situar la pilota al mig del camp
py=290;
if (irx == 0) {if (diry == 1) diry = 0; else diry = 1;}
puntdret=puntdret+1;
delay(1000); //1 segons de delay
}
//si la pilota passa de la raqueta dreta
if(px>815)
{
px=420; //situar la pilota al mig del camp
py=290;
if (iry == 0) {if (diry == 1) diry = 0; else diry = 1;}
puntesq=puntesq+1;
delay(1000); //1 segon de delay
}
//La partida s'acaba i apareix "game over"
if(puntesq==3 || puntdret==3)
{
text("GAME OVER",290,200);
textSize(40);
fill(255);
puntesq=0; puntdret=0;
}
//marcador
rect(38,580,60,80);
rect(748,580,60,80);
text("PONG GAME",290,640);
textSize(40);
fill(240,130,0);
{
text(puntesq,55,635);
text(puntdret,765,635);
}
}