Allegro ludek

pulpet123
Użytkownik
Użytkownik
Posty: 21
Rejestracja: 21 paź 2009, o 19:12
Płeć: Mężczyzna
Lokalizacja: Białystok
Podziękował: 4 razy

Allegro ludek

Post autor: pulpet123 »

nie wazne co zrobie miga mi ludek

co mam zrobic zeby przestał

Kod: Zaznacz cały

#include <allegro.h>
int main()
{
        BITMAP *bitmapa = NULL;
        BITMAP *ludek = NULL; 
        BITMAP *bufor = NULL;
        
        allegro_init();
        install_keyboard();
        set_color_depth(24);
        set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
        clear_to_color(screen, makecol(128,128,128));
        
//////////////////////BUFOR/////////////////////////////////////////////
        bufor = create_bitmap(800,600);
        if (!bufor) 
        { 
        set_gfx_mode(GFX_TEXT,0,0,0,0); 
        allegro_message("Nie mogę utworzyć bufora !"); 
        allegro_exit(); 
        return 0; 
        }
//////////////////////TŁO///////////////////////////////////////////////
        bitmapa = load_bitmap("mapa.bmp", default_palette); 
        
////////////////////////////////////////////////////////////////////////
        ludek = load_bmp("ludek.bmp",default_palette);
        if (!ludek)
        { 
        set_gfx_mode(GFX_TEXT,0,0,0,0); 
        allegro_message("nie mogę załadować obrazka Ludek !"); 
        allegro_exit(); 
        return 0; 
        }
        
          int ludek_x = 100, ludek_y = 100;

          while( !key[KEY_ESC])
          {
           if( key[KEY_LEFT]) ludek_x--;
           if( key[KEY_RIGHT]) ludek_x++;
           if( key[KEY_UP]) ludek_y--;
           if( key[KEY_DOWN]) ludek_y++;

           clear_to_color(bufor, makecol(255,0,255));
           //rest(1);
           masked_blit( ludek, bufor, 0,0, ludek_x, ludek_y, ludek->w, ludek->h);
            blit(bitmapa, screen, 0, 0, 0, 0, bitmapa->w, bitmapa->h);
            masked_blit( bufor, screen, 0,0,0,0, 800,600);
          
           }
             
        destroy_bitmap(ludek);
        destroy_bitmap(bufor);
        allegro_exit();
        return 0;
}
END_OF_MAIN();

////////////////////////////////////////////////////
//KOLES SIE ROZMAZUJE/////
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Allegro ludek

Post autor: soku11 »

Rysuj WSZYSTKO do bufora, a dopiero go wrzucaj na ekran. Teraz rysujesz dwa razy na ekran - to pewnie powoduje migotanie.

Pozdrawiam.
pulpet123
Użytkownik
Użytkownik
Posty: 21
Rejestracja: 21 paź 2009, o 19:12
Płeć: Mężczyzna
Lokalizacja: Białystok
Podziękował: 4 razy

Allegro ludek

Post autor: pulpet123 »

tylko mam problem ze zrobieniem tego

Kod: Zaznacz cały

  
         masked_blit( ludek, bufor, 0,0, ludek_x, ludek_y, ludek->w, ludek->h);
            blit(bitmapa, screen, 0, 0, 0, 0, bitmapa->w, bitmapa->h);
            masked_blit( bufor, screen, 0,0,0,0, 800,600);
jesli zamiast screen w bitmapie napisze bufor pokazuje tylko bitmape

Kod: Zaznacz cały

        masked_blit( ludek, bufor, 0,0, ludek_x, ludek_y, ludek->w, ludek->h);
            blit(bitmapa, bufor, 0, 0, 0, 0, bitmapa->w, bitmapa->h);
            masked_blit( bufor, screen, 0,0,0,0, 800,600);
chyba ze mam cos innego zrobic

P.s. mozecie podesłac jakis kurs/tutorial albo cos bo z tego co kozystam raczej duzo sie nie naucze a znalesc nie moge innego
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Allegro ludek

Post autor: soku11 »

Polecam trochę pomyśleć. Masz bufor - rysujesz do niego ludka. Następnie rysujesz do niego bitmapę. Bitmapa wypełnia ci cały bufor - widzisz tylko bitmapę. Działa więc dokładnie tak jak chciałeś...

Co do kursu - pełno jest takich. Wpisz w google allegro tutorial i masz pełno informacji. A najlepiej to patrzeć do dokumentacji.

Pozdrawiam.
ODPOWIEDZ