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:
#include <allegro.h>
class Cpostac { public: int x, y; short int kierunek, klatka; };
Cpostac ludek;
volatile long speed = 0; void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed ); LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
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; 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; } ludekb = load_bmp( "postac.bmp", default_palette ); 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; } clear_to_color( bufor, makecol( 150, 150, 150 ) ); if( frame < 20 ) { ludek.klatka = 0; } else if( frame >= 20 && frame < 40 ) { ludek.klatka = 1; } 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 ); } remove_int( increment_speed ); destroy_bitmap( ludekb ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN();
|
|
DejaVu |
» 2013-09-25 18:01:16 Prawdopodobnie Twoja tekstura nie jest zapisana w formacie *.bmp. |
|
LislaV Temat założony przez niniejszego użytkownika |
» 2013-09-25 20:26:18 Właśnie jest w formacie *.bmp.. |
|
pekfos |
» 2013-09-25 20:38:24 W formacie, czy o rozszerzeniu .bmp? Dopisz sprawdzanie poprawności bitmapy po wczytaniu. |
|
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. |
|
pekfos |
» 2013-09-25 20:56:32 Zrobiłeś tak samo, jak przy sprawdzaniu bufora? |
|
LislaV Temat założony przez niniejszego użytkownika |
» 2013-09-25 20:57:54 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. |
|
DejaVu |
» 2013-09-25 20:58:56 Może włączyłeś w gimpie jakąś kompresję czy coś? |
|
« 1 » 2 |