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

[Allegro] Program "Allegro2" przestał działać - wyświetlanie grafiki

Ostatnio zmodyfikowano 2011-10-24 12:08
Autor Wiadomość
Kamil9132
Temat założony przez niniejszego użytkownika
[Allegro] Program "Allegro2" przestał działać - wyświetlanie grafiki
» 2011-10-23 23:35:29
Witam
Mam taki kod:
C/C++
#include <allegro.h>
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0 );
    clear_to_color( screen, makecol( 10, 10, 10 ) );
   
   
   
    BITMAP * pamiec = create_bitmap( 640, 480 );
    BITMAP * glowa = load_bmp( "grafika/glowa.bmp", default_palette );
   
   
    //char klawisz;
    int klawisz = 0;
    int menug = 0;
    int wyjdz = 0;
    int konie = 0;
    int nkonie = 0;
    int kmenug = 0;
    int nenter = 0;
    int gra = 0;
   
    while( wyjdz == 0 )
    {
       
       
       
        if( menug == 0 or menug == 1 ) {
           
            if( key[ KEY_DOWN ] ) { menug = 1; }
            if( key[ KEY_UP ] ) { menug = 0; }
           
        }
       
        if( menug == 2 ) {
           
            if( key[ KEY_RIGHT ] ) { konie = 0; }
            if( key[ KEY_LEFT ] ) { konie = 1; }
           
        }
       
       
       
        clear_to_color( pamiec, makecol( 10, 10, 10 ) );
       
       
       
        if( menug == 0 ) {
            textprintf( pamiec, font, 200, 100, makecol( 255, 255, 255 ), "Start" );
           
           
            textprintf( pamiec, font, 200, 120, makecol( 255, 255, 128 ), "Wyjdz z gry" );
           
            if( key[ KEY_ENTER ] ) {
                gra = 1;
            } }
       
       
       
       
       
        //      klawisz = readkey();
        //      clear_to_color( screen, makecol( 10, 10, 10 ) );
       
       
       
       
       
       
       
       
       
        textprintf_ex( pamiec, font, 200, 400, makecol( 255, 255, 128 ), - 1, "menug: %d", menug );
       
       
       
        textprintf_ex( pamiec, font, 200, 420, makecol( 255, 255, 128 ), - 1, "kmenug juz nie: %d", kmenug );
       
        textprintf_ex( pamiec, font, 200, 440, makecol( 255, 255, 128 ), - 1, "konie: %d", konie );
        //   textprintf( screen, font, 200, 500, makecol( 255, 255, 128 ), konie); 
       
       
       
       
       
       
        if( menug == 1 ) {
           
            textprintf( pamiec, font, 200, 100, makecol( 255, 255, 128 ), "Start" );
            textprintf( pamiec, font, 200, 120, makecol( 255, 255, 255 ), "Wyjdz z gry" );
           
           
            if( key[ KEY_ENTER ] ) {
               
                menug = 2;
                nenter = 1;
            } }
       
       
        if( nenter == 1 ) {
           
           
            key[ KEY_ENTER ] = false;
            nenter = 0;
           
        }
       
       
        if( menug == 2 ) {
           
            textprintf( pamiec, font, 200, 200, makecol( 255, 255, 128 ), "Czy na pewno chcesz wyjść?" );
           
           
           
           
           
            if( konie == 0 ) {
               
                textprintf( pamiec, font, 220, 220, makecol( 255, 255, 225 ), "Nie" );
               
                textprintf( pamiec, font, 180, 220, makecol( 255, 255, 128 ), "Tak" );
               
               
               
                if( key[ KEY_ENTER ] ) {
                   
                    menug = 0;
                } }
           
           
           
           
           
            if( konie == 1 ) {
               
                textprintf( pamiec, font, 220, 220, makecol( 255, 255, 128 ), "Nie" );
               
                textprintf( pamiec, font, 180, 220, makecol( 255, 255, 225 ), "Tak" );
               
               
               
                if( key[ KEY_ENTER ] ) {
                   
                    wyjdz = 1;
                   
                } }
           
        }
        //  textprintf( screen, font, 10, 20, makecol( 255, 255, 128 ), "Klawisz to : %d", klawisz );
       
        blit( pamiec, screen, 0, 0, 0, 0, 640, 480 );
        blit( glowa, screen, 0, 0, 100, 100, 20, 20 );
       
       
       
    }
   
   
   
    return 0;
}
END_OF_MAIN();

Po skompilowaniu i uruchomieniu wyskakuje taki błąd:
"Program Allegro2.exe przestał działać"
Gdy usunę 11 linijkę od końca:
C/C++
blit( glowa, screen, 0, 0, 100, 100, 20, 20 );
To program działa normalnie.
W pisaniu kodu wzorowałem się na » Kurs Allegro 4.x, C++Pliki graficzne lekcja
Dlaczego pojawia się ten błąd?
P-42641
Gabes
» 2011-10-23 23:41:47
Albo w folderze grafika brak bitmapy glowa.bmp lub nie jest to bitmapa typu bmp.
P-42642
Kamil9132
Temat założony przez niniejszego użytkownika
» 2011-10-23 23:48:34
W folderze grafika jest ten plik i jest on w formacie .bmp
Możesz przetestować to u siebie i sprawdzić.
P-42643
Gabes
» 2011-10-23 23:49:17
Najlepiej sprawdzaj tak
C/C++
if( !glowa )
{
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka glowa!" );
        allegro_exit();
        return 0;
}
.
P-42644
Gabes
» 2011-10-23 23:59:18
Zmień kolejność wyświetlania bufora którego nazwałes pamiec zawsze na koncu

C/C++
blit( glowa, pamiec, 0, 0, 100, 100, 20, 20 );
blit( pamiec, screen, 0, 0, 0, 0, 640, 480 );
 
nie wiem czy to to ale ma być tak
Teraz widze screen na pamiec zamień .
P-42645
Kamil9132
Temat założony przez niniejszego użytkownika
» 2011-10-24 12:08:43
Dzięki za pomoc Gabes :)
Okazało się że folder grafika nie był w folderze gdzie był plik .exe tylko .cpp
P-42652
« 1 »
  Strona 1 z 1