Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: javiel en 15 de Julio de 2004, 08:19:51 PM

Título: Hacer Un Pausa Usando Sdl
Publicado por: javiel en 15 de Julio de 2004, 08:19:51 PM
 Bueno, estoy intentando hacer una pausa en un juego. La idea es hacer la pausa en el juego y que aparezca un poco mas oscura la pantalla. Para ello solo tengo que parar el juego, crear un cuadro negro que ocupe toda la pantalla y darle opacidad, encima le escribo "Pausa" y cuando pulse un tecla a seguir jugando. Hasta ahí fácil.

Pero ahora quiero hacer algo un poco mas complicado, pero no se me ocurre como hacerlo. La idea es hacer una pausa en el juego, poner el cuadro negro para ponerlo un poco oscurito y luego ir escribiendo un texto encima.

El problema es que mientras voy escribiendo el texto el cuadro negro se tiene que ir actualizando, por lo que cada vez se va oscureciendo mas la pantalla hasta que se ve completamente negra.

No se si me he explicado muy bien, creo que no mucho, pero no puedo explicarlo mejor.

La primera pantalla aparece el juego parado y la pantalla negra a un 10% de opacidad, al volver a actualizar la pantalla negra con otro 10% de opacidad se queda en 20% así hasta estar negra. Como un FADE-OUT

¿se os ocurre alguna forma de hacer esto??

Gracias a todos
Título: Hacer Un Pausa Usando Sdl
Publicado por: vicho en 15 de Julio de 2004, 08:47:17 PM
 podrias hacer algo asi para la pausa

pausa()
{
while(1)
{
 if(hayquesalir)
   break;
cambiamosopacidad();
escribimostexto();
hayquesalir=checkemossidebemossalir();
}
}


yo hacia efectos en blanco y negro etc, era bien entretenido lo que se podia hacer en la pausa
Título: Hacer Un Pausa Usando Sdl
Publicado por: fiero en 15 de Julio de 2004, 11:38:03 PM
 javiel lo que tienes que hacer es guardar el fondo sombreado en una imagen temporal y luego poner el fondo guardado cada vez que cambies el texto.

un saludo
Título: Hacer Un Pausa Usando Sdl
Publicado por: TheAzazel en 16 de Julio de 2004, 12:05:35 PM
Cita de: "fiero"javiel lo que tienes que hacer es guardar el fondo sombreado en una imagen temporal y luego poner el fondo guardado cada vez que cambies el texto.

un saludo
Exacto!  (ole)  
Título: Hacer Un Pausa Usando Sdl
Publicado por: samsaga2 en 16 de Julio de 2004, 12:47:24 PM
 Vaya formas de compilcarse uno la vida:


bucleprincipal() {
 if(juego_pausado) {
    bucle_pausa();
 } else
    bucle_juego();

 cualquier_otro_evento_que_tengan_en_comun();
 flipar_doublebuffer();
}


No se, no le veo mucha compilacion. En el bucle_pausa renderizas lo que toque en cada frame y listo.
Título: Hacer Un Pausa Usando Sdl
Publicado por: javiel en 16 de Julio de 2004, 04:04:21 PM
 lo de guardar la imagen sobreada lo había pensado, hay algunas funciones en SDL para guardar superficies en BMP, pero ¿no comerá muchos recursos?? Pensaba que si, pero habrá que probarlo.


samsaga2, con el codigo que comentas creo que sigo teniendo el mismo problema. El problema es que en la funcion bucle_pausa(); tengo que seguir actualizando la pantalla, NO es una pantalla estática.