Giedzu Temat założony przez niniejszego użytkownika |
[Allegro] Animacja » 2012-11-05 19:22:09 Witam, mam problem z animacją, tzn mam klasę w której mam bitmapę w postaci 8 el. Problem nasuwa się gdy chce stworzyć kolejny obiekt, w którym akurat nie mam 8 klatek animacji a mam np 6 i nie wiem jak zapisać to żeby animacja była optymalna na różne ilości klatek. Próbowałem użyć vectora ale coś nie idzie. Oto kodzik: Klasa: class player { public: int hp; int grawitacja; int klatka; float x; float y; int kierunek; bool stoi; string nazwa; BITMAP * bmp[ 8 ]; void rysuj( BITMAP * bufor ); void ruszaj(); void info(); bool kolizja(); };
Funkcja rysowania: void player::rysuj( BITMAP * bufor ) { klatka++; if( kierunek == 2 && stoi == false ) { if( klatka >= 0 && klatka < 25 ) masked_blit( bmp[ 0 ], bufor, 0, 0, x, y, bmp[ 0 ]->w, bmp[ 0 ]->h ); else if( klatka >= 25 && klatka < 50 ) masked_blit( bmp[ 1 ], bufor, 0, 0, x, y, bmp[ 1 ]->w, bmp[ 1 ]->h ); else if( klatka >= 50 && klatka < 75 ) masked_blit( bmp[ 2 ], bufor, 0, 0, x, y, bmp[ 2 ]->w, bmp[ 2 ]->h ); else masked_blit( bmp[ 3 ], bufor, 0, 0, x, y, bmp[ 3 ]->w, bmp[ 3 ]->h ); } else if( kierunek == 2 && stoi == true ) masked_blit( bmp[ 0 ], bufor, 0, 0, x, y, bmp[ 0 ]->w, bmp[ 0 ]->h ); if( kierunek == 1 && stoi == false ) { if( klatka >= 0 && klatka < 25 ) masked_blit( bmp[ 4 ], bufor, 0, 0, x, y, bmp[ 4 ]->w, bmp[ 4 ]->h ); else if( klatka >= 25 && klatka < 50 ) masked_blit( bmp[ 5 ], bufor, 0, 0, x, y, bmp[ 5 ]->w, bmp[ 5 ]->h ); else if( klatka >= 50 && klatka < 75 ) masked_blit( bmp[ 6 ], bufor, 0, 0, x, y, bmp[ 6 ]->w, bmp[ 6 ]->h ); else masked_blit( bmp[ 7 ], bufor, 0, 0, x, y, bmp[ 7 ]->w, bmp[ 7 ]->h ); } else if( kierunek == 1 && stoi == true ) masked_blit( bmp[ 4 ], bufor, 0, 0, x, y, bmp[ 4 ]->w, bmp[ 4 ]->h ); if( klatka > 100 ) klatka = 0; }
|