Hola de nuevo. Veran
[spoiler] #include <allegro.h>
int main()
{
allegro_init();
install_mouse();
install_keyboard();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0);
BITMAP *buffer = create_bitmap(640, 480);
BITMAP *FONDO = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/FONDO.bmp", NULL);
BITMAP *FONDO1 = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/FONDO1.bmp", NULL);
BITMAP *FONDO2 = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/FONDO2.bmp", NULL);
BITMAP *cursor = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/cursor3.bmp", NULL);
SAMPLE *musica;
if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) != 0) { allegro_message("Error: inicializando sistema de sonido\n%s\n", allegro_error); return 1; }
set_volume(100, 100);
musica = load_sample("C://users/alvaro/Desktop/menu/menu/menu/audio/musica.wav");
play_sample(musica,200,150,1000,0);
bool salida = false;
while(!salida)
{
if(mouse_x > 13 && mouse_x < 345 &&
mouse_y > 287 && mouse_y < 342)
{
blit(FONDO1,buffer,0,0,0,0,640,480);
if(mouse_b & 1)
{
salida = true; // como podria poner ahi que se imprimiera sobre la pantalla una nueva iagen, otro menu.
}
}
else if(mouse_x > 19 && mouse_x < 231 &&
mouse_y > 391 && mouse_y < 463 )
{
blit(FONDO2,buffer,0,0,0,0,640,480);
if(mouse_b & 1)
{
salida = true;
}
}
else blit(FONDO,buffer,0,0,0,0,640,480);
masked_blit(cursor,buffer,0,0,mouse_x,mouse_y,40,34);
blit(buffer,screen,0,0,0,0,640,480);
}
destroy_bitmap(buffer);
return 0;
}
END_OF_MAIN();
[/spoiler]
la duda es que he intentado imprimir otra imagen cuando se pulsa click derecho sobre unas coordenadas dadas en el area de un rectangulo sin embargo me tira un error. en el codigo de arriba no he puesto la imagen y va bien y en este:
[spoiler]#include <allegro.h>
int main()
{
allegro_init();
install_mouse();
install_keyboard();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0);
BITMAP *buffer = create_bitmap(640, 480);
BITMAP *FONDO = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/FONDO.bmp", NULL);
BITMAP *FONDO1 = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/FONDO1.bmp", NULL);
BITMAP *FONDO2 = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/FONDO2.bmp", NULL);
BITMAP *cursor = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/cursor3.bmp", NULL);
BITMAP *comenzar = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/comenzar.bmp", NULL);
BITMAP *comenzar1 = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/comenzar1.bmp", NULL);
BITMAP *comenzar2 = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/comenzar2.bmp", NULL);
BITMAP *comenzar3 = load_bitmap("C://users/alvaro/Desktop/menu/menu/menu/imagenes/comenzar3.bmp", NULL);
SAMPLE *musica;
if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) != 0) { allegro_message("Error: inicializando sistema de sonido\n%s\n", allegro_error); return 1; }
set_volume(100, 100);
musica = load_sample("C://users/alvaro/Desktop/menu/menu/menu/audio/musica.wav");
play_sample(musica,200,150,1000,0);
bool salida = false;
while(!salida)
{
if(mouse_x > 13 && mouse_x < 345 &&
mouse_y > 287 && mouse_y < 342)
{
blit(FONDO1,buffer,0,0,0,0,640,480);
if(mouse_b & 1)
{
if(mouse_x > 9 && mouse_x < 222 &&
mouse_y > 365 && mouse_y < 442 )
{
blit(comenzar1,buffer,0,0,0,0,640,480);
if(mouse_b & 1)
{
salida = true;
}
}
else if(mouse_x > 294 && mouse_x < 627 &&
mouse_y > 372 && mouse_y < 435 )
{
blit(comenzar2,buffer,0,0,0,0,640,480);
if(mouse_b & 1)
{
salida = true;
}
}
else if(mouse_x > 376 && mouse_x < 514 &&
mouse_y > 31 && mouse_y < 90 )
{
blit(comenzar3,buffer,0,0,0,0,640,480);
if(mouse_b & 1)
{
salida = true;
}
}
else blit(comenzar,buffer,0,0,0,0,640,480);
}
}
else if(mouse_x > 19 && mouse_x < 231 &&
mouse_y > 391 && mouse_y < 463 )
{
blit(FONDO2,buffer,0,0,0,0,640,480);
if(mouse_b & 1)
{
salida = true;
}
}
else blit(FONDO,buffer,0,0,0,0,640,480);
masked_blit(cursor,buffer,0,0,mouse_x,mouse_y,40,34);
blit(buffer,screen,0,0,0,0,640,480);
}
destroy_bitmap(buffer);
return 0;
}
END_OF_MAIN();
[/spoiler]
he intentado crear otro menu al darle click en las coordenadas dadas de comenzar pero no funciona. creo que la he liado mucho ahi jaja me lie hasta yo :P si alguien sabe como puedo hacerlo o alguna funcion para hacerlo que me lo diga. Gracias
El boton derecho se hace con mouse_b & 2. Ademas tienes que poner un descanso en el bucle rest(100).
Aparte de eso, que error te da.
Gracias por contestar, el error que me da es el siguiente:
this aplication has requested the runtime to terminate it in an unusual way
Ah que es un error de ejecución... Pues entonces, comprueba si estan todas las imagenes.
Por cierto, no tienes que poner la ruta entera (tampoco es recomendable). Si la imagen está en la misma carpeta que el ejecutable te basta con poner el nombre:
FONDO = load_bitmap("FONDO.bmp", NULL);
Si está en una subcarpeta, puedes hacerlo asi:
FONDO = load_bitmap("./imagenes/FONDO.bmp", NULL);
Aver, sigue sin ir, lo unico que quiero es que cuando pulse sobre comenzar se dirija hacia otra imagen y deje de mostrarse esa, pero me da error. he intentado borrar el buffer pero tampoco funciona
Cita de: ankora45 en 22 Julio 2013, 16:01 PM
Aver, sigue sin ir, lo unico que quiero es que cuando pulse sobre comenzar se dirija hacia otra imagen y deje de mostrarse esa, pero me da error. he intentado borrar el buffer pero tampoco funciona
Repito, comprueba los punteros:
if (!FONDO){ allegro_message("Error al cargar el fondo"); exit(1); }
efectivamente, error al cargar el fondo. ¿que puedo hacer?
Comprueba si tu programa tiene permisos para acceder al archivo.
También tienes que estar seguro de que existe