Allegro 5, funkcje oraz int main()
Ostatnio zmodyfikowano 2012-10-16 17:54
Temes Temat założony przez niniejszego użytkownika |
Allegro 5, funkcje oraz int main() » 2012-10-16 17:34:12 Witam. Mam wielki problem. Mam taki kod (kod jest skrócony o niepotrzebne i niezwiązane z tematem rzeczy): int main() { al_init(); al_init_image_addon(); int Poziom; ALLEGRO_BITMAP * Mapa_1 = al_load_bitmap( "media/mapa_1.png" ); ALLEGRO_BITMAP * Mapa_2 = al_load_bitmap( "media/mapa_2.png" ); ALLEGRO_BITMAP * Mapa_3 = al_load_bitmap( "media/mapa_3.png" ); ...( i tutaj duuuuzo map )... ...obliczenia... if( Poziom == 1 ) al_draw_bitmap( Mapa_1, 0, 0, 0 ); if( Poziom == 2 ) al_draw_bitmap( Mapa_2, 0, 0, 0 ); if( Poziom == 3 ) al_draw_bitmap( Mapa_3, 0, 0, 0 ); ...itd. }
Problem polega na tym, że, załóżmy, mamy z 20 map. Chce aby "poziom" odpowiadał za mapę, czyli jak poziom 1, rysujemy mapę 1, jak 2 to mapę 2, jak 565 to mapę 565 itd.. problem polega na tym, że muszę to wrzucić w funkcję. void rysuj_mape() { if( Poziom == 1 ) al_draw_bitmap( Mapa_1, 0, 0, 0 ); if( Poziom == 2 ) al_draw_bitmap( Mapa_2, 0, 0, 0 ); if( Poziom == 3 ) al_draw_bitmap( Mapa_3, 0, 0, 0 ); ...itd. }
Problem w tym, że w funkcji, muszę rysować obrazki (al_draw_bitmap) a w tym celu, potrzebuję wcześniejszej deklaracji (przed voidem musi stać ALLEGRO_BITMAP *...), ale tu z kolei potrzebuję "inita" (al_init_image_addon();), a przecież inity muszą być w int main(). Co mam zrobić, aby nie pisać 500 razy tego ifa? |
|
SeaMonster131 |
» 2012-10-16 17:54:21 ALLEGRO_BITMAP * mapa[ 500 ];
string sciezka; for( int i = 0; i < 500; i++ ) { sciezka = "media/mapa_"; .. sciezka += ".png"; mapa[ i ] = al_load_bitmap( sciezka.c_str() ); }
al_draw_bitmap( mapa[ poziom ], x, y, 0 );
|
|
« 1 » |