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

[Allegro] Problem z poruszaniem postacia

Ostatnio zmodyfikowano 2013-01-21 00:59
Autor Wiadomość
ziom
Temat założony przez niniejszego użytkownika
[Allegro] Problem z poruszaniem postacia
» 2013-01-21 00:25:16
Witajcie rodacy!

Mam dziwny problem i nie wiem jak go naprawic. Stworzyłem bitmapę po której porusza sie moja postac. Ruch jest w porządku kiedy ustalam komende set_color_depth na 8, natomiast grafika sie psuje. kiedy ustale color_depth na 32 to z grafika wszystko wporzadku ale nie moge poruszac postacia. HELP !

załączam kod oczywiscie !

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 );

inline void init()
{
    allegro_init();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0 );
    //clear_to_color( screen, makecol( 128, 128, 128 ) );
   
    install_timer();
    install_keyboard();
    install_mouse();
}

inline void deinit()
{
    clear_keybuf();
    allegro_exit();
}

int main() {
   
    init();
    install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) );
   
    BITMAP * bufor = NULL;
    BITMAP * postac = NULL;
   
    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;
    }
   
    postac = load_bmp( "mario.bmp", default_palette );
    if( !postac ) {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka Ludek !" );
        allegro_exit();
        return 0;
    }
    int postac_x = 100; int postac_y = 100;
   
    while( !key[ KEY_ESC ] ) {
       
        while( speed > 0 ) {
           
            if( key[ KEY_LEFT ] ) postac_x--;
           
            if( key[ KEY_RIGHT ] ) postac_x++;
           
            if( key[ KEY_UP ] ) postac_y--;
           
            if( key[ KEY_DOWN ] ) postac_y++;
           
            speed--;
        }
        clear_to_color( bufor, makecol( 150, 150, 150 ) );
        masked_blit( postac, bufor, 0, 0, postac_x, postac_y, postac->w, postac->h );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
    remove_int( increment_speed );
    destroy_bitmap( postac );
    destroy_bitmap( bufor );
   
    deinit();
    return 0;
}
END_OF_MAIN()
P-74542
Gabes
» 2013-01-21 00:30:53
A 16 lub 24?
P-74543
ziom
Temat założony przez niniejszego użytkownika
» 2013-01-21 00:33:35
przy 16 zachowuje sie program jak przy 32, natomiast przy 24 wyskakuje windowsowy crash :D
Ja kompletnie nie wiem o co cho, na poczatku myslalem ze ktora z komend jest zle napisana, tzn ze nie kazda dziala pod 32.
Juz sam nie wiem
P-74544
Gabes
» 2013-01-21 00:43:35
Popróbuj w większych rozdzielczościach 800x600, 1024x768, jak i w trybie okienkowym
set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
P-74546
ziom
Temat założony przez niniejszego użytkownika
» 2013-01-21 00:59:17
Przy ustawieniu 800x600 i zmienie na wyswietlaniu w oknie moja postac sie porusza ! nie wiem czemu tylko przy fullscreen nie chce prawidlowo dzialac. To dosyc dziwne
P-74547
« 1 »
  Strona 1 z 1