22 maj 2012

Lekcja 1.0.0 Allegro5 - pierwsze okno

Zanim zaczniemy naukę warto zobaczyć jak wygląda nasz pierwszy program napisany w Allegro 5. 


// deklarowanie plików nagłówkowych, głównego modułu allegro, oraz obsługi obrazów. 
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>
int main()
{
    al_init(); // inicjowanie biblioteki allegro
    al_install_keyboard(); // instalowanie sterownika klawiatury
    al_init_image_addon();// inicjowanie dodatku umożliwiającego odczyt jak i zapis obrazów, w formatach BMP,  PNG, JPG, PCX, TGA.
    ALLEGRO_KEYBOARD_STATE klawiatura; // utworzenie struktury do odczytu stanu klawiatury
    ALLEGRO_DISPLAY *okno = al_create_display( 320, 240);// tworzymy wskaźnik okna, i podajemy jego szer. i wys
    al_set_window_title( okno,"Allegro5 kurs pierwsze okno");// podajemy tytuł okna
    ALLEGRO_BITMAP *obrazek = al_load_bitmap("widok.png");// wczytujemy bitmapę do pamięci
        while(!al_key_down(&klawiatura, ALLEGRO_KEY_ESCAPE)) //koniec programu gdy wciśniemy klawisz Escape
   {
        al_get_keyboard_state(&klawiatura);  // odczyt stanu klawiatury
        al_clear_to_color(al_map_rgb( 0, 255, 0)); // wyczyszczenie aktualnego bufora ekranu
        al_draw_bitmap (obrazek,0,0,0);  // wyświetlenie bitmapy "obrazek" na "Backbuffer" (bufor ekranu)
        al_flip_display(); // wyświetlenie aktualnego bufora na ekran
   }
    // usuwanie z pamięci okna, bitmap, audio, fontów ...itd.
    al_destroy_display(okno);
    al_destroy_bitmap(obrazek);

    return 0;
}
 Celem powyższego kodu jest pokazanie prostoty i logiki Allegro5.
Nazwy init, install_keyboard, image_addon, KEYBOARD_STATE, DISPLAY, window_title, BITMAP, key_down,
już sama nazwa wskazuje do czego służy dana funkcja. 
                                 Jak widać kod nie jest specjalnie trudny.
                                Otrzymamy takie oto małe okienko, z obrazkiem jako tło.

                                         Link  ->   Przykładowe programy  Allegro-5

6 komentarzy:

Anonimowy pisze...

Po przekopiowaniu programu pojawia mi się błąd:
Error C3861 'al_init_image_addon': identifier not found

jakieś pomysły skąd to się bierze?

Anonimowy pisze...

Jeżeli używasz Code::Blocks musisz wejść w
Project>Build Options>
A następnie dodać do ustawień linkera wszystkie biblioteki
Allegro, których aktualnie używasz (A używasz:
-liballegro-5.0.10-mt.a
-liballegro_image-5.0.10-mt.a).

Anonimowy pisze...

wyskakuje mi taki błąd.
MacBook-Air-ukasz:~ lukasz$ /Applications/CodeBlocks.app/Contents/MacOS/cb_console_runner DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:.:/Users/lukasz/Downloads/allegro-5.0.0rc4/build/lib /Users/lukasz/Desktop/test_allegro/allegro5/bin/Debug/allegro5
dyld: Symbol not found: __al_mangled_main
Referenced from: /Users/lukasz/Downloads/allegro-5.0.0rc4/build/lib/liballegro_main.5.0.dylib
Expected in: flat namespace
in /Users/lukasz/Downloads/allegro-5.0.0rc4/build/lib/liballegro_main.5.0.dylib

jakis pomysł co to oznacza?

Allf pisze...

Trying A5 on MacOS without Xcode

Anonimowy pisze...

a

Unknown pisze...

u mnie program dziala, ale dopiero po zamienieniu while na do while. dlaczego?