Laboratorium 12: Podstawy grafiki 2D - biblioteka Allegro. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot

Podobne dokumenty
Podstawy Programowania 1 Podstawy Grafiki 2D - część pierwsza Biblioteka Allegro. Plan. Wprowadzenie. Inicjacja i finalizacja. Notatki.

. Podstawy Programowania 1. Podstawy Grafiki 2D - część pierwsza Biblioteka Allegro. Arkadiusz Chrobot. 28 stycznia 2016

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Visual Studio instalacja

Allegro5 część 1 - Witaj Świecie! Projekt, inicjalizacja, tworzenie okna, czcionki. Autor: Kamil Krzyszczuk - C mons

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Wykład VII PASCAL - grafika;

Pierwsza aplikacja Tworzenie okienka allegro, obsługa klawiatury, timery oraz wyświetlanie spritów wykorzystując podwójne buforowanie.

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Wstawianie filmu i odtwarzanie go automatycznie

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

P R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne. TEMAT 8: Moduły standardowe

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

Praktyka programowania projekt

Podręcznik użytkownika programu. Ceremonia 3.1

Maskowanie i selekcja

Rysowanie punktów na powierzchni graficznej

CECHY URZĄDZENIA: Podłączenie wyświetlacza

Instrukcja użytkownika ARSoft-WZ3

Instrukcja obsługi programu. BlazeVideo HDTV Player v6

POMOC / INSTRUKCJA OBSŁUGI

Obsługa myszy oraz tekst Korzystanie z myszki oraz wyświetlanie tekstu na przykładzie prostej klasy buttona. : )

1. Wstęp Pierwsze uruchomienie Przygotowanie kompozycji Wybór kompozycji Edycja kompozycji...

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Galileo v10 pierwszy program

Tablet bezprzewodowy QIT30. Oprogramowanie Macro Key Manager

Laboratorium 8 ( Android -pierwsza aplikacja)

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

Informatyka I : Tworzenie projektu

Wprowadzenie do środowiska Qt Creator

1. Opis okna podstawowego programu TPrezenter.

Komputery I (2) Panel sterowania:

Szybkie tworzenie grafiki w GcIde

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Instrukcja użytkownika ARSoft-WZ1

Zaawansowany kurs języka Python

Supermakler: Nowe funkcjonalności

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Wprowadzenie do programowania urządzeń Arduino (Arduino dla Informatyków)

Notowania Mobilne wersja Java dotykowa. Instrukcja obsługi programu

Rozdział 2. Konfiguracja środowiska pracy uŝytkownika

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

Ikona aplikacji. Ikona aplikacji to grafika wyświetlająca się na ekranie ipada. Służy do uruchomienia aplikacji Salesbook.

INSTRUKCJA INSTALACJI I URUCHOMIENIA PROGRAMÓW FINKA DOS W SYSTEMACH 64 bit

Wprowadzenie do biblioteki klas C++

Spis treści. 1 Moduł Mapy 2

Cash Flow System Instrukcja

Grafika w aplikacjach lp. Jak zmienić kolor tła?

Utworzenie pliku. Dowiesz się:

Menu Plik w Edytorze symboli i Edytorze widoku aparatów

Dodanie nowej formy do projektu polega na:

Arkadiusz Kalicki, Lech Mankiewicz Plugin Webcam dla SalsaJ Podręcznik użytkownika

Tworzenie prezentacji w MS PowerPoint

Tworzenie strony www - jako projektu z Mechaniki i budowy maszyn

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Zmiana rozdzielczości ekranu

Projektowanie przy uz yciu motywo w częś c 1: informacje podśtawowe

POLSKI. Macro Key Manager Podręcznik użytkownika

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

Programowanie na poziomie sprzętu. Programowanie w Windows API

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Dell P2018H Dell Display Manager Instrukcja użytkownika

Instrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na r.

Voicer. SPIKON Aplikacja Voicer V100

Obsługa programu Paint. mgr Katarzyna Paliwoda

ActionFX oprogramowanie do sterowania efektami platform i kin 7D V1.0.1

Instrukcja instalacji certyfikatu w systemie Windows

SimplySign logowanie i rejestracja na komputerze oraz dodanie certyfikatu do programu Płatnik

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Aplikacja CMS. Podręcznik użytkownika

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Instrukcja obsługi programu Creative Fotos

1. Opis. 2. Wymagania sprzętowe:

Instrukcja do ćwiczeń

etrader Pekao Podręcznik użytkownika Informacje rynkowe

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

1. Pobieranie i instalacja FotoSendera

Architektura interfejsu użytkownika

Windows 10 - Jak uruchomić system w trybie

PRZEWODNIK PO ETRADER PEKAO ROZDZIAŁ XVI. INFORMACJE RYNKOWE SPIS TREŚCI

