Anuncios Google

SDL y C++ [DUDA]

Tengo un problema con la programacion en SDL ( C++ ). 

Estoy intentado hacer que un conjunto de imagenes actuen como un boton.

El problema es que se bloquea y no se como hacer que funcione bien.

Si alguien me puede ayudar, se lo agradecere

He aqui el codigo:

 

int SDL_main(int argc, char* argv[]){
             debug=fopen("debug.txt", "wt"); /* Archivo de depuracion*/
             Init("HOLA"); /* Inicio SDL. Funcion propia*/
             IMG fondo; /* IMG=SDL_Surface*/
             RECT r;  /*RECT=SDL_Rect*/
             RECT r1;
             RECT r2;
             RECT r3;
             Uint8 key;
             int x;
             int y;
             SDL_Event event;
             bool played=false;
 
             IMG boton;
             IMG boton2;
             IMG boton3;
 
             int opcion;
             draw(fondo, "burbujas_640x480.bmp", 0, 0, r); /* Funcion para dibujar*/
             draw(boton, "Play.bmp", 50, 350, r1);
             getch();
             while(true){
          		 SDL_PollEvent(&event);
			  if(event.type==SDL_QUIT) { exit(0); }
                          key=SDL_GetMouseState(&x, &y); /* Leo el estado del mouse*/
                         if(x>=r1.x && x<=r1.x+48 && y>=r1.y && y<=r1.y+48 && key==SDL_BUTTON_LMASK){
                                     fprintf(debug, "%s\n", "Pulsado");
                                     getch();
                                     draw(boton3, "Play3.bmp", 50, 350, r3);
                                     Sync();
                                     repr();
                                     }
                         i if(x>=r1.x && x<=r1.x+48 && y>=r1.y && y<=r1.y+48 && key!=SDL_BUTTON_LMASK){
                                     fprintf(debug, "%s\n", "Sobre el");
                                     draw(boton3, "Play2.bmp", 50, 350, r2);
                                     Flip(screen);
                                     Sync();
                                     }
                         }
             getch();
             END();
             return 0;
             }

 


Programo en C, C++, C# y ASM ( Sintaxis INTEL y AT&T )

Proyectos:

- UnlockMii 5.0 ----> UnlockMii 5.1: ( EN CONSTRUCCION -> 2% )

- MiiOS ( EN CONSTRUCCION -> 0,01% )

El mejor antivirus ==> Avast!


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de joserc87

Hola.

No entiendo muy bien qué quieres decir con que se bloquea? Aún así, he estado mirando el código:

- si el ratón no está en el recuadro, no se pinta ninguna imagen. Yo simplificaría el código como

if(x>=r1.x && x<=r1.x+48 && y>=r1.y && y<=r1.y+48){
  if (key==SDL_BUTTON_LMASK)
    draw(boton3, "Play3.bmp", 50, 350, r3);
  else
     draw(boton3, "Play2.bmp", 50, 350, r2);
}else{
  draw(boton3, "BotonNormal.bmp", 50, 350, r1);
}

Las funciones Sync y repr no se que hacen, pero Flip(screen); me imagino que será como SDL_Flip y hará el swap buffer a la pantalla, pintando  lo que se ha dibujado, no? En ese caso, en el segundo if tuyo también debería llamarse.

PD: Intenta "sanear" tu código. Te han salido unos &amp; que dificultan la lectura. :)

Saludos!


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.