Bartaz Temat założony przez niniejszego użytkownika |
[Allegro, C++] Po uruchomieniu programu występuje błąd » 2010-05-29 15:24:46 Witam mam sobie taki kod(patrz nizej) i wszystko dziala(kompiluje sie)ale zaraz po tym jest ten błąd z "nie wysylaj" sprawdzalem i wszystkie bitmapy się wczytuje(bufor tez sie tworzy). #include <allegro.h>
BITMAP * plansza = create_bitmap( 1000, 700 ); BITMAP * bufor = NULL; BITMAP * kafelek1 = load_bmp( "trawa.bmp", default_palette ); BITMAP * kafelek2 = load_bmp( "palma.bmp", default_palette );
int mapa[ 20 ][ 20 ] = { 0, 1, 1, 1, 0, 1, 1 };
int szerokosc_kafla = 40, wysokosc_kafla = 40;
int map_x, map_y;
void map( void ) { for( int x = 0; x > 10; x++ ) { for( int y = 0; y > 10; y++ ) { if( mapa[ x ][ y ] == 0 ) blit( kafelek1, plansza, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ x ][ y ] == 1 ) blit( kafelek1, plansza, 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_WINDOWED, 1000, 700, 0, 0 ); bufor = create_bitmap( 1000, 700 ); kafelek1 = load_bmp( "trawa.bmp", default_palette ); kafelek2 = load_bmp( "palma.bmp", default_palette ); 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();
|
|
ison |
» 2010-05-29 15:35:02 w tym miejscu: BITMAP *plansza = create_bitmap(1000,700); BITMAP *bufor=NULL; BITMAP *kafelek1 = load_bmp("trawa.bmp",default_palette); BITMAP *kafelek2 = load_bmp("palma.bmp",default_palette);
musisz wywalic wczytywanie i tworzenie bitmap. Nie mozesz tego robic na globalu. zatem tak powinien wygladac wyzej przedstawiony fragment kodu: BITMAP *plansza=NULL; BITMAP *bufor=NULL; BITMAP *kafelek1=NULL; BITMAP *kafelek2=NULL;
|
|
Bartaz Temat założony przez niniejszego użytkownika |
... » 2010-05-29 15:36:48 Ok dziala ale nic oprocz bufora sie nie wyswietla no i nie moge zrobic np czegos takiego int mapa[20][20]=//Mapa 20 na 20 kafli { 0,1,1,1, 1,0,1,1
};
tylko musi byc tak int mapa[20][20]=//Mapa 20 na 20 kafli { 0,1,1,1,
};
|
|
Bartaz Temat założony przez niniejszego użytkownika |
... » 2010-05-29 15:38:13 Dobra juz naprawilem powinno byc short int ale nadal oprocz bufora nic sie nie wyswietla. |
|
ison |
» 2010-05-29 15:39:45 bo jak masz dwuwymiarowa tablice to inaczej podpisujesz do niej wartosci. musisz tworzyć zbiory zbriorów. I tak wg mnie lepiej mape wczytywac jest z pliku(znacznie lepiej) ale jak juz sie uparles to masz: int map[10][10]= { {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, // itd... };
tak przy okazji to wysokosci i szerokosci bitmap nie musisz trzymac w zmiennych. Zeby odczytac szerokosc bitmapy robisz: jakas_bitmapa->w, a wysokosc: jakas_bitmapa->h w twoim kodzie jest bardzo dużo błędów, między innymi sam for jest źle napisany i się wcale nie wykonuje zamiast '>' powinno byc '<' |
|
Bartaz Temat założony przez niniejszego użytkownika |
.. » 2010-05-29 15:44:32 Nadal sie nic nie wyswietla :( |
|
Bartaz Temat założony przez niniejszego użytkownika |
... » 2010-05-29 15:45:05 Kod do wyswietlania mapy nie jest moj tylko z tego forum. |
|
ison |
» 2010-05-29 15:47:58 kod jest napisany słabo i niestarannie, ja bym go od nowa zaczął pisać. Radzę najpierw wziąć się za podstawy C++. tutaj ten sam kod tylko że poprawiony(tak żeby działał) #include <allegro.h>
BITMAP * plansza; BITMAP * bufor = NULL; BITMAP * kafelek1; BITMAP * kafelek2;
int mapa[ 10 ][ 10 ] = { { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
int szerokosc_kafla = 40, wysokosc_kafla = 40;
int map_x = 0, map_y = 0;
void map() { for( int x = 0; x < 10; x++ ) { for( int y = 0; y < 10; y++ ) { if( mapa[ x ][ y ] == 0 ) blit( kafelek1, plansza, 0, 0, map_x + y * szerokosc_kafla, x * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); if( mapa[ x ][ y ] == 1 ) blit( kafelek2, plansza, 0, 0, map_x + y * szerokosc_kafla, x * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla ); } } } int main() { allegro_init(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 1000, 700, 0, 0 ); bufor = create_bitmap( 1000, 700 ); plansza = create_bitmap( 1000, 700 ); kafelek1 = load_bmp( "trawa.bmp", default_palette ); kafelek2 = load_bmp( "palma.bmp", default_palette ); install_keyboard(); 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 ) ); clear_to_color( plansza, makecol( 0, 0, 0 ) ); map(); blit( plansza, bufor, 0, 0, 0, 0, plansza->w, plansza->h ); blit( bufor, screen, 0, 0, 0, 0, 1000, 700 ); } allegro_exit(); return( 0 ); } END_OF_MAIN(); |
|
« 1 » 2 |