[Allegro] Jak zrobić niemrugającą myszkę z wykorzystaniem bufora ekranu
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

[Allegro] Jak zrobić niemrugającą myszkę z wykorzystaniem bufora ekranu

AutorWiadomość
Temat założony przez niniejszego użytkownika
[Allegro] Jak zrobić niemrugającą myszkę z wykorzystaniem bufora ekranu
» 2008-07-28 12:03:59
jak zrobić żeby pętla zaczekała

C/C++
while( !key[ KEY_ESC ] )
{
    if( x = 100 ) x--;
   
    //tu żeby pętle poczekała 1 sekunde
}

gdzie x to np 30
P-1064
» 2008-07-28 12:10:29
rest( 1000 );

Jeśli nie będzie działało, to znaczy że musisz jeszcze dać chyba install_timer(); albo coś podobnego z allegro.
/edit:
tak nawiasem mówiąc powinieneś chyba mieć:
if( x == 100 ) x--;
/edit2:
C/C++
install_timer(); //Na początku programu
while(...)
{
    //...
    rest( 1000 );
}
remove_timer(); //Na końcu programu
P-1065
Temat założony przez niniejszego użytkownika
» 2008-07-28 12:25:59
C/C++
#include <allegro.h>

int main()
{
    allegro_init();
    install_keyboard();
    install_timer();
    set_color_depth( 8 );
    set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 );
    set_palette( default_palette );
    //Podwujne buforowanie
    //reszta
    install_mouse();
    show_mouse( screen );
    unscare_mouse();
    //Wstęp Gry
   
    rectfill( screen, 20, 550, 770, 580, makecol( 255, 255, 255 ) );
    BITMAP * bufor = NULL;
    BITMAP * klocek = NULL;
    bufor = create_bitmap( 640, 480 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie ma bufora" );
        allegro_exit();
        return 0;
    }
    //ładowanie klocka
    klocek = load_bmp( "klocek.bmp", default_palette );
    if( !klocek )
    {
       
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Error" );
        allegro_exit();
        return 0;
    }
   
    int klocek_x = 128, klocek_y = 30;
    while( !key[ KEY_ESC ] )
    {
        if( klocek_y == 550 ) klocek_y++;
       
        clear_to_color( bufor, makecol( 0, 0, 0 ) );
        //rest(10);
        masked_blit( klocek, bufor, 0, 0, klocek_x, klocek_y, klocek->w, klocek->h );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
   
   
   
    remove_timer();
    destroy_bitmap( klocek );
    destroy_bitmap( bufor );
    allegro_exit();
    return( 0 );
}
END_OF_MAIN();
   
mam dwa problemy czemu myszka miga
no i ten klocek
P-1066
» 2008-07-28 12:34:32
Czemu rozmiar bufora masz mniejszy niż rozdzielczość, na której uruchamiasz? Popraw to i powiedz czy pomogło.
P-1067
Temat założony przez niniejszego użytkownika
Poprawiłem ale myszka dalej miga
» 2008-07-28 13:36:46
C/C++
#include <allegro.h>

int main()
{
    allegro_init();
    install_keyboard();
    install_timer();
    set_color_depth( 8 );
    set_gfx_mode( GFX_AUTODETECT, 800, 600, 0, 0 );
    set_palette( default_palette );
    //Podwujne buforowanie
    //reszta
    install_mouse();
    show_mouse( screen );
    unscare_mouse();
    //Wstęp Gry
   
    BITMAP * bufor = NULL;
    BITMAP * klocek = NULL;
    bufor = create_bitmap( 800, 600 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie ma bufora" );
        allegro_exit();
        return 0;
    }
    //ładowanie klocka
    klocek = load_bmp( "klocek.bmp", default_palette );
    if( !klocek )
    {
       
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Error" );
        allegro_exit();
        return 0;
    }
   
    int klocek_x = 128, klocek_y = 30;
    while( !key[ KEY_ESC ] )
    {
        if( klocek_y == 550 ) klocek_y++;
       
        clear_to_color( bufor, makecol( 0, 0, 0 ) );
        //rest(10);
        masked_blit( klocek, bufor, 0, 0, klocek_x, klocek_y, klocek->w, klocek->h );
        blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
    }
   
   
   
    remove_timer();
    destroy_bitmap( klocek );
    destroy_bitmap( bufor );
    allegro_exit();
    return( 0 );
}
END_OF_MAIN();

chyba że coś przeoczyłem
P-1068
» 2008-07-28 13:43:25
Spróbuj myszkę rysować na buforze a nie na ekranie. Obecnie masz:
show_mouse( screen );
P-1069
Temat założony przez niniejszego użytkownika
» 2008-07-28 13:46:46
show_mouse(bufor);
nie da rady wywala błąd
P-1070
» 2008-07-28 14:40:20
Kompiluje się? Jeśli nie to wklej log kompilacji. Przypuszczam, że nie przeniosłeś funkcji show_mouse niżej...
C/C++
bufor = create_bitmap( 800, 600 );
show_mouse( bufor );
P-1071
« 1 » 2
 Strona 1 z 2Następna strona