bingo009 Temat założony przez niniejszego użytkownika |
Błędy przy wykorzystaniu tablicy » 2011-05-05 16:10:33 Witam was serdecznie. Piszę sobie gre 2D w Allegro i jak mi polecono na tym forum chcę wykorzystać tablicę do narysowania mapki. Zrobiłem to tak: for( int y = 0; y < 100; y++ ) { for( int x = 0; x < 100; x++ ) { if( player_x >=(( x * 50 ) - 1000 ) && player_x <=(( x * 50 ) + 1000 ) && player_y >=(( y * 50 ) - 1000 ) && player_y <=(( y * 50 ) + 1000 ) ) { if( mapa[ y ][ x ] == 1 ) draw_sprite( bufor, grass, x * 50, y * 50 ); if( mapa[ y ][ x ] == 2 ) draw_sprite( bufor, grass, 45, 440 ); } } }
Niestety przy kompilacij dostaje te errory: ||=== Moja gra, Debug ===| F:\CodeBlocks\Projects\Moja gra\Moja gra\main.cpp|28|error: expected unqualified-id before 'for'| F:\CodeBlocks\Projects\Moja gra\Moja gra\main.cpp|28|error: expected constructor, destructor, or type conversion before '<' token| F:\CodeBlocks\Projects\Moja gra\Moja gra\main.cpp|28|error: expected constructor, destructor, or type conversion before '++' token| ||=== Build finished: 3 errors, 0 warnings ===|
Nie rozumiem o co chodzi. Tablica wydaję się w porządku. Proszę o pomoc. |
|
szyx_yankez |
» 2011-05-05 16:21:55 Fragment kodu który podałeś jest poprawny, wklej cały plik(kod). |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2011-05-05 16:44:27 1 błąd nie ważny działa ale teraz pojawił się nowy. Otóż nie działa mi ta metoda. Nie rysuje mapki. Włączam i nic się nie pojawia tylkop postać. To mój kod(cały): #include <allegro.h>
volatile long speed = 0;
void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
bool kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 ) { if( x2 <= x1 + s1 && x2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else if( x2 <= x1 + s1 && x2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true; else if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true; else return false; };
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); clear_to_color( screen, makecol( 128, 128, 128 ) ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 130 ) ); BITMAP * player0 = NULL; BITMAP * player1 = NULL; BITMAP * grass = NULL; BITMAP * bufor = NULL; BITMAP * tlo = NULL; tlo = load_bmp( "tlo.bmp", default_palette ); if( !tlo ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "B³¹d w ³adowaniu obrazka background.bmp !" ); allegro_exit(); return 0; } grass = load_bmp( "grass.bmp", default_palette ); if( !grass ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "B³¹d w ³adowaniu obrazka grass.bmp !" ); allegro_exit(); return 0; } bufor = create_bitmap( 640, 480 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogê utworzyæ bufora !" ); allegro_exit(); return 0; } player0 = load_bmp( "player00.bmp", default_palette ); player1 = load_bmp( "player01.bmp", default_palette ); int tlo_y = 0, tlo_x = 0; player0 = load_bmp( "player00.bmp", default_palette ); if( !player0 ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "B³¹d w ³adowaniu obrazka player00.bmp !" ); allegro_exit(); return 0; } int player_x = 100, player_y = 100; int grass_x = 0, grass_y = 440; int frame = 0; while( !key[ KEY_ESC ] ) { while( speed > 0 ) { if( key[ KEY_LEFT ] ) player_x--; if( key[ KEY_RIGHT ] ) player_x++; if( key[ KEY_UP ] ) player_y--; if( key[ KEY_DOWN ] ) player_y++; if( key[ KEY_F9 ] ) save_bitmap( "ekran.bmp", bufor, default_palette );; speed--; frame++; if( frame > 80 ) frame = 0; } clear_to_color( bufor, makecol( 150, 150, 150 ) ); int mapa[ 100 ][ 100 ]; for( int y = 0; y < 100; y++ ) { for( int x = 0; x < 100; x++ ) { if( player_x >=(( x * 50 ) - 1000 ) && player_x <=(( x * 50 ) + 1000 ) && player_y >=(( y * 50 ) - 1000 ) && player_y <=(( y * 50 ) + 1000 ) ) { if( mapa[ y ][ x ] == 1 ) draw_sprite( bufor, grass, x * 50, y * 50 ); if( mapa[ y ][ x ] == 2 ) draw_sprite( bufor, grass, 45, 440 ); } } } blit( tlo, bufor, 0, 0, tlo_y, tlo_y, tlo->w, tlo->h ); if( frame < 65 ) { draw_sprite( bufor, player1, player_x, player_y ); } else if( frame >= 65 && frame < 130 ) { draw_sprite( bufor, player0, player_x, player_y ); } blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } remove_int( increment_speed ); destroy_bitmap( player0 ); destroy_bitmap( player1 ); destroy_bitmap( bufor ); destroy_bitmap( tlo ); allegro_exit(); return 0; } END_OF_MAIN();
|
|
szyx_yankez |
» 2011-05-05 16:51:48 Najpierw rysujesz mapę, potem na niej tło, czy aby nie zakrywasz mapki tłem?
Po za tym dziwnie wyświetlasz mapę kafelkową(poszukaj teamtów o tym, była ich tu masa). |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2011-05-05 16:58:31 Nic to nie dało niestety. |
|
SeaMonster131 |
» 2011-05-05 17:16:15 Masz int map[ 100 ][ 100 ]; i później ją tylko wyświetlasz. Nic nie ma, ponieważ liczby w tej tablicy mają 0 czy tam jakąś inną liczbę (nie wiem jaką). Musisz nadać każdej komórce w tej tablicy jakąś wartość. |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2011-05-05 18:34:43 Poprawiłem i śmiga jak złoto. Teraz będe kombinował nad kolizją i grawitacją bo to też trudna rzecz. Dzięki za pomoc. |
|
« 1 » |