Aplikacja RACS Point. Instrukcja obsługi

5.4. Tworzymy formularze

Pliki. Informacje ogólne. Obsługa plików w języku C

Atmosfera. IT Works S.A. Instrukcja dla użytkownika końcowego. Mariusz Sokalski Wersja 1.1

Moduł rozliczeń w WinUcz (od wersji 18.40)

System Informatyczny CELAB. Terminy, alarmy


Wstawianie nowej strony

Podręczna pomoc Microsoft Power Point 2007

Krzyżówka Hot Potatoes JCross

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Instrukcja obsługi platformy PROMEDIO Transmisje. wersja dla ucznia

Allegro5 3/x. Przykład wklejamy go do dev'a zamiast kodu domyślnego dal programu z allegro i kompilujemy.

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP

Laboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu

Transkrypt:

Laboratorium 12: Podstawy grafiki 2D - biblioteka Allegro mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot 18 stycznia 2016

1. Wprowadzenie Współcześnie, większość urządzeń elektronicznych zdolnych jest do wyświetlania zaawansowanej grafiki. Aby ułatwić programiście jej przygotowywanie dostępnych jest wiele bibliotek, różniących się między sobą możliwościami i przeznaczeniem. Jedną z takich bibliotek jest Allegro, która jest przeznaczona do projektowania gier 2D. 2. Instalacja biblioteki Instalacja biblioteki pokazana będzie na przykładzie środowiska Code::Blocks w systemie MS Windows. 2.1. Instalacja plików Ze strony http://download.gna.org/allegro/allegro-bin/4.2.2/ należy pobrać plik allegro-mingw-4.2.2.zip i zdekompresować go. Następnie zawartość folderu bin należy skopiować pod adres C:\Program Files (x86)\codeblocks\mingw\bin, folderu include pod adres: C:\Program Files (x86)\codeblocks\mingw\include, a folderu lib pod adres C:\Program Files (x86)\codeblocks\ MinGW\lib 2.2. Konfiguracja projektu w środowisku Code::Blocks W środowisku Code::Blocks należy przekazać informację o używanej dodatkowo bibliotece. Z tego powodu konieczne jest pracowanie z wykorzystaniem projektów nie da się kompilować pliku z jego pominięciem. Po utworzeniu projektu, należy zaznaczyć jego nazwę i otworzyć menu kontekstowe (najczęściej prawym przyciskiem myszy). Należy wybrać polecenie Build options... W nowo otwartym oknie Project build options należy przejść do karty Linker settings. W polu Link libraries należy dodać adres biblioteki C:\Program Files (x86)\codeblocks\mingw\lib\liballeg.a. Na koniec potwierdzamy wybór przyciskiem OK. 2.3. Hello World! Po wykonaniu czynności opisanych powyżej, możliwe jest skompilowanie projektu. Na Listingu 1 zaprezentowano najprostszą aplikację wykorzystującą bibliotekę. Czarny ekran oznacza w tym przypadku prawidłowy wynik działania programu. #include <allegro.h> int main() { allegro_init(); install_keyboard(); set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0); readkey(); return 0; END_OF_MAIN(); Listing 1: Program HelloWorld z wykorzystaniem biblioteki allegro. 3. Funkcje Rozpoczynając tryb pracy z biblioteką, można też skonfigurować kilka dodatkowych parametrów pracy. 1

