poldek Temat założony przez niniejszego użytkownika |
[C++, Allegro] Animowane elementy mapy kafelkowej » 2011-12-08 21:26:05 Witam, Tak jak w temacie chce zrobić Mario podobną gierkę ,ale chce wykorzystać animacje ,które mniej więcej umiem (zazwyczaj ich nie używam) i chce zrobić np.: Mapę kafelkową 3 4 //(x, y) 1 1 1 1 3 1 1 3 1 1 1 1 gdzie 3 to animowany znak zapytania ... wczytywanie mapy już mam ,ale nie wiem jak zrobić animacje mapy kafelkowej i tu się do was zwracam o pomoc. Pytanie brzmi jak to zrobić ? Tutaj kod wczytywania mapy : void Mapa::loadMap( const char * filename ) { fstream plik( filename, ios::app | ios::in | ios::out ); if( plik.good() == false ) { } else { plik >> sizeX >> sizeY; for( int i = 0; i < sizeX; i++ ) { for( int a = 0; a < sizeY; a++ ) { plik >> Map[ i ][ a ]; } } } plik.close(); }
Tu wyświetlania (bez animacji) void Mapa::OldDraw( BITMAP * bufor ) { for( int i = 0; i < sizeY; i++ ) { for( int a = 0; a < sizeX; a++ ) { if( Map[ a ][ i ] == 0 ) { rectfill( bufor, i * BlockSize, a * BlockSize, i * BlockSize + BlockSize, a * BlockSize + BlockSize, makecol( 255, 255, 255 ) ); } else if( Map[ a ][ i ] == 1 ) { rectfill( bufor, i * BlockSize, a * BlockSize, i * BlockSize + BlockSize, a * BlockSize + BlockSize, makecol( 255, 255, 0 ) ); } } } }
|
|
SeaMonster131 |
» 2011-12-08 21:33:21 Hm.. int klatka_animacji = 0;
void Wyswietl_mape() { klatka_animacji++; if( mapa[ y ][ x ] == 3 ) { if( klatka_animacji <= 10 ) wyswietl_bitmape( 1 ); if( klatka_animacji > 10 && klatka_animacji <= 20 ) wyswietl_bitmape( 2 ); } }
Czyli robisz to jak zwykłą animację :) Przynajmniej ja tak robiłem i wychodziło dobrze :) |
|
poldek Temat założony przez niniejszego użytkownika |
» 2011-12-08 21:38:35 Hmmm... Pewnie masz racje że tak można zrobić ale ale ale można się domyślić po nazwie funkcji rysującej OldDraw ... mniej więcej po polsku to oznacza stare rysowanie i jeszcze jak by ktoś mógł znaleść rozwiązanie dla mojego ,,Nowego" rysowania... Z góry bardzo dziękuje void Mapa::SaveMap( const char * filename ) { BITMAP * Savebitmap = create_bitmap( sizeY * BlockSize, sizeX * BlockSize ); for( int i = 0; i < sizeY; i++ ) { for( int a = 0; a < sizeX; a++ ) { if( Map[ a ][ i ] == 0 ) { rectfill( Savebitmap, i * BlockSize, a * BlockSize, i * BlockSize + BlockSize, a * BlockSize + BlockSize, makecol( 255, 255, 255 ) ); } else if( Map[ a ][ i ] == 1 ) { rectfill( Savebitmap, i * BlockSize, a * BlockSize, i * BlockSize + BlockSize, a * BlockSize + BlockSize, makecol( 255, 255, 0 ) ); } } } save_bitmap( filename, Savebitmap, default_palette ); destroy_bitmap( Savebitmap ); }
i void Mapa::loadDrawMap( const char * filename ) { DrawMap = load_bitmap( filename, default_palette ); if( !DrawMap ) { cout << "error" << endl; } }
void Mapa::Draw( BITMAP * bufor ) { blit( DrawMap, bufor, 0, 0, 0, 0, DrawMap->w, DrawMap->h ); }
|
|
« 1 » |