|
www.allegro2d.fora.pl Forum na temat biblioteki Allegro |
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
michalos13
Administrator
Dołączył: 03 Mar 2009
Posty: 27
Przeczytał: 0 tematów
Pomógł: 1 raz Ostrzeżeń: 0/5
|
Wysłany: Śro 20:09, 04 Mar 2009 Temat postu: Tutorial Allegro |
|
|
Przetłumaczyłem angielsko-języczną wersję tego tutoriala: [link widoczny dla zalogowanych]
Może komuś się przyda.
Lekcja 1
Oto Twoja pierwsza Linijka. Musisz dołączyć bibliotekę Allegro, inaczej nic nie będzie działać!
Cytat: | # include <allegro.h> |
Upewnij się, że głównym zawsze wygląda tak jak poniżej. Nie martw się, jeśli nie pamiętasz tej linijki gdyż wkrótce ją zapamiętasz.
Cytat: | int main (int argc, char * argv [])
( |
Teraz zainicjalizujemy Allegro. To utworzy wszystkie elementy niezbędne do uruchomienia programu. Funkcja ta zasadniczo nie powinna być dla ciebie zbyt trudna.
Cytat: | allegro_init (); / / Zainicjuj Allegro |
Teraz Allegro jest zainicjowany więc będziemy mogli skonfigurować urządzenie wejściowe, aby użytkownik mógł kontrolować w jaki sposób program będzie działać. W tym programie chcemy obsługiwać tylko klawiature. Funkcja ta utworzy wszystkie funkcje i zmienne związane z klawiaturą.
Cytat: | install_keyboard (); / / Zainicjuj klawiature |
Ok. Prawie wszystko jest ustawione i gotowe do użycia. Istnieje jeszcze jedna część, którą należy zrobić, zanim będzie
można cokolwiek robić: ustawić ekran. Następna część może być nieco trudna, i może upłynąć trochę czasu, zanim dokładnie zrozumiesz to.
set_gfx_mode określi tryb grafiki, które będą używane w programie. Oto parametry tej funkcji:
Cytat: | set_gfx_mode (Tryb graficzny, szerokość, wysokość, szerokość Wirtualna, wysokość Wirtualna); |
GFX_AUTODETECT ustawi za ciebie tryb graficzny.
Szerokość i wysokość to szerokość i wysokość ekranu. Szerokość wirtualna i wysokość wirtualna nie są widoczne. Nie trzeba się martwić o to w tej chwili, tak po prostu wpisać.
Cytat: | set_gfx_mode (GFX_AUTODETECT, 640,480,0,0); / / Ustawiamy grafikę o rozdzielczości 640 x 480(pixeli) |
To prawie koniec Lekcji 1. Teraz ekran ustawiony jest na żądaną rozdzielczość (640 x 480 - w naszym wypadku). Aby zobaczyć efekt, musimy zatrzymać program na chwilę. To funkcja, która czeka na naciśnięcie dowolnego klawisza na klawiaturze. Gdy klawisz zostałnaciśnięty program przejdzie do dalszych czynności.
Cytat: | readkey (); / / Poczekaj aż zostanie naciśnięty |
Po naciśnięciu klawisza, musimy powiedzieć systemowi, że wszystko w programie zostało wykonane bez błędów, a następnie wyjść.
Cytat: | return 0; / / Wyjdź bez błędów
) |
Nie skonczyliśmy jeszcze. Istnieje jeszcze jedna rzecz, która musi być wykonana. Ta część jest bardzo ważna. W każdym programie allegro, należy umieścić tę funkcję. Poniższa funkcja jest specyficzna dla Allegro - programów nie będzie bez niej działać, jeśli nie będzie jej po zakończeniu (znakiem } ) głownej funkcji.
To koniec Lekcji 1. Teraz wiesz jak skonfigurować środowisk allegro i zmienić rozdzielczość ekranu. Jest to ważny element wszystkich programów allegro. Będziesz go używać w każdym programie w przyszłości.
Post został pochwalony 0 razy
Ostatnio zmieniony przez michalos13 dnia Śro 23:17, 04 Mar 2009, w całości zmieniany 3 razy
|
|
Powrót do góry |
|
|
|
|
michalos13
Administrator
Dołączył: 03 Mar 2009
Posty: 27
Przeczytał: 0 tematów
Pomógł: 1 raz Ostrzeżeń: 0/5
|
Wysłany: Śro 23:18, 04 Mar 2009 Temat postu: |
|
|
Lekcja 2
Oto pierwsza linijka, bez niej nic nie będzie działać!
Cytat: | # include <allegro.h> |
Główna funkcja
Cytat: | int main (int argc, char * argv [])
( |
Teraz chcemy zainicjować allegro i zainicjalizować klawiaturę, tak jak zrobiliśmy w naszej ostatniej lekcji.
Cytat: | allegro_init (); / / Zainicjuj Allegro
install_keyboard (); / / Zainicjuj klawiature |
Kolejnym krok jest czymś nowym. Jeśli chcesz rysować bitmapy na ekranie należy określić głębię kolorów, jakie będzie miał ekran.
set_color_depth zmieni obecną głębie kolorów. Dostępne są głębie kolorów 8, 15 ,16 , 24 i 32. Głębia kolorów 8 wymaga za każdym razem ładowanie palety przy każdej bitmapie, więc nie będziemy jej używać. Głębia kolorów 32 zabiera dużo zasobów, więc skorzystamy z 15 albo 16 w celu zapewnienia maksymalnej kompatybilności między maszynami.
Upewnij się, że ustawiłeś głębie kolorów przed ustawieniem rozdzielczości ekranu. Jeśli sobie to oblejesz, twoje bitmapy nie będą wyświetlane przy użyciu poprawnych kolorów!
Cytat: | set_color_depth (16); / / Ustaw głębię kolorów
set_gfx_mode (GFX_AUTODETECT, 640480,0,0); / / ustawienie trybu graficznego na 640x480 |
To struktura BITMAP. Za każdym razem, kiedy chcesz utworzyć obraz do wyświetlania, lub do rysowania, musisz zadeklarować go w BITMAP, podobnie jak, kiedy chcesz zadeklarować liczbę całkowitą, należy zadeklarować go jako int. Ponieważ BITMAP w bibliotece Allegro jest wskaźnikiem, każda nazwa bitmapy musi być poprzedzona tym: *
Cytat: | BITMAP * my_pic = NULL; / / Zadeklaruj BITMAP my_pic, ustawiając ją na NULL |
Teraz bitmapa my_pic jest "pusta". W celu załadowania zdjęcia do niego, musisz wywołać funkcjie load_bitmap ();
Dalej załadowujemy bitmapę z dysku twardego do bitmapy my_pic.
Oto jakie parametry oznaczają:
load_bitmap ( "Lokalizacja bitmapy", palety);
W miejscu palety, będziemy przekazywać NULL - co oznacza, że paleta nie jest potrzebna, gdy uruchomiony tryb kolorów jest większy niż 8.Wywołując funkcję load_bitmap() musimy określić, że ładujemy bitmapę do pamięci my_pic. Mozna zrobić to w taki sposób: (uwaga, bitmapy muszą rzeczywiście istnić w tym katalogu który podaliśmy. Inaczej program wywoła błąd podczas próby ładowania tej bitmapy. Istnieją funkcje pozwalające sprawdzić czy bitmapa znajduje się w danym katalogu, jednak nie powiem o nich tutaj, gdyż lekcja ma być bardzo prosta).
Cytat: | my_pic = load_bitmap ( "Picture.bmp", NULL); |
Teraz, gdy nasza bitmapa jest załadowana w pamięci, chcemy, wyświetlić ją na ekranie. W tym celu wykorzystujemy funkcję o nazwie blit. Oto jej parametry:
blit (bitmapa którą rysujemy, miejsca bitmapy (zwykle ekran), wycięcie x, wycięcie y plik, pozycja x, pozycja y, szerokość bitmapy, wysokość bitmapy);
Jak widać, blit oferuje wiele funkcjonalności. Wycięcie x i y będzie w lewym górnym rogu mapy bitowej, którą chcesz skopiować. Na przykład, jeśli używasz 0,0 - otrzymasz bitmapy w lewym górnym rogu. Jednakże, jeśli używasz 50,50 - otrzymasz bitmapy z wykorzystaniem pozycji 50,50 od lewego górnego rogu. Pozwoli to na wideo, obraz z innych stron.
Nie martw się jeśli czegoś nie rozumiesz, ponieważ wyjaśnimy wszystkie możliwości blitting w nadchodzących lekcjach.
Teraz wyświetlimy całą bitmapę w lewym górnym rogu ekranu
Cytat: | blit (my_pic, ekran 0,0,0,0,480,360); / / wyświetl całą bitmapę na ekranie (0,0) |
Teraz zatrzymamy na chwilę działanie naszego programu tą funkcją:
Cytat: | readkey ();// Poczekaj aż zostanie naciśnięty |
Następnie usuniemy nieużywane, po zakończeniu naszego programu, bitmapy.
Destroy_bitmap jest używany, aby usunąć miejsca w pamięci, zajęte przez (w naszym przypadku) bitmapę. Zawsze upewniaj się, że zniszczyłeś wszystkie bitmapy, które zostało użyte w programie, aby w pamięci nie było tak wiele śmieci.
Cytat: | destroy_bitmap (my_pic); / / Usuń bitmapę |
Return 0 na końcu głównej funkcji (main), wskazuje na wyjście bez błędów
Cytat: | return 0; / / Wyjdź bez błędów
) |
Wywołaj funcje END_OF_MAIN ().
Koniec lekcji 2. Teraz wiesz jak skonfigurować allegro, zmienić rozdzielczość ekranu i wyświetlać bitmapy.
Post został pochwalony 0 razy
Ostatnio zmieniony przez michalos13 dnia Śro 23:22, 04 Mar 2009, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
michalos13
Administrator
Dołączył: 03 Mar 2009
Posty: 27
Przeczytał: 0 tematów
Pomógł: 1 raz Ostrzeżeń: 0/5
|
Wysłany: Sob 16:34, 07 Mar 2009 Temat postu: Lekcja 3 |
|
|
Nie zapomnij dołączyć allegro.h.
Cytat: | # include <allegro.h> / / Użytkownik musi zawierać w nagłówku pliku Allegro |
W głównej funkcji inicjalizujemy Allegro, klawiature, ustawiamy głębie kolorów, oraz tryb graficzny. Ta część programu jest ci już znana.
Cytat: | int main (int argc, char * argv [])
(
allegro_init ();
install_keyboard ();
set_color_depth (16);
set_gfx_mode (GFX_AUTODETECT, 640,480,0,0); |
Tworzenie bitmapy i ładowanie obrazu do pamięci, powinno być ci także znane.
Cytat: | BITMAP * my_pic = NULL;
my_pic = load_bitmap ( "Picture.bmp", NULL); |
Teraz za pomocą funkcji blit wyświetlimy ten sam obrazek co w lekcji 2, ale tym razem będziemy blit 2 wycięte obrazy z tej samej bitmapy aby nauczyć się możliwości funkcji blit.
Pierwsza funkcja blit wyświetli obraz, na ekranie we współrzędnych (0,0), przycinając go od (0,0) do (50,50)(Spróbuj skompilować aby zobaczyć efekt). Zauważ, że zmieniliśmy rozmiar (szerokość / wysokość) bitmapy? W ten sposób wyciągniemy obraz z bitmapy od (0,0) do (50,50)! To jest jak byś "odciął" obraz w prawym boku i na dole.
Druga funkcja blit zacznie przycinać od (50,50), zamiast (0,0), do (150,150) ten sam obraz co w 1 funkcji blit i wyświetli go na ekranie we współrzędnych (100,100).
Przycinanie jest bardzo proste:
Ustaw lewym górnym rogu - a następnie ustawi w dolnym prawym rogu częsci bitmapy którą chcesz wyświetlić!
Jak widać, możesz wyświetlać tą samą bitmapę (w tym przypadku my_pic) tyle razy, ile chcesz.
Cytat: | blit (my_pic, ekran 0,0,0,0,50,50); / / rysuj od (0,0) do (50,50) na ekranie w (0,0)
blit (my_pic, ekran 50,50100100150150); / / rysuj od (50,50) do (150,150) na ekranie w (100,100) |
Poczekaj na wciśnięcie klawisza. . .
Cytat: | readkey ();// Poczekaj aż zostanie naciśnięty klawisz |
a następnie zamknij.
Cytat: | destroy_bitmap (my_pic); / / usuń bitmape
return 0; / / Wyjdź bez błędów
)
END_OF_MAIN () //Pamiętaj żeby zawsze dawać to po funkcji main() |
Koniec 3 lekcji. Teraz wiesz jak skonfigurować allegro, zmienić rozdzielczość ekranu i przycinać bitmapy.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
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
|
|