szpaq99 Opublikowano 25 Kwietnia 2010 Opublikowano 25 Kwietnia 2010 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?
Konrad-GM Opublikowano 25 Kwietnia 2010 Opublikowano 25 Kwietnia 2010 Bodajże Allegro korzysta z BITMAP, użyj wskaźników.
Rudy Opublikowano 25 Kwietnia 2010 Opublikowano 25 Kwietnia 2010 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
szpaq99 Opublikowano 25 Kwietnia 2010 Autor Opublikowano 25 Kwietnia 2010 Czyli jak na przykład zrobić tą tablicę ?
PsichiX Opublikowano 25 Kwietnia 2010 Opublikowano 25 Kwietnia 2010 /*!--- 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 ] }
szpaq99 Opublikowano 25 Kwietnia 2010 Autor Opublikowano 25 Kwietnia 2010 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ć ?
Filar Społeczności ANtY Opublikowano 25 Kwietnia 2010 Filar Społeczności Opublikowano 25 Kwietnia 2010 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
szpaq99 Opublikowano 3 Maja 2010 Autor Opublikowano 3 Maja 2010 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++; }
Jaklub Opublikowano 3 Maja 2010 Opublikowano 3 Maja 2010 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++; }
Rekomendowane odpowiedzi
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ę