Scot Temat założony przez niniejszego użytkownika |
[C++/Allegro] Wzbogacanie kodu o scrollowanie i kafelkoawnie mapy. » 2010-06-30 19:18:36 Problem moj polega na tym iz jestem nowym uzytkownikiem allegro i jesli sam napisze cos to umiem z tego skorzystac , ale jesli w gre wchodzi buforowanie itp zawsze mam problemy zastosowac to w wlasnym kodziem . Tym razem przyszla kolej na scrollowanie . Scrollowanie i kafelkownie mapy jest skopiowane z forum , jednak nie dokonca dziala . Na tablicach sie nie znam wiec rowniez zapewne sa zle . Prosilbym by ktos doswiadczony poprawil kodzik by wszystko dzialalo tzn wywalil to co zbedne . Postac - postac.bmp Niebo - kafel1.bmp Piasek - kafel2.bmp Mapa - mapax [jednak teraz chce ja zastapic kaflami] #include <allegro.h> BITMAP * plansza = create_bitmap( SCREEN_W, SCREEN_H ); BITMAP * kafel1 = load_bmp( "kafel1.bmp", default_palette ); BITMAP * kafel2 = load_bmp( "kafel2.bmp", default_palette );
int map_x = 0, map_y = 0; int szerokosc_kafla = 40, wysokosc_kafla = 40;
void map( void ) { for( int x = 0; x > 10; x++ ) { for( int y = 0; y > 10; y++ ) { if( mapa[ x ][ y ] == 1 ) blit( kafel1, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ x ][ y ] == 2 ) blit( kafel2, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); } } }
int mapa[ 20 ][ 10 ] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
int szerokosc_kafla = 40, wysokosc_kafla = 40; void map( void ) { for( int x = 0; x > 10; x++ ) { for( int y = 0; y > 10; y++ ) { if( mapa[ x ][ y ] == 1 ) blit( kafel1, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ x ][ y ] == 2 ) blit( kafel2, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); int postac_x = 5, postac_y = 455; int mapa_x = 0, mapa_y = 0; while( !key[ KEY_ESC ] ) { if(( key[ KEY_RIGHT ] ) &&( mapa_x < 10 ) ) { mapa_x = mapa_x + 1; } else if(( key[ KEY_LEFT ] ) &&( mapa_x > 0 ) ) { mapa_x = mapa_x - 1; } else if(( key[ KEY_DOWN ] ) &&( mapa_y < 5 ) ) { mapa_y = mapa_y + 1; } else if(( key[ KEY_UP ] ) &&( mapa_y > 0 ) ) { mapa_y = mapa_y - 1; } if( key[ KEY_LEFT ] ) postac_x--; if( key[ KEY_RIGHT ] ) postac_x++; clear_to_color( bufor, makecol( 150, 150, 150 ) ); masked_blit( mapax, bufor, 0, 0, 0, 0, mapax->w, mapax->h ); masked_blit( postac, bufor, 0, 0, postac_x, postac_y, postac->w, postac->h ); blit( bufor, screen, 0, 0, 0, 0, bufor->w, bufor->h );
|