[C con Clase] Re: como se hace para ... ¿desea reiniciar el juego ?

Francesc fcabecer en xtec.cat
Sab Ene 13 23:45:09 CET 2007


he comentado este tema con otro colega y propone basicamente lo mismo que 
tu. O sea preguntar al usuario y si este decide serguir, entonces 
INICIALIZAR TODAS LAS VARIABLES DEL JUEGO de nuevo, parece que no hace falta 
el mensaje WM_INIDIALOG, sencillamente en cunto el timer llega al final del 
tiempo si la respuesta es seguir jugando basta con poner las variables 
"importantes" a su valor inicial
gracias de todos modos por tu propuesta que es muy similar.
----- Original Message ----- 
From: "Steven Davidson" <steven en conclase.net>
To: <cconclase en listas.conclase.net>
Sent: Saturday, January 13, 2007 6:09 PM
Subject: Re: [C con Clase] como se hace para ... ¿desea reiniciar el juego ?


Hola Francesc,

El pasado 2007-01-12 22:13:23, Francesc Cabecerans escribió:

FC> El programa tiene a grandes rasgos esta estructura, entra mediante 
MAKEINTRESOURCE (PREGUNTAS)
FC> que es un cuadro de dialogo que esta en un *.rc y se lanza un 
procedimiento, que incluye un temporizador.
FC> Cuando el timepo finaliza debe preguntar si desea salir o repetir el 
juego, y es la parte que no se como implementar

Veamos el código.

[CORTE]

FC>   case WM_TIMER:
FC>    {
FC>     switch (wParam)
FC>     {
FC>      case IDT_TIMER1:     // procesa 60 segundos
FC>            if (tiempo==0) {KillTimer(hwnd, IDT_TIMER1);
FC> cuando se acaba el tiempo ....., aquí se debe preguntar con un cuadro de 
dialogo
FC> si se quiere salir de la aplicación o bien
FC> se quiere empezar de nuevo  }

Sugiero usar un cuadro de mensaje con 'MessageBox()' para preguntar al 
usuario. Dependiendo de su respuesta, puedes salir o seguir. Para poder 
"reiniciar", sugiero inscribir o agregar (post) el mensaje 'WM_INITDIALOG' a 
la cola de mensajes para que vuelva a empezar. Esto implica que todas las 
asignaciones iniciales deberían darse en este mensaje, porque si no, el 
cuadro de diálogo no aparentará "reiniciarse".

Otra forma es cerrar el cuadro diálogo, pero recibir un código indicando si 
se debe reiniciar o no. Por ejemplo,

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR szCmdLine, int iCmdShow )
{
  bool bRepetir = false;

  do
    DialogBoxParamA( hInstance, MAKEINTRESOURCE(PREGUNTAS), 0, WndProc,
                     &bRepetir );
  while( bRepetir );

  return 0;
}

A través de 'bRepetir' podemos comunicarnos con el cuadro de diálogo. No 
sugiero implementar esta técnica, ya que realmente se destruye el cuadro de 
diálogo, liberando los recursos. Esto requiere tiempo, y seguramente no es 
muy atractivo visualmente hablando.


Espero que esto te ayude.

Steven
_______________________________________________
Cconclase mailing list
Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net 






Más información sobre la lista de distribución Cconclase