Bartaz Temat założony przez niniejszego użytkownika |
» 2011-03-16 16:52:14 Dobra dziala juz lepiej tylko jakos dziwnie mapa np jest taka
short int mapa[ 5 ][ 5 ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 };
A wyswietla sie jako taka:
short int mapa[ 5 ][ 5 ] = { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
I caly kod:
short int mapa[ 5 ][ 5 ] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }; int map_x = 0, map_y = 0; for( int x = 0; x < 5; x++ ) { for( int y = 0; y < 5; y++ ) { if( mapa[ x ][ y ] == 0 ) blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ x ][ y ] == 1 ) blit( droga_pozioma, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); } } };
O co chodzi? |
Bartaz Temat założony przez niniejszego użytkownika |
» 2011-03-16 20:07:02 EDIT********************************************* JUZ DZIALA POPROSTU ZMINNE MIALEM W ZLYM MIEJSCU I CIAGLE SIE POZYCJA MAPY ZEROWALA. A wiec znowu mam problem ktory jest dzinwy bo to nie ma prawa nie dzialac xd a polega on na tym ze mapa sie nie przesuwa . Tutaj kod odpowiedzialny za przesuwanie mapy: void control_bus() //*************************STERUJE AUTOBUSEM************************* { if( key[ KEY_LEFT ] ) { kat -= 0.3; map_x--; } if( key[ KEY_RIGHT ] ) { kat += 0.3; map_x++; } if( key[ KEY_UP] ) { map_y--; class_autobus.v += 0.01; } if( key[ KEY_DOWN ] ) { map_y++; class_autobus.v -= 0.007; } if( class_autobus.v > 7 ) class_autobus.v = 7; if( class_autobus.v <- 3 ) class_autobus.v =- 3; class_autobus.v *= 0.99; class_autobus.x += class_autobus.v * cos(( kat * M_PI ) / 180.0 ); class_autobus.y += class_autobus.v * sin(( kat * M_PI ) / 180.0 ); };
Tutaj mapa:
short int mapa[7][7]= { 7,1,1,1,1,1,7, 0,2,2,2,2,2,0, 0,9,4,5,0,8,0, 7,1,1,1,1,1,7, 2,9,3,2,0,2,2, 2,2,2,2,0,2,2, 2,2,2,2,0,2,2,
};
int map_x=0, map_y=0; int kaf1x=0; int kaf1y=0; for( int x = 0; x < 7; x++ ) { for( int y = 0; y < 7; y++ ) { if( mapa[ y ][ x ] == 0 ) blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 1 ) blit( droga_pozioma, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 2 ) blit( trawa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 3 ) blit( przystanek, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 4 ) blit( bud_1_cz1,bufor,0,0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 5 ) blit( bud_1_cz2,bufor,0,0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 6 ) blit( dom, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 7 ) blit( droga, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 8 ) blit( parking, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+ y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 9 ) blit( drzewo, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y+y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
} } };
I caly kod: #include <allegro.h> #include <math.h>
double kat = 90.0; int szerokosc_kafla = 130; int wysokosc_kafla = 130; int map_x = 0; int map_y = 0;
BITMAP * bufor = NULL; BITMAP * autobus = NULL; BITMAP * droga_pionowa = NULL; BITMAP * droga_pozioma = NULL; BITMAP * trawa = NULL; BITMAP * przystanek = NULL; BITMAP * bud_1_cz1 = NULL; BITMAP * bud_1_cz2 = NULL; BITMAP * dom = NULL; BITMAP * droga = NULL; BITMAP * parking = NULL; BITMAP * drzewo = NULL;
class cautobus { public: float x; float y; float v; cautobus(); }; cautobus::cautobus() { x = 500; y = 300; v = 0; }
cautobus class_autobus;
void allegro_start() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT, 1100, 700, 0, 0 ); clear_to_color( screen, makecol( 7, 128, 128 ) ); };
void load_bitmaps() { autobus = load_bitmap( "autobus.bmp", default_palette ); droga_pionowa = load_bitmap( "droga_pionowo.bmp", default_palette ); droga_pozioma = load_bitmap( "droga_poziomo.bmp", default_palette ); trawa = load_bitmap( "trawa.bmp", default_palette ); przystanek = load_bitmap( "przystanek.bmp", default_palette ); bud_1_cz1 = load_bitmap( "bud_1_cz1.bmp", default_palette ); bud_1_cz2 = load_bitmap( "bud_1_cz2.bmp", default_palette ); dom = load_bitmap( "dom.bmp", default_palette ); droga = load_bitmap( "droga.bmp", default_palette ); parking = load_bitmap( "parking.bmp", default_palette ); drzewo = load_bitmap( "drzewo.bmp", default_palette ); };
void create_bitmaps() { bufor = create_bitmap( 1100, 700 ); };
void show_bitmaps() { rotate_sprite( bufor, autobus,( int ) round( class_autobus.x ),( int ) round( class_autobus.y ), ftofix(( kat * 256 ) / 360.0 ) ); masked_blit( bufor, screen, 0, 0, 0, 0, 1100, 700 ); }; void clear_bufor() { clear_to_color( bufor, makecol( 70, 70, 70 ) ); };
void control_bus() { if( key[ KEY_LEFT ] ) { kat -= 0.3; map_x--; } if( key[ KEY_RIGHT ] ) { kat += 0.3; map_x++; } if( key[ KEY_UP ] ) { map_y--; class_autobus.v += 0.01; } if( key[ KEY_DOWN ] ) { map_y++; class_autobus.v -= 0.007; } if( class_autobus.v > 7 ) class_autobus.v = 7; if( class_autobus.v <- 3 ) class_autobus.v =- 3; class_autobus.v *= 0.99; class_autobus.x += class_autobus.v * cos(( kat * M_PI ) / 180.0 ); class_autobus.y += class_autobus.v * sin(( kat * M_PI ) / 180.0 ); };
void map_1() { short int mapa[ 7 ][ 7 ] = { 7, 1, 1, 1, 1, 1, 7, 0, 2, 2, 2, 2, 2, 0, 0, 9, 4, 5, 0, 8, 0, 7, 1, 1, 1, 1, 1, 7, 2, 9, 3, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, }; int map_x = 0, map_y = 0; int kaf1x = 0; int kaf1y = 0; for( int x = 0; x < 7; x++ ) { for( int y = 0; y < 7; y++ ) { if( mapa[ y ][ x ] == 0 ) blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 1 ) blit( droga_pozioma, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 2 ) blit( trawa, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 3 ) blit( przystanek, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 4 ) blit( bud_1_cz1, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 5 ) blit( bud_1_cz2, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 6 ) blit( dom, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 7 ) blit( droga, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 8 ) blit( parking, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ y ][ x ] == 9 ) blit( drzewo, bufor, 0, 0, map_x + x * szerokosc_kafla, map_y + y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); } } };
int main() { allegro_start(); create_bitmaps(); load_bitmaps(); while( !key[ KEY_ESC ] ) { control_bus(); clear_bufor(); map_1(); map_x = map_x + 500; show_bitmaps(); } allegro_exit(); return 0; } END_OF_MAIN();
|