Skocz do zawartości

Allegro


szpaq99

Rekomendowane odpowiedzi

/*!--- CObject ---*/
/*! Klasa obiektu. */
class CObject
{
public:
//! Ilosc bitmap.
SubImages;
//! Wskaznik na tablice dynamiczna wskaznikow bitmap sprajtow
BITMAP** Bitmaps;
//! Numer bierzacej bitmapy
int CurrentImage;
//! Pozycja X.
int X;
//! Pozycja Y.
int Y;
/*! Konstruktor domyslny.
subimages: ilosc bitmap jakie posiada obiekt.
*/
CObject( int subimages = 1 );
/*! Destruktor. */
~CObject();
/*! Animuje obiekt.
speed: ilosc klatek ktore ma 'przeskoczyc'.
*/
void Animate( int speed );
};

CObject::CObject(int subimages)
{
if( subimages < 1 ) subimages = 1; // minimalna liczba bitmap to 1
Bitmaps = new BITMAP* [ subimages ]; // tworzysz tablice wskaznikow na bitmapy
CurrentImage = 0; // indeks bierzacej bitmapy
SubImages = subimages; // zapamietujesz ich ilosc
}

CObject::~CObject()
{
/*
tutaj dasz petle w ktorej niszczysz wszystkie bitmapy w tablicy.
*/
if( Bitmaps ) delete[] Bitmaps; // oczywiscie usuwasz tez sama tablice wskaznikow na bitmapy
}

void CObject::Animate( int speed )
{
CurrentImage += speed; // dodajesz klatki
CurrentImage = CurrentImage % SubImages; // ograniczasz numer bierzacej klatki do ich maksymalnej liczby
}

int main()
{
CObject obiekt( 4 ); // tworzymy obiekt o 4 bitmapach
/* ladujemy bitmapy */
obiekt.Bitmaps[ 0 ] = load_bitmap( "sprajt0.bmp" );
obiekt.Bitmaps[ 1 ] = load_bitmap( "sprajt1.bmp" );
obiekt.Bitmaps[ 2 ] = load_bitmap( "sprajt2.bmp" );
obiekt.Bitmaps[ 3 ] = load_bitmap( "sprajt3.bmp" );

// petla w ktorej rysujesz bitmapy pobierajac je przez: obiekt.Bitmap[ obiekt.CurrentImage ]
}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
Sorry psichix ale ja jestem jeszcze za tempy żeby używać klas, i czy jest w allegro funkcja do rotacji sprita i jak ją używać

?

google -> allegro sprite rotation

Odnośnik do komentarza
Udostępnij na innych stronach

Tak wygląda mój kod na chodzenie, ale nie wiem co zrobić aby postać po naciśnięciu obu klawiszy nie poruszała się na ukos ?

 

 if(key[KEY_LEFT])  
         {
         BmpState = 2; 
         BmpState_x--;
         }
         if(key[KEY_RIGHT]) 
         {
         BmpState = 0;
         BmpState_x++; 
         }
         if( key[KEY_UP])  
         {
         BmpState = 3;
         BmpState_y--;
         }
         if( key[KEY_DOWN])
         {
         BmpState = 1;
         BmpState_y++; 
         }

Odnośnik do komentarza
Udostępnij na innych stronach

wrzuć else'y pomiędzy ify.

if(key[KEY_LEFT])  
         {
         BmpState = 2; 
         BmpState_x--;
         }
else
         if(key[KEY_RIGHT]) 
         {
         BmpState = 0;
         BmpState_x++; 
         }
else
         if( key[KEY_UP])  
         {
         BmpState = 3;
         BmpState_y--;
         }
else
         if( key[KEY_DOWN])
         {
         BmpState = 1;
         BmpState_y++; 
         }

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...