Skocz do zawartości

Allegro


Rekomendowane odpowiedzi

Opublikowano

Mam taki kod na poruszanie się :

 

if( key[KEY_LEFT]) ludek_x--;

if( key[KEY_RIGHT]) ludek_x++;

if( key[KEY_UP]) ludek_y--;

if( key[KEY_DOWN]) ludek_y++;

 

Ale nie wiem jak zrobić aby po naciśnięciu klawisza zmieniać sprita czołgu?

Opublikowano

Ta stronka może pomóc: Kurs ddt

 

Spróbuj zrobić tablicę bitmap, do każdej zapisz po jednym obrazku, potem definicja zmiennej image_index no i

pododawaj wszędzie image_index=numer_obrazka

Opublikowano
/*!--- 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 ]
}

  • Filar Społeczności
Opublikowano
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

Opublikowano

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++; 
         }

Opublikowano

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++; 
         }

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ę...