Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro, C++] Tworzenie przycisków (buttonów) - problem

Ostatnio zmodyfikowano 2011-11-26 14:14
Autor Wiadomość
Voldo
Temat założony przez niniejszego użytkownika
[Allegro, C++] Tworzenie przycisków (buttonów) - problem
» 2011-11-26 13:05:30
Cześć wszystkim! Mam pewien problem. Otóż tworzę menu za pomocą Allegro. Wiem jak w nim umieszczać swoje przyciski w postaci bitmap i wiem jak zrobić by reagowały na kliknięcie. Jednak problem leży gdzie indziej. Mam przyciski ma stworzoną reakcję na kliknięcie jednak nie wiem jak sformułować pętle iF by na przykład po kliknięciu w Button Twórcy wyświetlała mi się osobna bitmapa i tam było by napisane grę stworzyli..... Nie wiem po prostu jak to skonstruować w pętli za pomocą load bitmap. Nie umiem poprostu sformułować iFa tak by robił coś sensownego. Mam coś takiego:

C/C++
if( mx >= 250 && my >= 200 && mx <= 250 + 231 && my <= 200 + 53 && mb == 1 )
{
    // tutaj powinna znajdować się instrukcja jednak nie wiem jak ją sformułować
}

Przepraszam za brak porządnie sformułowanego posta, ale jest to mój pierwszy post, ale forum i kursy przeglądam od września.

Pozdrawiam
P-44726
malan
» 2011-11-26 13:25:37
Można np. to zrobić tak:
C/C++
void info( BITMAP * buffer )
{
    while( !key[ KEY_ESC ] )
    {
        clear_to_color( buffer, makecol( 0, 0, 0 ) ); // Czyścimy bufor.
       
        // Tutaj wyświetlasz tekst itp.
       
        masked_blit( buffer, screen, /* ... */ );
    }
}

//...

int main()
{
    while( /* ... */ )
    {
        if( mx >= 250 && my >= 200 && mx <= 250 + 231 && my <= 200 + 53 && mb == 1 )
        {
            info( buffer );
        }
    }
}
P-44727
Voldo
Temat założony przez niniejszego użytkownika
Kolejny problem
» 2011-11-26 13:51:34
Cześć jeszcze zanim chciałem się zabrać za tworzenie przycisków wg tego co mi podał malan chciałem uporządkować kod gdyż był on bardzo ale to bardzo chaotyczny. No i..... mam jeden błąd ale nie wiem jak go poprawić. Gdyby ktoś mógł mi go wskazać byłbym bardzo wdzięczny

Pozdrawiam

Oto kod:
C/C++
#include <allegro.h>

int mb, mx, my;

