Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/11/2008, 11:43
Avatar de Xinef
Xinef
 
Fecha de Ingreso: marzo-2007
Mensajes: 202
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: problemas con sdl y mouse

A ver.

Vamos a hacer pruebas porque es complicado seguir el código.

Antes de nada, saca el control de evento de los dos bucles. Quedaría más o menos así:

Código PHP:
int CBuscaminas::destapar(ClsTimer &cronometro,ClsSprite &celda,ClsMonitor &monitor,ClsEvento &evento)
{
int estado;

if(
evento.huboEvento())
          {

            if(
evento.tipo()==MOUSE_PRESIONADO)
            {
                 
h=evento.mouseX();
                
z=evento.mouseY();

 for(
int i=0;i<8;i++)
    {

        for(
int j=0;j<8;j++)
        {

              
//[...resto del código...]
    
}

Estabas haciendo una lectura de evento por cada redibujado.

Además, crea cuatro variables de control que muestren:
  • X ratón
  • Y ratón
  • (i*15)
  • ((i*15)+15)
  • ((j*15)+35)
  • ((j*15)+50)

Puede hacerlo con un simple std::cout.

Una vez que tengas la traza, comprueba que se están tomando bien las coordenadas de cada pulsación y que se cumple la condición del if (lo siento, pero con tanto número mágico me es imposible hacer la traza visualmente).


Si la clase Evento usa SDL_PollEvent, esta función de SDL ya hace el borrado del evento, si no usa esa función, tienes que sacar tú el evento que has leído de la cola.

Por cierto, presupongo que el método huboEvento hace la lectura de la cola de eventos... pero eso ya depende de esa clase... no es cosa de SDL.