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

[Allegro, C++] Błędna kolejność bitmap podczas wyświetlania

Ostatnio zmodyfikowano 2010-06-03 17:43
Autor Wiadomość
konrad
Temat założony przez niniejszego użytkownika
[Allegro, C++] Błędna kolejność bitmap podczas wyświetlania
» 2010-06-03 15:14:16
najważniejsze części kodu

deklaracja zmiennych:
int state = 0, menu = 0;
obrazki:
C/C++
start1 = load_bmp( "images/start1.bmp", default_palette );
if( !start1 )
{
    set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
    allegro_message( "nie mogę załadować obrazka start1 !" );
    allegro_exit();
    return 0;
}

start2 = load_bmp( "images/start2.bmp", default_palette );
if( !start2 )
{
    set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
    allegro_message( "nie mogę załadować obrazka start2 !" );
    allegro_exit();
    return 0;
}

wyjscie1 = load_bmp( "images/wyjscie1.bmp", default_palette );
if( !wyjscie1 )
{
    set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
    allegro_message( "nie mogę załadować obrazka wyjscie1 !" );
    allegro_exit();
    return 0;
}

wyjscie2 = load_bmp( "images/wyjscie2.bmp", default_palette );
if( !wyjscie2 )
{
    set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
    allegro_message( "nie mogę załadować obrazka wyjscie2 !" );
    allegro_exit();
    return 0;
}

wyświetlanie:
C/C++
if( state == 0 ) {
    if( menu == 0 ) {
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
        masked_blit( start1, bufor, 0, 0, 100, 100, 257, 63 );
        masked_blit( wyjscie2, bufor, 0, 0, 100, 200, 257, 63 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
        if( key[ KEY_DOWN ] ) {
            menu++;
        }
    }
    else if( menu == 1 ) {
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
        masked_blit( start1, bufor, 0, 0, 100, 100, 257, 63 );
        masked_blit( wyjscie2, bufor, 0, 0, 100, 200, 257, 63 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
        if( key[ KEY_UP ] ) {
            menu--;
        }
    }
   
}

powinny wyświetlać się obrazki start1 i wyjscie2 przynajmniej tak mi się wydaje :D
a wyświetlają się obrazki start1 i wyjscie1, co źle zrobiłem ?
//edit oj przepraszam po prostu odwrotnie nazwałem obrazki :D
ale nie działa mi zmiana obrazków czyli
C/C++
if( key[ KEY_DOWN ] ) {
    menu++;
}
i
if( key[ KEY_UP ] ) {
    menu--;
}
^^możliwe że zmienna się zmienia ale obrazki nie pewnie coś skopałem
P-17505
ison
» 2010-06-03 15:43:37
w tym miejscu:
C/C++
if( state == 0 ) {
    if( menu == 0 ) {
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
        masked_blit( start1, bufor, 0, 0, 100, 100, 257, 63 );
        masked_blit( wyjscie2, bufor, 0, 0, 100, 200, 257, 63 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
        if( key[ KEY_DOWN ] ) {
            menu++;
        }
    }
    else if( menu == 1 ) {
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
        masked_blit( start1, bufor, 0, 0, 100, 100, 257, 63 );
        masked_blit( wyjscie2, bufor, 0, 0, 100, 200, 257, 63 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
        if( key[ KEY_UP ] ) {
            menu--;
        }
    }
   
}

przeciez ty w obu przypadkach wyswietlasz zawsze te same bitmapy... rozumiem że można pisać o swoim problemie na forum ale bez przesady, lepiej najpierw pomyśleć, bo tego typu błędy widzi się na pierwszy rzut oka...
P-17506
konrad
Temat założony przez niniejszego użytkownika
» 2010-06-03 15:53:35
no niestety ja tak mam i w c++ i w php zrobię głupi mały błąd i szukam go 2 godziny
C/C++
while( !key[ KEY_ESC ] )
{
   
    while( speed > 0 )
    {
        if( state == 0 ) {
            if( menu == 0 ) {
                clear_to_color( bufor, makecol( 150, 150, 150 ) );
                masked_blit( start1, bufor, 0, 0, 100, 100, 257, 63 );
                masked_blit( wyjscie2, bufor, 0, 0, 100, 200, 257, 63 );
                blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
                if( key[ KEY_DOWN ] ) menu = 1;
               
            }
            else if( menu == 1 ) {
                clear_to_color( bufor, makecol( 150, 150, 150 ) );
                masked_blit( start2, bufor, 0, 0, 100, 100, 257, 63 );
                masked_blit( wyjscie1, bufor, 0, 0, 100, 200, 257, 63 );
                blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
                if( key[ KEY_UP ] ) menu = 0;
               
            }
           
        }
        else if( state == 1 ) {
            if( key[ KEY_LEFT ] ) ludek_x--;
           
            if( key[ KEY_RIGHT ] ) ludek_x++;
           
            if( key[ KEY_UP ] ) ludek_y--;
           
            if( key[ KEY_DOWN ] ) ludek_y++;
           
            speed--;
        }
    }
   
    clear_to_color( bufor, makecol( 150, 150, 150 ) );
    masked_blit( ludek, bufor, 0, 0, ludek_x, ludek_y, ludek->w, ludek->h );
    blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    if( menu == 0 ) {
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
        masked_blit( start1, bufor, 0, 0, 100, 100, 257, 63 );
        masked_blit( wyjscie2, bufor, 0, 0, 100, 200, 257, 63 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
    else if( menu == 1 ) {
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
        masked_blit( start2, bufor, 0, 0, 100, 100, 257, 63 );
        masked_blit( wyjscie1, bufor, 0, 0, 100, 200, 257, 63 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
}

remove_int( increment_speed );

destroy_bitmap( ludek );
destroy_bitmap( bufor );
destroy_bitmap( start1 );
destroy_bitmap( start2 );
destroy_bitmap( wyjscie1 );
destroy_bitmap( wyjscie2 );
allegro_exit();
return( 0 );
}
END_OF_MAIN();
naciskając klawisz esc program się nie zamyka pewnie znowu jakiś głupi błąd ale nie mogę go znaleść
P-17507
lenrokskate
» 2010-06-03 17:40:38
od czego jest log kompilacji w IDE? Tam ładnie pisze jaki jest błąd i w której linijce...
P-17509
konrad
Temat założony przez niniejszego użytkownika
» 2010-06-03 17:43:46
nie ma żadnego błędu i dzieje się to tylko w menu gry ale już wszystko dobrze w menu gry zrobiłem wyjście i git
P-17510
« 1 »
  Strona 1 z 1