kampar Temat założony przez niniejszego użytkownika |
[Allegro] Problem z gra » 2009-08-20 09:26:52 Witam probuje napisac gre RPG (:)) i mam problem z tym fragmentem kodu: BITMAP * miecz1 = NULL;
void laduj_itemy() { miecz1 = load_bmp( "grafika/miecz1.bmp", default_palette ); };
BITMAP * czysta = NULL;
void laduj_czysta() { czysta = load_bmp( "grafika/czysta.bmp", default_palette ); };
BITMAP * nazwa1;
void zmienne() { nazwa1 = czysta; };
void wyswietl_itemy() { masked_blit( nazwa1, bufor, 0, 0, 564, 10, nazwa1->w, nazwa1->h ); };
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0 ); install_mouse(); bufor = create_bitmap( 640, 480 ); laduj_czysta(); zmienne(); laduj_itemy(); while( !key[ KEY_ESC ] ) { wyswietl_itemy(); } show_mouse( NULL ); destroy_bitmap( miecz1 ); destroy_bitmap( nazwa1 ); destroy_bitmap( czysta ); allegro_exit(); return 0; } END_OF_MAIN();
Niby wszystko dobrze sie kompiluje, program też wlasciwie dobrze dziala, tylko po wylaczeniu wyswietla sie blad (Wystapil problem z aplikacja ble ble i musiala zostac zamknieta...) Dlaczego tak sie dzieje? Niewiem czy zrozumieliscie sens tego kodu Na poczatku laduje obrazki wszystkich itemow do ich nazw(miecz1, miecz2..), potem tworze Bitmapy tyle ile jest okienek w eq (nazwa1,nazwa2...) tworze bitmape czysta, i wczytuje w nia caly rozowy obrazek wielkosci itemow, nastepnie chce aby bitmapy nazwa1(i inne) na poczatku wyswietlaly pusty obrazek (czysta) a potem dowolnie przypisuje do nazwa1, nazwa2... obrazki itemow (miecz1) , a potem jesli chce aby itemy znikly z eq znowu przypisuje do nazwy1 czysta. Troche to skomplikowane, ale mam nadzieje ze zrozumieliscie Z gory dziekuje za wszystkie odpowiedzi |
|
DeBugger |
» 2009-08-20 11:41:29 Ja nie wiem czy to pomoze, ale jezeli wczytujesz do jednej bitmapy wiecej grafik, do przed kazdym wczytaniem niszcz poprzednia (destroy). |
|
DejaVu |
» 2009-08-20 17:54:57 if( miecz1 ) destroy_bitmap( miecz1 );
if( nazwa1 ) destroy_bitmap( nazwa1 );
if( czysta ) destroy_bitmap( czysta ); |
|
kampar Temat założony przez niniejszego użytkownika |
» 2009-08-20 18:32:56 Czyli za kazdym razem bede musial tworzyc bitmape, potem ja niszczyc, a potem znow tworzyc ta sama bitmape? Hmm, to troche komplikuje sprawe... |
|
DejaVu |
» 2009-08-20 19:13:52 int * zmienna = NULL; delete zmienna; Aplikacja się wywali. To samo zachodzi w Twojej aplikacji. |
|
kampar Temat założony przez niniejszego użytkownika |
» 2009-08-21 07:41:31 hm nadal troche nie rozumiem bledu w moim programie. Przecierz na razie nie wczytuje kilku grafik do jednej bitmapy. Po prostu tworze czysta laduje do niej grafike, tworze nazwa1 i przypisuje do niej czysta, a potem tylko wyswietlam nazwa1. I ktora bitmape mam usunac nazwa1? napewno nie .To wiec moze czysta? Probowalem i na miejscu nazwy1 pojawily sie jakies rozmazane obrazki. To wiec co mam zrobic (narazie przypisywanie do nazwy1 obrazkow itemow sobie odpuscmy puzniej bede sie tym martwil). |
|
DejaVu |
» 2009-08-21 12:10:56 Jeśli aplikacja wysypuje się przy zamknięciu to oznacza to, że błąd jest poza pętlą while(). Są bardzo rzadkie przypadki, gdzie mógłby wystąpić wcześniej w podanych okolicznościach, jednak prawdopodobieństwo wystąpienia takiego zdarzenia jest bliskie zeru. Tak więc skoncentruj się na kodzie, który jest poza pętlą. Na początek możesz go całego wykomentować i sprawdzić czy aplikacja dalej się wysypuje. |
|
kampar Temat założony przez niniejszego użytkownika |
» 2009-08-21 12:39:31 problem tkwi w niszczeniu bitmap: po petli while niszcze wszystkie bitmapy, a blad wywala sie przy niszczeniu wszystkich nazw (nazwa1, nazwa2...), gdy je wykomentowalem wszystko dzialalo, powodem tez moze byc funkcja zmienne w ktorej przypisuje do nazw czysta, gdy ja wykomentowalem (ale juz niszczenie nie) program sie nie wywalal. Czy moge calkowicie wywalic niszczenie tych bitmap z mojego programu? |
|
« 1 » 2 |