# Temporizador para texto después de una acción

**URL:** <https://discourse.processing.org/t/temporizador-para-texto-despues-de-una-accion/35627>\
**Category:** Coding Questions\
**Tags:** homework\
**Created:** [March 9, 2022, 1:46am UTC](https://discourse.processing.org/t/temporizador-para-texto-despues-de-una-accion/35627 "2022-03-09T01:46:17Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![AdriaCornell](https://avatars.discourse-cdn.com/v4/letter/a/c5a1d2/32.png) [@AdriaCornell](https://discourse.processing.org/u/AdriaCornell)\
**Post date:** [March 9, 2022, 1:46am UTC](https://discourse.processing.org/t/temporizador-para-texto-despues-de-una-accion/35627/1 "2022-03-09T01:46:17Z")

</div>

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:

```auto
// 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);
}

}

```

---

<div class="post-metadata">

**Author:** ![nicolaskellum](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/nicolaskellum/32/15860_2.png) [@nicolaskellum](https://discourse.processing.org/u/nicolaskellum)\
**Post date:** [March 10, 2022, 9:02am UTC](https://discourse.processing.org/t/temporizador-para-texto-despues-de-una-accion/35627/2 "2022-03-10T09:02:24Z")

</div>

¡Hola!

Lo siento si mi español es malo, estoy usando el traductor de Google.

El problema que tiene está relacionado con su uso de `delay()`. Como está escrito en la referencia, `delay()` se usa para pausar scripts, no necesariamente para controlar la animación.

> **[Reference](https://processing.org/reference/delay_.html)**
>
> The delay() function causes the program to halt for a specified time. Delay times are specified in thousandths of a second. For example, running delay(3000) will stop the program for thr…

Sugeriría algunas cosas:

- Podría ser útil separar lo que dibujes en diferentes funciones. Quizás puedas tener una función que dibuje la cancha, otra que dibuje el marcador y otra que dibuje las paletas y la pelota.
- Para hacer que su efecto de animación, puede usar variables como un cronómetro, por ejemplo, cuando se marca un gol, puede hacer una declaración `if` que aumenta el cronómetro, y mientras el cronómetro es inferior a 1000, puede detener el movimiento de la pelota y palas. Lo mismo para Game Over, puedes tener un temporizador especial que detiene todo movimiento y dibuja el texto.

¡Espero que esto ayude!
