¿Puedo hacer esto?

Iniciado por ankora45, 20 Julio 2013, 10:17 AM

0 Miembros y 1 Visitante están viendo este tema.

ankora45

Hola de nuevo. Veran
[spoiler]
Código (cpp) [Seleccionar]
#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]
Código (cpp) [Seleccionar]
#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
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro

amchacon

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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

ankora45

Gracias por contestar, el error que me da es el siguiente:

this aplication has requested the runtime to terminate it in an unusual way
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro

amchacon

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:

Código (cpp) [Seleccionar]
FONDO = load_bitmap("FONDO.bmp", NULL);

Si está en una subcarpeta, puedes hacerlo asi:

Código (cpp) [Seleccionar]
FONDO = load_bitmap("./imagenes/FONDO.bmp", NULL);
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

ankora45

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
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro

amchacon

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:

Código (cpp) [Seleccionar]
if (!FONDO){ allegro_message("Error al cargar el fondo"); exit(1); }
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

ankora45

efectivamente, error al cargar el fondo. ¿que puedo hacer?
Hay dos cosas infinitas en este mundo, el universo y la estupidez humana, y de la primera no estoy muy seguro

Shout

Comprueba si tu programa tiene permisos para acceder al archivo.
También tienes que estar seguro de que existe
I'll bring you death and pestilence, I'll bring you down on my own