void myszka()
{
    if( mx != mouse_x || my != mouse_y || mb != mouse_b )
    {
        mx = mouse_x;
        my = mouse_y;
        mb = mouse_b;
    }
}
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 740, 550, 0, 0 );
    clear_to_color( screen, makecol( 128, 128, 128 ) );
   
    install_mouse();
   
    enable_hardware_cursor();
    select_mouse_cursor( MOUSE_CURSOR_QUESTION );
    show_mouse( screen );
    unscare_mouse();
    clear_to_color( screen, makecol( 128, 128, 128 ) );
    install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
    set_volume( 255, 255 );
   
    BITMAP * bufor = NULL;
    SAMPLE * dzwiek = NULL;
    BITMAP * gracpp = NULL;
    BITMAP * uruchom = NULL;
    BITMAP * ustawienia = NULL;
    BITMAP * tworcy = NULL;
    BITMAP * wyjsc = NULL;
   
   
    gracpp = load_bmp( "gracpp.bmp", default_palette );
    if( !gracpp )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka Ludek !" );
        allegro_exit();
        return 0;
    }
   
    uruchom = load_bmp( "uruchom.bmp", default_palette );
    if( !uruchom )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka uruchom !" );
        allegro_exit();
        return 0;
    }
   
    ustawienia = load_bmp( "ustawienia.bmp", default_palette );
    if( !ustawienia )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka ustawienia !" );
        allegro_exit();
        return 0;
    }
   
    tworcy = load_bmp( "tworcy.bmp", default_palette );
    if( !tworcy )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka tworcy !" );
        allegro_exit();
        return 0;
    }
    wyjsc = load_bmp( "wyjsc.bmp", default_palette );
    if( !wyjsc )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka wyjsc !" );
        allegro_exit();
        return 0;
    }
    bufor = create_bitmap( 740, 550 );
   
    dzwiek = load_sample( "Campain.wav" );
    if( !dzwiek )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować dzwieku !" );
        allegro_exit();
        return 0;
    }
    play_sample( dzwiek, 255, 127, 1000, 1 );
   
    while( !key[ KEY_ESC ] )
    {
        blit( tworcy, bufor, 0, 0, 250, 260, tworcy->w, tworcy->h );
        if( key[ KEY_F1 ] ) { adjust_sample( dzwiek, 255, 127, 500, 1 ); }
        if( key[ KEY_F2 ] ) { adjust_sample( dzwiek, 255, 127, 2000, 1 ); }
        if( key[ KEY_F3 ] ) { adjust_sample( dzwiek, 255, 0, 1000, 1 ); }
        if( key[ KEY_F4 ] ) { adjust_sample( dzwiek, 255, 255, 1000, 1 ); }
    }
    while( !key[ KEY_ESC ] )
    {
        myszka();
        blit( gracpp, bufor, 0, 0, 0, 0, gracpp->w, gracpp->h );
        blit( uruchom, bufor, 0, 0, 250, 200, uruchom->w, uruchom->h );
        blit( ustawienia, bufor, 0, 0, 250, 260, ustawienia->w, ustawienia->h );
        blit( tworcy, bufor, 0, 0, 250, 320, tworcy->w, tworcy->h );
        blit( wyjsc, bufor, 0, 0, 250, 378, wyjsc->w, wyjsc->h );
        blit( bufor, screen, 0, 0, 0, 0, 740, 550 );
    }
    stop_sample( dzwiek );
    clear_bitmap( bufor );
    allegro_exit();
    return 0;
}
END_OF_MAIN();

O to logi z kompilacji:
Compiler: Default compiler
Building Makefile: "C:\Users\Pajter\Desktop\TEST\Makefile.win"
Executing  make...
make.exe -f "C:\Users\Pajter\Desktop\TEST\Makefile.win" all
gcc.exe -c Untitled1.c -o Untitled1.o -I"C:/Dev-Cpp/include"  

Untitled1.c: In function `_mangled_main':
Untitled1.c:119: error: syntax error at end of input

make.exe: *** [Untitled1.o] Error 1

Execution terminated

Gdyby ktoś potrzebował całego spakowanego programu aby to rozwiązać proszę pisać. Pozdrawiam i proszę o szybką odpowiedź.
P-44728
malan
» 2011-11-26 13:58:34
Przed END_OF_MAIN nie dałeś klamry zamykającej (chyba, że ucięło Ci przy kopiowaniu kodu na forum).
P-44729
Voldo
Temat założony przez niniejszego użytkownika
Problem z szarym ekranem
» 2011-11-26 14:11:36
Wszystko się ładnie po uwadze malana skompilowało jednak mam "szare tło a powinien się wyświetlać obrazek. Proszę o rzucenie okiem na powyższy kod, ale coś mi się wydaję, że problem leży w create bitmap lub clear to color.

Jak zawsze proszę o szybką odpowiedź :)

Pozdrawiam i przepraszam, że są ze mną same problemy.
P-44731
malan
» 2011-11-26 14:14:38
Na forum panuje zasada jeden temat = jeden problem :) Reakcja na przyciski nie ma nic wspólnego z kolorem tła także ten temat zamykam :)
P-44733
« 1 »
  Strona 1 z 1