Wstęp
Allegro to między-platformowa biblioteka do tworzenia
gier 2d oraz aplikacji multimedialnych. Pierwszą wersje napisał Shawn Hargreaves, było to w 1996 roku, dla kompilatora
djgpp w mieszance C i assemblera. Allegro to skrót od
Allegro
Low
Level
Game
ROutines. Biblioteka jest udostępniona w internecie razem ze swoim kodem źródłowym. Strona domowa allegro:
http://alleg.sourceforge.net/
Do używania allegro nie trzeba zaawansowanej wiedzy o C++. Wystarczy umiejętność programowania strukturalnego i podstawy :) Dla tych co nie wiedzą programowanie strukturalne to zazwyczaj programowanie nie używając obiektów. Czyli prościej - dzielenie aplikacji na dane i kod. Oczywiście nic nie stoi na przeszkodzie żeby programować obiektowo używając allegro. Przykład to gierka, którą zamieściłem na forum. Lecz teraz widzę, że jest wysoce niedopracowania (jeśli chodzi o używanie obiektowości). Za to można zobaczyć sobie zastosowanie prostych funkcji rysujących prymitywy (figury na płaszczyźnie).
Dlaczego allegro?
Dlaczego akurat allegro wybrałem na początki swojej kariery jako programista gier? Przede wszystkim za względną i nie zniechęcającą prostotę przy podstawach nauki. Allegro to również idealny wybór dla ludzi, którzy nie chcą stosować bibliotek graficznych "jedynego słusznego systemu" i chcą żeby ich gry były łatwe do przeniesienia pod system linux. Zaznaczam, że sam jestem początkującym w allegro :D.
Na przykład fajnej gry napisanej przy pomocą allegro dam link do pewnego, chyba już ukończonego, projektu na gamedev.pl:
http://tiny.pl/lxmb
Największą
wadą według mnie można uznać to, że
allegro nie jest zorientowane obiektowo. Mi to nie przeszkadza ale musiałem to zaznaczyć :).
Opis możliwości można znaleźć tu:
http://alleg.sourceforge.net/readme.pl.html
Instalujemy i odpalamy allegro :D
Opiszę tu proces instalacji allegro pod Dev-C++ (instalacja w
Code::Blocks opisana jest niżej).
Po chwili (od waszego łącza zależy jak długiej :) ) mamy już bibliotekę allegro. W "Groups/Allegro" znaleźć można jeszcze fajne pluginy takie jak AllegroGL, który umożliwia wykorzystywanie OpenGL z allegro :).
Czas na odpalenie i napisanie pierwszej aplikacji.
Plik - > Nowy - > Projekt - > Przechodzimy na zakładkę MultiMedia - > Allegro Application Static. Wybieramy jakieś miejsce na nasz nowy projekt i gotowe. Dev-C++ nawet za nas dodał funkcje inicjalizujace tryb allegro :). Przyjrzyjmy się im:
#include <allegro.h>
- dyrektywa, która dołącza bibliotekę allegro.
void init() {
int depth, res;
allegro_init();
depth = desktop_color_depth();
if( depth == 0 ) depth = 32;
set_color_depth( depth );
res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
if( res != 0 ) {
allegro_message( allegro_error );
exit( - 1 );
}
install_timer();
install_keyboard();
install_mouse();
}
To by było na tyle jeśli chodzi o podstawową inicjalizacje :). Została jeszcze funkcja deinit():
void deinit() {
clear_keybuf();
}
Jedyne co ona robi to czyści bufor klawiatury.
int main() {
init();
while( !key[ KEY_ESC ] ) {
}
deinit();
return 0;
}
END_OF_MAIN()
Komentarza wymaga tylko END_OF_MAIN().
Allegro Manual zaleca używanie tego makra. Podyktowane jest to wieloplatformowością allegro i pozwala uniknąć wielu problemów z tym związanych :). Według Allegro Manual tego makra wymaga Windows, oraz niektóre dystrybucje UNIXOWE i MAC OS X.
Instalacja w Code::Blocks
By zainstalować bibliotekę w tym środowisku należy ją ściągnąć specjalnie przygotowaną. Pobieramy pliki(a dokładnie foldery)
Allegro 4.2.2 - MinGW i kopiujemy je do Coda::B - > u mnie jest to ścieżka domyślna, więc
C:\Program Files\CodeBlocks\MinGW. Dodatkowo możesz wrzucić pliki(foldery)
AllegroGL 0.4.2 w to samo miejsce.
Polecam również specjalny dodatek do środowiska Code::Blocks, który umożliwia tworzenie projektu
Allegro. Wystarczy ściągnąć i zainstalować
allegro_wizard_codeblocks. Po instalacji dodatku mamy do dyspozycji 4 wbudowane gotowe projekty. Jedynie
Hallo Word będzie działać poprawnie, reszta potrzebuje dodatkowych bibliotek lub innych dodatków by poprawnie się skompilowały.
Więcej informacji na temat allegro można znaleźć na
www.allegro.cc.
Zakończenie
To wszystko jeśli chodzi o podstawy podstaw. Czas omówić działanie allegro. Wszystko opiera się o obiekty typu BITMAP. Głównym takim obiektem jest ekran. Jeśli będzie trzeba użyć jakiegoś obrazka jako tła to będzie on wczytywany do osobnego obiektu. Wiem, ze może to brzmieć trochę dziwacznie ale wszystko pokażę na przykładach oraz również wyjaśnię na czym polega animacja buforowana i ogólne zastosowanie buforów ekranów. Allegro standardowo obsługuje tylko 4 formaty: BMP, PCX, TGA i LBM.
Na koniec dodam, że warto obejrzeć przykłady (znajdują się w Dev-Cpp\Allegro\Examples) oraz demo gierkę (Allegro\Demo). Już teraz radzę zajrzeć do Dev-Cpp\docs\allegro i oswoić się z manualem. Nie ważne jakie kursy by się przeczytało nic nie uchroni programisty od korzystania z dokumentacji :).