Hola, He estado trabajando los eventos del Ratón en SDL y he hecho un codigo que no funciona muy bien:
if(event.type == SDL_MOUSEBUTTONDOWN){ if(event.button.button == SDL_BUTTON_LEFT && event.button.x == 250 && event.button.y == 250){ dest.x = 370; dest.y = 40; dest.w = image7->w; dest.h = image7->h; SDL_BlitSurface(image7, NULL, screen, &dest); SDL_Flip(screen); SDL_FreeSurface(image7); } }
El problema esta en que si pongo esto:
event.button.x == 0
event.button.x == 0
envez de lo de arriva pues tengo que pulsa en la esquinita. Y si pongo cordenadas mas grandes por mas que pulse en todos los sitios no me da resultados. Yo creo que es porque no defini ancho y largo, solo cordenadas. Si es asi ¿Que tengo que hacer?.
Gracias
Hechale un ojo a cualquier
Hechale un ojo a cualquier tutorial de colisiones 2D y entenderás enseguida lo que debes hacer. Básicamente es lo que te dicen aquí abajo, mediante estructuras condicionales hacer que solo se ejecuten las tareas no si el X es 10 o y es 10 (por ejemplo) sinoque se ejecuten si X es mayor que 10 y menor de 20 y Y mayor de 10 y menor de 20. Esto hará que se ejecuten las tareas si clickas en un cuadrado de 10x10 (en realidad de 9x9 pero seguro que sabes como solucionarlo) a 10px de distancia sobre el eje X y sobre el eje Y.
Espero que te haya ayudado. Saludos.
Define un rango
Pinchar justo en un pixel es muy dificil, por no decir casi imposible... En vez de eso define un rectángulo donde pulsar. Por ejemplo el rectángulo con x entre 400 y 500 e y entre 300 y 400:
Te digo ese rango por poner un ejemplo. Cambia los valores por los que te venga mejor.
Saludos!
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.