Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Błędy przy wykorzystaniu tablicy

Ostatnio zmodyfikowano 2011-05-05 18:34
Autor Wiadomość
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:
C/C++
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.
P-32687
szyx_yankez
» 2011-05-05 16:21:55
Fragment kodu który podałeś jest poprawny, wklej cały plik(kod).
P-32688
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):
C/C++
#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();
P-32689
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).
P-32690
bingo009
Temat założony przez niniejszego użytkownika
» 2011-05-05 16:58:31
Nic to nie dało niestety.
P-32691
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ść.
P-32693
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.
P-32696
« 1 »
  Strona 1 z 1