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

[Allegro] Przewijanie tła (background)

Ostatnio zmodyfikowano 2009-07-18 20:02
Autor Wiadomość
wojownik266
Temat założony przez niniejszego użytkownika
[Allegro] Przewijanie tła (background)
» 2009-07-16 19:58:56
Tak problem scrollowania przewijał się na tym forum już niejednokrotnie, ale ja nie jestem w stanie wykroić (zmodyfikować) tych kodów które mi są do szczęścia potrzebne ponieważ moj poziom zaawansowania c++ mi na to nie pozwala. Więc może ktoś napisze mi tylko samą funkcję przewijania tła (fotki)? Do celów edukacyjnych?Za co będę bardzo wdzięczny.
P-8559
DejaVu
» 2009-07-16 20:05:47
http://archiwum.ddt.pl/?GroupId=975
Scrolling mapy przewijał się na forum niejednokrotnie i jest już wiele rozwiązań opisanych jak należy to robić.
P-8560
DejaVu
» 2009-07-17 18:27:29
Zmieniasz sens wątku edytując całkowicie pierwszego posta. Dla mnie w tym momencie temat jest zakończony i można go posłać do kosza. Dostałeś przykład, a razem z nim hasło pod jakim należy szukać tego owego przewijania tła. Jest to już gdzieś opisane na forum co konkretnie trzeba zrobić aby przewijać tło (mały wycinek kodu).
P-8564
wojownik266
Temat założony przez niniejszego użytkownika
[Allegro] Przewijanie tła (background)
» 2009-07-18 20:02:12
Płynne przewijanie ma się tak:

C/C++
#include <allegro.h>

BITMAP * chmury = NULL;
BITMAP * bufor = NULL;
//Wymiary ekranu
const int HEIGHT = 800;
const int WIGTH = 600;

int poz_x = 0, poz_y = 0;
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );

int main()
{
    allegro_init();
    install_keyboard();
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) );
    set_palette( default_palette );
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
    chmury = load_bmp( "chmury_2.bmp", default_palette );
    bufor = create_bitmap( 800, 600 );
   
    while( !key[ KEY_ESC ] )
    {
        while( speed > 0 )
        {
            clear_to_color( bufor, makecol( 255, 255, 255 ) );
            blit( chmury, bufor, 0, 0, poz_x, poz_y, chmury->w, chmury->h );
            blit( chmury, bufor, 0, 0,( poz_x +( chmury->w ) ), poz_y, chmury->w, chmury->h );
            poz_x--;
            if(( poz_x +( chmury->w ) ) == 0 )
                 poz_x = 0;
           
            blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
           
            speed--;
        }
    }
    remove_int( increment_speed );
    destroy_bitmap( chmury );
    destroy_bitmap( bufor );
    allegro_exit();
    return 0;
}
END_OF_MAIN();
    
P-8569
« 1 »
  Strona 1 z 1