3.1. Funkcje inicjalizujące int allegro_init(); Makro inicjalizujące bibliotekę Allegro. int install_keyboard(); Uruchamia obsługę klawiatury przez bibliotekę Allegro. Należy zauważyć, że od momentu inicjalizacji biblioteki nie można już używać standardowych funkcji systemowych ani funkcji języka C do odczytu danych z klawiatury. Ze względu na różnice implementacyjne na różnych systemach, nie można mieć 100% pewności, że odczyt danych z klawiatury będzie możliwy, dopóki nie zostanie uruchomione środowisko graficzne biblioteki funkcją set_gfx_mode(). void set_color_depth(int depth); Określa głębokość koloru, jaki będzie używany przez funkcję biblioteki. Dopuszczalnymi wartościami są: 8 (wartość domyślna), 15, 16, 24, 32. int set_gfx_mode(int card, int w, int h, int v_w, int v_h); Uruchamia graficzne środowisko biblioteki. Pierwszym parametrem jest informacja o platformie graficznej. Aby pozwolić bibliotece automatycznie wybrać właściwy sterownik, należy przekazać tu wartość GFX_AUTODETECT. Następne dwa parametry określają szerokość i wysokość tworzonego okna w pikselach. Ostatnie dwa parametry określają rozmiar wirtualnego okna, które jest używane do zamiany przy odświeżaniu ekranu. Nie każdy rozmiar jest akceptowany przez sterowniki. Aby uzyskać dopasowanie do każdego okna, należy przekazać tu wartości 0 i 0. void allegro_message(const char *text_format,...); Wyświetla komunikat w formie podanego ciągu. Funkcja ta jest zależna od środowiska, dlatego nie zawsze może działać. Nie wolno jej jednak używać, jeżeli program pracuje już w trybie graficznym. void inicjalizuj(){ if(!allegro_init()){ printf("blad inicjalizacji bibliotek i Allegro!"); return; if(! install_keyboard()){ allegro_message("blad inicjalizacji bibliotek i Allegro!"); return; set_color_depth(32); if(!set gfx mode (AL GFX AUTODETECT FULLSCREEN, 1 3 6 6, 7 6 8, 0, 0 ){ allegro_message("blad ustawiania trybu gra ficznego!") ; return; Listing 2: Program prezentujący konfigurowanie biblioteki Allegro. 3.2. Tworzenie obrazu Współrzędne ekranu i dowolnej bitmapy liczone są względem lewego górnego rogu. Piksel znajdujący się w tym miejscu ma współrzędne o wartości (0, 0). typedef struct BITMAP Struktura danych wykorzystywana jako bufor ramki. extern BITMAP *screen; Wskaźnik globalny do głównego obrazu, który jest aktualnie wyświetlany na ekranie. void putpixel(bitmap *bmp, int x, int y, int color); Ustawia kolor piksela na pozycji x, y na kolor określony w trzecim parametrze, który jest zgodny z aktualnie przyjętym trybem rysowania. Kolor można uzyskać przy pomocy funkcji makecol(). Istnieją też makra: _putpixel(), _putpixel15(), _putpixel16(), _putpixel24(), _putpixel32(), które są zaimplementowane 2

jako polecenia assemblerowe. W związku z tym działają dużo szybciej. Nie sprawdzają one jednak poprawności ich użycia, dlatego nieodpowiednie ich wywołanie może doprowadzić do awarii programu. int makecol(int r, int g, int b); Przekształca kolor podany w formacie niezależnym od sprzętu na aktualnie wykorzystywany format graficzny. Wszystkie wartości powinny być w zakresie od 0 do 255.Odpowiednio zakodowany kolor zwracany jest jako wynik z funkcji. void line(bitmap *bmp, int x1, int y1, int x2, int y2, int color); Rysuje linię w kolorze color od punktu (x1, y1) do punktu (x2, y2). void circle(bitmap *bmp, int x, int y, int radius, int color); Rysuje okrąg o określonym punkcie środka i promieniu. void rect(bitmap *bmp, int x1, int y1, int x2, int y2, int color); Rysuje prostokąt w kolorze color od punktu (x1, y1) do punktu (x2, y2). 3.3. Obsługa animacji Grafika 2d może przedstawiać obraz statyczny lub dynamiczny. Aby animacje były płynne obraz musi być wyświetlany z częstotliwością co najmniej 24 klatek na sekundę. Bibliotek Allegro wspiera tworzenie animacji poprzez dostarczenie mechanizmu obsługi tak zwanych stron. Strona jest po prostu bitmapą na której program rysuje pojedynczą klatkę animacji, a następnie wyświetla ją na ekranie. BITMAP *create_video_bitmap(int width, int height); Alokiuje pamięć video na bitmapy o określonym rozmiarze. Może być użyte do alokacji pozaekranowej pamięci video, aby zapisać gotową do wyświetlenia ramkę. Może być ona później wyświetlona przez operację sprzętowej zamiany wyświetlanych ramek, co można wykonać wywołując funkcję show_video_bitmap(). Należy pamiętać o zwolnieniu ramki, zanim zostanie wywołana funkcja set_gfx_mode(). void destroy_bitmap(bitmap *bitmap); Zwalnia pamięć zarezerwowaną na daną bitmapę. int show_video_bitmap(bitmap *bitmap); Funkcja wyświetla zdefiniowaną bitmapę na ekranie, zastępując aktualnie wyświetlaną ramkę. Wstawiana bitmapa musi mieć taki sam rozmiar, jak ekran rzeczywisty (taki, jak wybrany tryb graficzny). void clear_to_color(bitmap *bitmap, int color); Czyści wskazaną bitmapę przy pomocy podanego koloru. 3.4. Obsługa klawiatury Biblioteka Allegro posiada własny interfejs, który odpowiedzialny jest za obsługę komunikacji z użytkownikiem. int keypressed(); Zwraca wartość TRUE jeżeli w buforze wejścia znajduje się wartość do odczytu. Funkcja umożliwia sprawdzenie, czy wywołanie kolejne funkcji readkey() spowoduje zablokowanie programu. Możliwe jest też wykorzystanie tej funkcji do wyświetlania animacji do czasu wciśnięcia dowolnego przycisku. void clear_keybuf(); Umożliwia wyczyszczenie bufora danych wejściowych. Użycie tej funkcji może być przydatne, jeżeli dane wczytane przez funkcje readkey() lub ureadkey() powinny być aktualne i nie pochodzić od wcześniej wciśniętych przycisków. extern volatile char key[key_max ;] Tablica flag zawierająca informację,. Który z przycisków specjalnych jest aktualnie wciśnięty. Z tego powodu tablica ta jest jedynie do odczytu. Wartości w tej tablicy ustawiane są asynchronicznie, ale jeżeli funkcja keyboard_needs_poll() zwróci TRUE, należy ręcznie wywołać funkcję poll_keyboard(). Kody przycisków umieszczone są w nagłówku allegro/keyboard.h jako serie stałych zaczynających się od KEY_*. Niektóre przykłady zostały wypisane poniżej: KEY_A... KEY_Z, 3

KEY_0... KEY_9, KEY_0_PAD... KEY_9_PAD, KEY_F1... KEY_F12, KEY_ESC, KEY_TILDE, KEY_MINUS, KEY_EQUALS, KEY_BACKSPACE, KEY_TAB, KEY_OPENBRACE, KEY_CLOSEBRACE, KEY_ENTER, KEY_COLON, KEY_QUOTE, KEY_BACKSLASH, KEY_BACKSLASH2, KEY_COMMA, KEY_STOP, KEY_SLASH, KEY_SPACE, KEY_INSERT, KEY_DEL, KEY_HOME, KEY_END, KEY_PGUP, KEY_PGDN, KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN, KEY_SLASH_PAD, KEY_ASTERISK, KEY_MINUS_PAD, KEY_PLUS_PAD, KEY_DEL_PAD, KEY_ENTER_PAD, KEY_PRTSCR, KEY_PAUSE, KEY_ABNT_C1, KEY_YEN, KEY_KANA, KEY_CONVERT, KEY_NOCONVERT, KEY_AT, KEY_CIRCUMFLEX, KEY_COLON2, KEY_KANJI, KEY_LSHIFT, KEY_RSHIFT, KEY_LCONTROL, KEY_RCONTROL, KEY_ALT, KEY_ALTGR, KEY_LWIN, KEY_RWIN, KEY_MENU, KEY_SCRLOCK, KEY_NUMLOCK, KEY_CAPSLOCK KEY_EQUALS_PAD, KEY_BACKQUOTE, KEY_SEMICOLON, KEY_COMMAND Przykład: if (key[key_space]) printf("wciśnięto spację\n"); 3.5. Obsługa tekstu W trybie graficznym, tekst nie może być wyświetlany przy pomocy funkcji printf() i wymagane jest wykorzystanie dedykowanych do tego funkcji biblioteki Allegro. void textout_ex(bitmap *bmp, const FONT *f, const char *s, int x, int y, int color, int bg); Funkcja wypisuje ciąg s na bitmapie bmp na pozycji (x, y) przy użyciu fontu font o kolorze color i tle koloru bg. Jeżeli kolor tła jest ustawiony na -1, to tekst jest wyświetlany przezroczyście. Jeżeli wartość -1 jest podana jako kolor napisu, to użyty jest domyślny kolor fontu. extern FONT *font; Prosta czcionka o stałym rozmiarze 8x8. W dokumentacji biblioteki można znaleźć opis, jak zmienić standardową czcionkę na własną. void textout_centre_ex(bitmap *bmp, const FONT *f, const char *s, int x, y, int color, int bg); Funkcja działa podobnie do textout_ex(), jednak koordynaty określają nie lewą krawędź napisu, ale jego środek. Funkcja przydaje się, gdy wyświetlany tekst ma zostać wyśrodkowany. Przykład: texttt /* Important texts go in the middle. */ width = text_length( GAME OVER ); textout_centre_ex(screen, font, GAME OVER, SCREEN_W / 2, SCREEN_H / 2, makecol(255, 0, 0), makecol(0, 0, 0)); 4. Zadania Uwaga! Wszystkie pogramy muszą być napisane z podziałem na funkcje z parametrami. 1. Napisz program, który umożliwi użytkownikowi poruszanie za pomocą klawiszy kursora okręgiem o promieniu 10 pikseli po ekranie. Program nie powinien umożliwiać opuszczenia ekranu przez okrąg. 4

2. Pobierz ze strony przedmiotu program symulujący ruch piłki po ekranie. Zmodyfikuj go dodając paletkę w postaci odcinka znajdującego się na dole ekranu, którą użytkownik będzie mógł poruszać za pomocą klawiszy kursora. Piłka powinna odbijać się od paletki, jeśli napotka ją na swojej drodze. 5