Bartaz Temat założony przez niniejszego użytkownika |
[Allegro, C++] Srcolling mapy kafelkowej » 2010-07-11 12:33:04 Witam moze mi ktos poprawic ten kod bo ja juz nie mam sil xd -Nie dziala w nim to ze nie moge przesuwac mapy ani do gory ani na dol tylko lewo prawo no i dziwnie sie jakos wyswietlaja te kafelki. Kod: #include <allegro.h> BITMAP * bufor = NULL; BITMAP * kafelek1 = NULL; BITMAP * kafelek2 = NULL; BITMAP * kafelek3 = NULL; BITMAP * kafelek4 = NULL;
short int mapa[ 30 ][ 30 ] = { 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, 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, 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, 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 = 50, wysokosc_kafla = 50;
int map_x, map_y;
void map( void ) { for( int x = 0; x < 1000; x++ ) { for( int y = 0; y < 1000; y++ ) { if( mapa[ x ][ y ] == 1 ) blit( kafelek1, bufor, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ x ][ y ] == 2 ) blit( kafelek2, bufor, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); } } } int main() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT, 1000, 700, 0, 0 ); kafelek1 = load_bitmap( "Gfx/Maps/grass.bmp", default_palette ); kafelek2 = load_bitmap( "Gfx/Maps/way.bmp", default_palette ); kafelek3 = load_bitmap( "Gfx/Maps/way_white.bmp", default_palette ); kafelek4 = load_bitmap( "Gfx/Maps/ziemia.bmp", default_palette ); bufor = create_bitmap( 1000, 700 ); while( !key[ KEY_ESC ] ) { if( key[ KEY_RIGHT ] ) map_x++; else if( key[ KEY_LEFT ] ) map_x--; else if( key[ KEY_DOWN ] ) map_y++; else if( key[ KEY_UP ] ) map_y--; clear_to_color( bufor, makecol( 70, 70, 70 ) ); map(); masked_blit( bufor, screen, 0, 0, 0, 0, 1000, 700 ); } allegro_exit(); return( 0 ); } END_OF_MAIN(); [ / code ]
|