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

Allegro mapa sie nie wyswietla

Ostatnio zmodyfikowano 2011-03-16 20:12
Autor Wiadomość
Bartaz
Temat założony przez niniejszego użytkownika
Allegro mapa sie nie wyswietla
» 2011-03-14 20:35:41
Witam
tak jak w temacie nie wiem co jest nie tak tu daje kod odpowiedzialny za wyswietlanie mapy:
C/C++
void mapa() //************************ WYSWIETLA MAPE****************************
{
   
    short int mapa[ 30 ][ 30 ] =
    {
        0, 0, 0, 0
    };
    for( int x = 0; x > 10; x++ )
    {
        for( int y = 0; y > 10; y++ )
        {
            if( mapa[ x ][ y ] == 0 )
            {
                blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
            }
        }
    }
};

A tutaj caly kod:
C/C++
#include <allegro.h>
#include <math.h>


//**********************ZMIENNE********************************

double kat = 123.0;
int szerokosc_kafla = 130;
int wysokosc_kafla = 130;
int map_x;
int map_y;
int x;
int y;
//**********************BITMAPY*********************************

BITMAP * bufor = NULL;
BITMAP * autobus = NULL;
BITMAP * droga_pionowa = NULL;
BITMAP * droga_pozioma = NULL;


//**********************KLASY***********************************

class cautobus
{
public:
    float x;
    float y;
    float v;
    cautobus();
};
cautobus::cautobus()
{
    x = 300;
    y = 500;
    v = 0;
}

cautobus class_autobus;
//**********************FUNKCJE*********************************

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() //*********************LADUJE BITMAPY***************************
{
    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 );
};

void create_bitmaps() //*******TWORZY BITMAPY******************
{
    bufor = create_bitmap( 1100, 700 );
};

void show_bitmaps() //************POKAZUJE BITMAPY*************
{
   
   
    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() //********CZYSCI BUFOR***********************
{
    clear_to_color( bufor, makecol( 70, 70, 70 ) );
};

void control_bus() //*************************STERUJE AUTOBUSEM*************************
{
    if( key[ KEY_LEFT ] ) kat -= 0.3;
   
    if( key[ KEY_RIGHT ] ) kat += 0.3;
   
    if( key[ KEY_UP ] ) class_autobus.v += 0.01;
   
    if( key[ KEY_DOWN ] ) class_autobus.v -= 0.007;
   
    if( class_autobus.v > 5 ) class_autobus.v = 5;
   
    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 mapa() //************************ WYSWIETLA MAPE****************************
{
   
    short int mapa[ 30 ][ 30 ] =
    {
        0, 0, 0, 0
    };
    for( int x = 0; x > 10; x++ )
    {
        for( int y = 0; y > 10; y++ )
        {
            if( mapa[ x ][ y ] == 0 )
            {
                blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
            }
        }
    }
};

int main()
{
    allegro_start();
    create_bitmaps();
    load_bitmaps();
   
   
   
    while( !key[ KEY_ESC ] )
    {
        control_bus();
        clear_bufor();
        mapa();
        show_bitmaps();
       
       
    }
    allegro_exit();
    return 0;
}
END_OF_MAIN();
P-29139
ison
» 2011-03-14 20:48:54
nie dziwie się że masz problemy jeśli w ogóle nie robisz wcięć w kodzie, też bym się w tym pogubił (jeśli już tak bardzo nie lubisz wcięć to wstawiaj chociaż kod w [cpp][/cpp])
P-29140
DejaVu
» 2011-03-14 20:55:16
1. Tablica jest zmienną lokalną funkcji, więc idzie do piachu po jej wywołaniu.
2. Nie jest cała zainicjalizowana.
P-29141
Bartaz
Temat założony przez niniejszego użytkownika
» 2011-03-14 21:04:13
@Dejavu
Jak nie jest cala ?to co ja tam mam jeszcze napisac?
P-29142
malan
» 2011-03-14 21:53:56
Ja tu widzę książkowy, głupi błąd ;p. Podpowiem, że w pętli ;p
P-29143
Bartaz
Temat założony przez niniejszego użytkownika
» 2011-03-14 22:10:19
Chodzi ci o "> <" ? jak to to juz to rozwiazalem i niby sie wyswietla ale nie dokladnie xd w sensie ze kafelki nie sa tam gdzie chce .Kod teraz wyglada tak
C/C++
short int mapa[ 3 ][ 4 ] =
{
    1, 1, 1
    , 1
};
for( int x = 0; x < 3; x++ )
{
    for( int y = 0; y < 3; y++ )
    {
        if( mapa[ x ][ y ] == 1 )
        {
           
            blit( droga_pionowa, bufor, 0, 0, map_x + x * szerokosc_kafla, y * wysokosc_kafla, szerokosc_kafla, wysokosc_kafla );
P-29144
malan
» 2011-03-14 22:13:55
Tak, to miałem na myśli.
Na moje to masz ogólnie zły algorytm. Np. nigdzie nie widzę
map_x++;
 lub
map_y++;
. Zapoznaj się z wyświetlaniem mapy według Easykodera :)
P-29145
Bartaz
Temat założony przez niniejszego użytkownika
» 2011-03-14 22:19:20
Tego map_x++ itp nie ma bo to dopiero dam jak bede chcial poruszyc mapa.
Wiem ze jest zly kiedys z niego korzystalem i udalo mi sie go naprawic ale teraz cos mi nie idze xd
Potrzebne mi to a nie easykoder'a bo potem bede mial duzo obrazkow i roznej wielkosci itp.
Moze znasz jakis inny sposob na wyswietlanie z plikow jak tu a nie ze pare obrazkow z jednej bitmapy?
P-29146
« 1 » 2
  Strona 1 z 2 Następna strona