Do używania allegro nie trzeba zaawansowanej wiedzy o C++. Wystarczy umjejetność programowania strukturalnego i podstawy Dla tych co nie wiedza programowanie strukturalne to zazwyczaj programowanie nie używajac 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óra zamiesciłem na forum. Lecz teraz widze, ze jest wysoce niedopracowania (jesli 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 wybralem na początki swojej kariery jako programista gier? Przede wszystkim za względną i nie zniechęcającą prostoste przy podstawach nauki. Allegro to rownież idealny wybor dla ludzi, którzy nie chcą stosowac bibliotek graficznych "jedynego slusznego systemu" i chca zeby ich gry były łatwe do przeniesienia pod system linux.
Zaznaczam, ze sam jestem początkującym w allegro:D
Na przykład fajnej gry napisanej przy pomoca allegro dam link do pewnego, chyba już ukończonego, projektu na gamedev.pl: http://tiny.pl/lxmb
Najwiekszą wada według mnie mozna uznać to ze allegro nie jest zorientowane obiektowo. Mi to nie przeszkadza ale musiałem to zaznaczyć
Opisze tu proces instalacji allegro pod Dev - C++.
* Odpalamy Dev-C++. Zakładka Pomoc - > O Dev - ++ - > Sprawdź uaktualnienia
* W nowo otwartym oknie przy "Select devpak server" wybieramy "devpaks.org Community Devpaks".
* Wciskamy (na samym dole) "Check for updates"
* Po załadowaniu sie listy, w "Groups" wybieramy Allegro
* Wciskamy "Download selected"
Po chwili (od waszego łącza zależy jak długiej ) mamy juz biblioteke 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ładke MultiMedia - > Allegro Application Static.
Wybieramy jakies miejsce na nasz nowy projekt i gotowe. Dev - C++ nawet za nas dodał funkcje inicjalizujace tryb allegro:)
Przyjrzyjmy sie nim.
#include <allegro.h>
Dyrektywa, która dołacza biblioteke 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();
/* add other initializations here */
}
* int depth, res - inicjalizacja zmiennych pomocniczych
* allegro_init() - funkcja, która inicjalizuje tryb allegro
* depth = desktop_color_depth() - funkcja desktop_color_depth() zwraca do zmiennej depth glębie kolorów, ktora mamy w windowsiewesoły (w przypadku, gdy ktos programuje pod linuxem było to by pewnie jego środowisko graficzne)
* if (depth == 0) depth = 32 - jesli są jakieś problemy z odczytaniem, bądź jakimś cudem desktop_color_depth() zwróciło 0 automatycznie ustawia depth na 32.
[li] set_color_depth(depth) - funkcja ustawia głebie kolorów naszej aplikacji na podana w nawiasie. Wczesniej do zmiennej depth była zwrócona głębia naszego pulpitu więc funkcja stara się ustawić naszą domyślną głębie
* res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0) - uruchamia tryb graficzny i w przypadku sukcesu zwraca 0 do zmiennej res.
Specyfikacja funkcji przedstawia sie następująco:
int set_gfx_mode(int card, int w, int h, int v_w, int v_h)
card zazwyczaj jest jednym z "magicznych sterowników allegro" w skrócie można powiedziec, że to "wirtualne sterowniki", które pozwalają uniknąć zamieszania z rożnorodnością sterowników pod wiele kart graficznych.
int w i int h to jest szerokość i dlugość rozdzielczości a v_w i v_h to szerokość i długość rozdzielczości naszego wirtualnego ekranu (o tym kiedy indziej)
*
if (res != 0) {
allegro_message(allegro_error);
exit(-1);
}
Instrukcja warunkowa, która sprawdza czy ustawienie rodzielczości powiodło sie. Jesli cos nie poszło jak trzeba allegro zwróci komunikat ze stosowną informacją wesoły
* install_timer();
install_keyboard();
install_mouse();
Funkcje instalujące timer, obsługe myszy oraz klawiaturywesoły O timerze i jego zastosowaniach dokładniej kiedy indziej.
To by było na tyle jeśli chodzi o podstawową inicjalizacje:)
Została jeszcze funkcja deinit():
void deinit() {
clear_keybuf();
/* add other deinitializations here */
}
Jedyne co ona robi to czyści bufor klawiatury.
int main() {
init();
while (!key[KEY_ESC]) {
/* put your code here */
}
deinit();
return 0;
}
END_OF_MAIN()
Komentarza wymaga tylko END_OF_MAIN().
Allegro Manual zaleca uzywanie tego makra. Podyktowane jest to wieloplatformowością allegro i pozwala uniknąć wielu problemów z tym zwiazanych:) Według Allegro Manual tego makra wymaga Windows oraz niektóre dystrybucje UNIXOWE oraz MAC OS X.
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum