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

[Allegro] Animacja

Ostatnio zmodyfikowano 2012-11-07 20:35
Autor Wiadomość
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:

C/C++
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:

C/C++
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;
   
}
P-68571
crash
» 2012-11-07 20:35:23

class Player{
...
BITMAP * bmp[ 8 ];

Eee wrrr. W momencie tworzenia obiektu podawaj w konstruktorze ilość klatek i podaj mu bitmapy, które ma wczytać. Do tego jakaś zmienna znająca rozmiar danej tablicy.
P-68751
« 1 »
  Strona 1 z 1