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

[Allegro 4.x] Podmiana pliku z grafiką powoduje błąd aplikacji

Ostatnio zmodyfikowano 2013-09-25 21:10
Autor Wiadomość
LislaV
Temat założony przez niniejszego użytkownika
[Allegro 4.x] Podmiana pliku z grafiką powoduje błąd aplikacji
» 2013-09-25 17:48:45
Cześć! Na sam początek dodam, że jestem dosyć początkującym programistą, więc nie bijcie jak zapytam o coś oczywistego :P

Ostatnio zainteresowała mnie biblioteka Allegro. Przerobiłem cały kurs zamieszczony na stronie, wszystko okej, ale.. Przeglądając internet trafiłem na tutorial - http://www.easykoder.vot.pl/arty/animacja_postaci , pobrałem z działu download program i kod, z tej lekcji, wszystko działało.. Chciałem jednak zmienić postać na swoją, więc na chłopski rozum podmieniłem plik z postacią. Odpalam - Program "program.exe" przestał działać.. Co trzeba zrobić, żeby to zadziałało? Oczywiście nazwa taka sama jak ten oryginalny plik, rozszerzenie, wymiary, nawet waga obrazka jest taka sama.

Poniżej kod programu:
C/C++
#include <allegro.h>

class Cpostac
{
public:
    int x, y;
    short int kierunek, klatka;
};
// Zmienna naszej klasy
Cpostac ludek;

// Inicjowanie timera
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );

// Funkcja Główna
int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 80 ) );
   
    BITMAP * bufor = NULL;
    BITMAP * ludekb = NULL;
   
    // Tworzenie bufora
    bufor = create_bitmap( 640, 480 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę utworzyć bufora !" );
        allegro_exit();
        return 0;
    }
    // Ładowanie grafiki
    ludekb = load_bmp( "postac.bmp", default_palette );
   
    // Ustalanie początkowej pozycji ludzika
    int frame = 0;
    ludek.x = 100;
    ludek.y = 100;
    ludek.klatka = 0;
    ludek.kierunek = 0;
   
    while( !key[ KEY_ESC ] )
    {
        while( speed > 0 )
        {
            ludek.kierunek = 0;
            if( key[ KEY_LEFT ] ) { ludek.kierunek = 4; ludek.x -= 2; }
            if( key[ KEY_RIGHT ] ) { ludek.kierunek = 2; ludek.x += 2; }
            if( key[ KEY_UP ] ) { ludek.kierunek = 1; ludek.y -= 2; }
            if( key[ KEY_DOWN ] ) { ludek.kierunek = 3; ludek.y += 2; }
            speed--;
           
            frame++;
            if( frame > 40 ) frame = 0;
           
        }
        // Czyszczenie bufora
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
       
        // Sterowanie animacją
        if( frame < 20 ) { ludek.klatka = 0; }
        else if( frame >= 20 && frame < 40 ) { ludek.klatka = 1; }
       
        //Wyświetlanie ludzika
        masked_blit( ludekb, bufor, ludek.kierunek * 60, ludek.klatka * 60, ludek.x, ludek.y, 60, 60 );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
    // Usuwanie wszystkiego z pamięci.
    remove_int( increment_speed );
    destroy_bitmap( ludekb );
    destroy_bitmap( bufor );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
P-92655
DejaVu
» 2013-09-25 18:01:16
Prawdopodobnie Twoja tekstura nie jest zapisana w formacie *.bmp.
P-92656
LislaV
Temat założony przez niniejszego użytkownika
» 2013-09-25 20:26:18
Właśnie jest w formacie *.bmp..
P-92658
pekfos
» 2013-09-25 20:38:24
W formacie, czy o rozszerzeniu .bmp? Dopisz sprawdzanie poprawności bitmapy po wczytaniu.
P-92659
LislaV
Temat założony przez niniejszego użytkownika
» 2013-09-25 20:55:01
Zrobiłem swoją bitmape w gimpie i wyeksportowałem do pliku *.bmp. Dodałem sprawdzenie bitmapy i teraz po uruchomieniu mam brak odpowiedzi.
P-92660
pekfos
» 2013-09-25 20:56:32
Zrobiłeś tak samo, jak przy sprawdzaniu bufora?
P-92661
LislaV
Temat założony przez niniejszego użytkownika
» 2013-09-25 20:57:54
C/C++
// Ładowanie grafiki
ludekb = load_bmp( "postac.bmp", default_palette );
if( !ludekb )
{
    set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
    allegro_message( "Nie mogę otworzyć piku postac.bmp!" );
    allegro_exit();
    return 0;
}

Taki kod dodałem.
P-92662
DejaVu
» 2013-09-25 20:58:56
Może włączyłeś w gimpie jakąś kompresję czy coś?
P-92663
« 1 » 2
  Strona 1 z 2 Następna strona