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);
}
}