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

[Allegro] Bufor nie ładuje

Ostatnio zmodyfikowano 2009-07-08 21:30
Autor Wiadomość
eBbi
Temat założony przez niniejszego użytkownika
[Allegro] Bufor nie ładuje
» 2009-07-08 20:46:23
Mam mały problem. Chce zrobić taką mała mapkę pod próby na kolizje itp.
Napisałem kod który nie wywala żadnego błędu i wszystko wydaje się być okey. A jednak bufor odmawia współpracy. Na google nie szukałem bo nie wiem pod czym ^^.
W linkach jest spakowana całość w paczkę z grafa <1mb.

http://hotfile.com/dl/8197931/f01a12d/Symulator.rar.html
lub
http://rapidshare.com/files/253495325/Symulator.rar.html


a tu jest osobno kod:
C/C++
#include <allegro.h>


BITMAP * bufor = NULL;
BITMAP * tks_1 = NULL;
BITMAP * mdl_1 = NULL;
inline void buforowanie( BITMAP * a, int x, int y );
void mapa();

int main() {
    int depth, res;
    allegro_init();
    depth = desktop_color_depth();
    if( depth == 0 ) depth = 32;
   
    set_color_depth( depth );
    res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    if( res != 0 ) {
        allegro_message( allegro_error );
        exit( - 1 );
    }
   
    install_timer();
    install_keyboard();
    install_mouse();
   
    //BUFOR
   
    bufor = create_bitmap( 640, 480 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę utworzyć bufora !" );
        allegro_exit();
    }
    //-----
   
    //Trawa
    tks_1 = load_pcx( "graf\\tekstury\\trawa2.pcx", default_palette );
    //-----  
   
    //Ludek
   
    mdl_1 = load_pcx( "graf\\modele\\ludek\\ludek_tyl.pcx", default_palette );
   
    //-----
   
   
    while( !key[ KEY_ESC ] ) {
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
       
       
    }
   
    clear_keybuf();
    allegro_exit();
}
END_OF_MAIN()

//-------------------wczytywanie na bufor

inline void buforowanie( BITMAP * a, int x, int y )
{
    masked_blit( a, bufor, 0, 0, x, y, a->w, a->h );
   
}

//-------------------inicjalizacja mapy
void mapa()
{
    for( int x = 0, y = 0; x < 600; )
    {
        if(( x < 600 ) &&( y < 450 ) )
        {
            buforowanie( tks_1, x, y );
           
            x += 50;
        }
       
        if( x == 600 )
        {
            masked_blit( tks_1, bufor, 10, 0, x, y, tks_1->w, tks_1->h );
            x = 0;
            y += 50;
        }
        if( y == 450 )
        {
            masked_blit( tks_1, bufor, 0, 20, x, y, tks_1->w, tks_1->h );
        }
        if(( y == 450 ) &&( x == 600 ) )
             break;
       
    };
}
EDIT: W tych if'ach ma końcu chodzi o to by dać tylko kawałek tekstury tam gdzie się nie zmieści.
P-8364
GoldWolf
» 2009-07-08 20:57:53
Poszukaj na forum, o kolizjach i buforze było sporo już napisane. Przejrzy tematy Bibliotek na pewno znajdziesz to czego szukasz.
P-8366
eBbi
Temat założony przez niniejszego użytkownika
» 2009-07-08 21:00:50
no ale wniosłeś do tematu.. nie potrzebuje nic o kolizji mówiłem tylko że ta mapka będzie do prób na kolizje, a to że używam bufora świadczy chyba o tym że czytałem o nim, czyś nie? zawsze normalnie działał a teraz coś nie hula.


EDIT: No jak nawet Piotr wyszedł bez słowa to chyba znaczy o trudności błędu ;p,
P-8367
DejaVu
» 2009-07-08 21:05:28
Tak patrzę w kod i widzę, że nic nie wyświetlasz generalnie na ekranie. Nie masz niczego co by się wykonywało w pętli głównej poza kopiowaniem bufora na ekran. Gdzie go wypełniasz?

/edit:
Tak wygląda Twoja pętla:
C/C++
while( !key[ KEY_ESC ] )
{
    blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
} //while
P-8368
eBbi
Temat założony przez niniejszego użytkownika
» 2009-07-08 21:10:31
nuż ale błąd!! napisać funkcje i ją nie wywołać!!. Ale i tak coś nie tak w tej funkcji(Zacina komputer). 


EDIT: No tak samo wywołany jest bufor w waszym kursie. A tylko tyle pętli bo na razie chce zobaczyć czy w ogóle działa.

EDIT2: No już znalazłem błąd w tej funkcji i się zabieram za poprawe.
P-8370
DejaVu
» 2009-07-08 21:14:10
Mimo wszystko przyczynę błędu już znasz dlaczego nic się nie wyświetlało. Co do dalszej analizy kodu jesteśmy bezradni bowiem nie wiemy co wywołujesz. Zresztą za mało szczegółów podałeś odnośnie tego błędu.

@Dante: Nie odsyłaj użytkowników do innych tematów żeby sobie poszukali tylko dawaj do nich linki. Jeśli Ci się nie chce lepiej nie zabierać wogóle głosu :)
P-8371
eBbi
Temat założony przez niniejszego użytkownika
» 2009-07-08 21:30:09
Działa :D!! wielkie dzięki Piotrze. Off-topic
P-8374
« 1 »
  Strona 1 z 1