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!
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
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 & que dificultan la lectura. :)
Saludos!
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.