Praktyka programowania projekt Zadanie projektowe nr. 2 Gra PacMan K. M. Ocetkiewicz, T Goluch 19 listopada 2012
Plan prezentacji Opis 2 zadania projektowego
Plan prezentacji Opis 2 zadania projektowego
Plan prezentacji Opis 2 zadania projektowego
Opis 2 zadania projektowego
Zadanie Opis 2 zadania projektowego Tematem drugiego zadania projektowego jest napisanie gry podobnej do kultowego PacMana. Program powinien kompilować sie i działać pod Linuxem.
Zadanie Opis 2 zadania projektowego Tematem drugiego zadania projektowego jest napisanie gry podobnej do kultowego PacMana. Program powinien kompilować sie i działać pod Linuxem.
Szablon Opis 2 zadania projektowego Do zadania przygotowany jest szablon (na stronie projektu). Szablon korzysta z biblioteki SDL (www.libsdl.org).
Szablon Opis 2 zadania projektowego Do zadania przygotowany jest szablon (na stronie projektu). Szablon korzysta z biblioteki SDL (www.libsdl.org). Biblioteka jest dołączona do szablonu, nie trzeba niczego dodatkowo instalować.
Szablon Opis 2 zadania projektowego Do zadania przygotowany jest szablon (na stronie projektu). Szablon korzysta z biblioteki SDL (www.libsdl.org). Biblioteka jest dołączona do szablonu, nie trzeba niczego dodatkowo instalować. Korzystanie z szablonu nie jest wymagane, ale wszystkie założenia zadania powinny być spełnione.
Szablon Opis 2 zadania projektowego Do zadania przygotowany jest szablon (na stronie projektu). Szablon korzysta z biblioteki SDL (www.libsdl.org). Biblioteka jest dołączona do szablonu, nie trzeba niczego dodatkowo instalować. Korzystanie z szablonu nie jest wymagane, ale wszystkie założenia zadania powinny być spełnione. W przypadku skorzystania z innych bibliotek prowadzący może odmówić pomocy przy problemach związanych z nimi.
Szablon Opis 2 zadania projektowego Do zadania przygotowany jest szablon (na stronie projektu). Szablon korzysta z biblioteki SDL (www.libsdl.org). Biblioteka jest dołączona do szablonu, nie trzeba niczego dodatkowo instalować. Korzystanie z szablonu nie jest wymagane, ale wszystkie założenia zadania powinny być spełnione. W przypadku skorzystania z innych bibliotek prowadzący może odmówić pomocy przy problemach związanych z nimi.
Kompilacja w systemie Linux
Kompilacja pod Linuxem Do wszystkich popularnych dystrybucji Linuxa (poza Ubuntu) dołączony jest kompilator języka C. Nazywa się gcc (g++ w przypadku kompilatora C++).
Kompilacja pod Linuxem Do wszystkich popularnych dystrybucji Linuxa (poza Ubuntu) dołączony jest kompilator języka C. Nazywa się gcc (g++ w przypadku kompilatora C++). Wykorzystujemy go z lini w linii komend.
Kompilacja pod Linuxem Do wszystkich popularnych dystrybucji Linuxa (poza Ubuntu) dołączony jest kompilator języka C. Nazywa się gcc (g++ w przypadku kompilatora C++). Wykorzystujemy go z lini w linii komend.
Kompilacja pod Linuxem
Kompilacja pod Linuxem
Kompilacja pod Linuxem
Kompilacja pod Linuxem
polecenie make i plik Makefile Narzędzie make pozwala nam zautomatyzować kompilację. Wydając polecenie make, w bieżącym katalogu szukany jest plik Makefile.
polecenie make i plik Makefile Narzędzie make pozwala nam zautomatyzować kompilację. Wydając polecenie make, w bieżącym katalogu szukany jest plik Makefile. Można użyć innego pliku, ale wtedy trzeba podać parametr: -f nazwapliku np: make -f Makefile.linux
polecenie make i plik Makefile Narzędzie make pozwala nam zautomatyzować kompilację. Wydając polecenie make, w bieżącym katalogu szukany jest plik Makefile. Można użyć innego pliku, ale wtedy trzeba podać parametr: -f nazwapliku np: make -f Makefile.linux Plik Makefile opisuje proces kompilacji oraz zależności pomiędzy poszczególnymi plikami.
polecenie make i plik Makefile Narzędzie make pozwala nam zautomatyzować kompilację. Wydając polecenie make, w bieżącym katalogu szukany jest plik Makefile. Można użyć innego pliku, ale wtedy trzeba podać parametr: -f nazwapliku np: make -f Makefile.linux Plik Makefile opisuje proces kompilacji oraz zależności pomiędzy poszczególnymi plikami. Opis składa się ze zbioru reguł.
polecenie make i plik Makefile Narzędzie make pozwala nam zautomatyzować kompilację. Wydając polecenie make, w bieżącym katalogu szukany jest plik Makefile. Można użyć innego pliku, ale wtedy trzeba podać parametr: -f nazwapliku np: make -f Makefile.linux Plik Makefile opisuje proces kompilacji oraz zależności pomiędzy poszczególnymi plikami. Opis składa się ze zbioru reguł. Make usprawnia kompilację, samodzielnie decydując, które z plików źródłowych mają być przekompilowane (sprawdzając daty ostatniej modyfikacji).
polecenie make i plik Makefile Narzędzie make pozwala nam zautomatyzować kompilację. Wydając polecenie make, w bieżącym katalogu szukany jest plik Makefile. Można użyć innego pliku, ale wtedy trzeba podać parametr: -f nazwapliku np: make -f Makefile.linux Plik Makefile opisuje proces kompilacji oraz zależności pomiędzy poszczególnymi plikami. Opis składa się ze zbioru reguł. Make usprawnia kompilację, samodzielnie decydując, które z plików źródłowych mają być przekompilowane (sprawdzając daty ostatniej modyfikacji).
polecenie make i plik Makefile Każda reguła w pliku Makefile ma postać: cel : źródła polecenia Cel to plik który chcemy otrzymać np. program.exe
polecenie make i plik Makefile Każda reguła w pliku Makefile ma postać: cel : źródła polecenia Cel to plik który chcemy otrzymać np. program.exe Źródła to pliki z których budujemy cel np. main.cpp
polecenie make i plik Makefile Każda reguła w pliku Makefile ma postać: cel : źródła polecenia Cel to plik który chcemy otrzymać np. program.exe Źródła to pliki z których budujemy cel np. main.cpp Polecenia mówią jak budujemy cel ze źródeł np: g++ -o program.exe main.cpp.
polecenie make i plik Makefile Każda reguła w pliku Makefile ma postać: cel : źródła polecenia Cel to plik który chcemy otrzymać np. program.exe Źródła to pliki z których budujemy cel np. main.cpp Polecenia mówią jak budujemy cel ze źródeł np: g++ -o program.exe main.cpp. Np.: program.exe: main.cpp g++ -o program.exe main.cpp
polecenie make i plik Makefile Każda reguła w pliku Makefile ma postać: cel : źródła polecenia Cel to plik który chcemy otrzymać np. program.exe Źródła to pliki z których budujemy cel np. main.cpp Polecenia mówią jak budujemy cel ze źródeł np: g++ -o program.exe main.cpp. Np.: program.exe: main.cpp g++ -o program.exe main.cpp
polecenie make i plik Makefile W pliku Makefile możemy definiować stałe. Definicja stałej ma postać: nazwa = wartość
polecenie make i plik Makefile W pliku Makefile możemy definiować stałe. Definicja stałej ma postać: nazwa = wartość Po takiej definicji każdy napis $(nazwa) zostanie zamieniony na wartość.
polecenie make i plik Makefile W pliku Makefile możemy definiować stałe. Definicja stałej ma postać: nazwa = wartość Po takiej definicji każdy napis $(nazwa) zostanie zamieniony na wartość. Np.: CC = g++ -O2 -I./sdl/include -L. LIBS = -lm -lsdl -lpthread ldl SRC = main.cpp all: main main: $(SRC) $(CC) -o $@ $(SRC) $(LIBS)
polecenie make i plik Makefile W pliku Makefile możemy definiować stałe. Definicja stałej ma postać: nazwa = wartość Po takiej definicji każdy napis $(nazwa) zostanie zamieniony na wartość. Np.: CC = g++ -O2 -I./sdl/include -L. LIBS = -lm -lsdl -lpthread ldl SRC = main.cpp all: main main: $(SRC) $(CC) -o $@ $(SRC) $(LIBS) reguła all oznacza wszystko (cały program).
polecenie make i plik Makefile W pliku Makefile możemy definiować stałe. Definicja stałej ma postać: nazwa = wartość Po takiej definicji każdy napis $(nazwa) zostanie zamieniony na wartość. Np.: CC = g++ -O2 -I./sdl/include -L. LIBS = -lm -lsdl -lpthread ldl SRC = main.cpp all: main main: $(SRC) $(CC) -o $@ $(SRC) $(LIBS) reguła all oznacza wszystko (cały program).
polecenie make i plik Makefile Definiujemy stałe: CC = g++ -O2 -I./sdl/include -L. LIBS = -lm -lsdl -lpthread -ldl SRC = main.cpp Tworzymy cel all, który budujemy z pliku main nic nie robiąc: all: main
polecenie make i plik Makefile Definiujemy stałe: CC = g++ -O2 -I./sdl/include -L. LIBS = -lm -lsdl -lpthread -ldl SRC = main.cpp Tworzymy cel all, który budujemy z pliku main nic nie robiąc: all: main Tworzymy cel main, który budujemy z pliku main.cpp (wartość $(SRC)) wydając polecenie: g++ -O2 I./sdl/include -L. o main main.cpp -lm -lsdl -lpthread -ldl
polecenie make i plik Makefile Definiujemy stałe: CC = g++ -O2 -I./sdl/include -L. LIBS = -lm -lsdl -lpthread -ldl SRC = main.cpp Tworzymy cel all, który budujemy z pliku main nic nie robiąc: all: main Tworzymy cel main, który budujemy z pliku main.cpp (wartość $(SRC)) wydając polecenie: g++ -O2 I./sdl/include -L. o main main.cpp -lm -lsdl -lpthread -ldl $@ jest specjalną stałą której wartością jest nazwa celu
polecenie make i plik Makefile Definiujemy stałe: CC = g++ -O2 -I./sdl/include -L. LIBS = -lm -lsdl -lpthread -ldl SRC = main.cpp Tworzymy cel all, który budujemy z pliku main nic nie robiąc: all: main Tworzymy cel main, który budujemy z pliku main.cpp (wartość $(SRC)) wydając polecenie: g++ -O2 I./sdl/include -L. o main main.cpp -lm -lsdl -lpthread -ldl $@ jest specjalną stałą której wartością jest nazwa celu
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe budowany jest pierwszy cel, z pliku (all)
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe budowany jest pierwszy cel, z pliku (all) all wymaga main-a, który nie istnieje, więc trzeba go zbudować
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe budowany jest pierwszy cel, z pliku (all) all wymaga main-a, który nie istnieje, więc trzeba go zbudować jak? na podstawie odpowiedniej reguły
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe budowany jest pierwszy cel, z pliku (all) all wymaga main-a, który nie istnieje, więc trzeba go zbudować jak? na podstawie odpowiedniej reguły kompilowany jest plik main.cpp
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe budowany jest pierwszy cel, z pliku (all) all wymaga main-a, który nie istnieje, więc trzeba go zbudować jak? na podstawie odpowiedniej reguły kompilowany jest plik main.cpp powstaje plik main
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe budowany jest pierwszy cel, z pliku (all) all wymaga main-a, który nie istnieje, więc trzeba go zbudować jak? na podstawie odpowiedniej reguły kompilowany jest plik main.cpp powstaje plik main wykonywane jest polecenie dla all (puste)
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe budowany jest pierwszy cel, z pliku (all) all wymaga main-a, który nie istnieje, więc trzeba go zbudować jak? na podstawie odpowiedniej reguły kompilowany jest plik main.cpp powstaje plik main wykonywane jest polecenie dla all (puste) kompilacja się kończy
polecenie make i plik Makefile Wydajemy polecenie make: plik Makefile jest znajdowany i przetwarzany definiowane są stałe budowany jest pierwszy cel, z pliku (all) all wymaga main-a, który nie istnieje, więc trzeba go zbudować jak? na podstawie odpowiedniej reguły kompilowany jest plik main.cpp powstaje plik main wykonywane jest polecenie dla all (puste) kompilacja się kończy
Konsola vs okienka W tym projekcie piszemy aplikację działającą w trybie graficznym czy też okienkową. Tworzeniem i zarządzaniem okienkami zajmie się za nas SDL.
Konsola vs okienka W tym projekcie piszemy aplikację działającą w trybie graficznym czy też okienkową. Tworzeniem i zarządzaniem okienkami zajmie się za nas SDL. Koncepcja obsługi wejścia/wyjścia w aplikacji okienkowej jest inna od zastosowanej w pierwszym projekcie.
Konsola vs okienka W tym projekcie piszemy aplikację działającą w trybie graficznym czy też okienkową. Tworzeniem i zarządzaniem okienkami zajmie się za nas SDL. Koncepcja obsługi wejścia/wyjścia w aplikacji okienkowej jest inna od zastosowanej w pierwszym projekcie. Program nie zatrzymuje swojego działania w oczekiwaniu na dane wprowadzone przez użytkownika.
Konsola vs okienka W tym projekcie piszemy aplikację działającą w trybie graficznym czy też okienkową. Tworzeniem i zarządzaniem okienkami zajmie się za nas SDL. Koncepcja obsługi wejścia/wyjścia w aplikacji okienkowej jest inna od zastosowanej w pierwszym projekcie. Program nie zatrzymuje swojego działania w oczekiwaniu na dane wprowadzone przez użytkownika.
Zdarzenia Opis 2 zadania projektowego Akcje użytkownika docierają do programu jako zdarzenia. Zdarzeniami są np. ruch myszą, naciśnięcie klawisza, zwolnienie klawisza, naciśnięcie przycisku X w prawym górnym rogu okna itp.
Zdarzenia Opis 2 zadania projektowego Akcje użytkownika docierają do programu jako zdarzenia. Zdarzeniami są np. ruch myszą, naciśnięcie klawisza, zwolnienie klawisza, naciśnięcie przycisku X w prawym górnym rogu okna itp. Zdarzenia płynące do programu ustawiają się w kolejce i czekają na ich obsługę przez program.
Zdarzenia Opis 2 zadania projektowego Akcje użytkownika docierają do programu jako zdarzenia. Zdarzeniami są np. ruch myszą, naciśnięcie klawisza, zwolnienie klawisza, naciśnięcie przycisku X w prawym górnym rogu okna itp. Zdarzenia płynące do programu ustawiają się w kolejce i czekają na ich obsługę przez program. Program powinien co jakiś czas zerkać na kolejkę, sprawdzając, czy czekają w niej zdarzenia, jeżeli tak, obsłużyć je.
Zdarzenia Opis 2 zadania projektowego Akcje użytkownika docierają do programu jako zdarzenia. Zdarzeniami są np. ruch myszą, naciśnięcie klawisza, zwolnienie klawisza, naciśnięcie przycisku X w prawym górnym rogu okna itp. Zdarzenia płynące do programu ustawiają się w kolejce i czekają na ich obsługę przez program. Program powinien co jakiś czas zerkać na kolejkę, sprawdzając, czy czekają w niej zdarzenia, jeżeli tak, obsłużyć je.
Zdarzenia Opis 2 zadania projektowego Aplikacja okienkowa teoretycznie może czekać (zatrzymując działanie) na zdarzenia, ale w naszym przypadku jest to niemożliwe:
Zdarzenia Opis 2 zadania projektowego Aplikacja okienkowa teoretycznie może czekać (zatrzymując działanie) na zdarzenia, ale w naszym przypadku jest to niemożliwe: PacMan i duszki muszą poruszać się niezależnie od tego, czy naciskamy klawisze, czy nie...
Zdarzenia Opis 2 zadania projektowego Aplikacja okienkowa teoretycznie może czekać (zatrzymując działanie) na zdarzenia, ale w naszym przypadku jest to niemożliwe: PacMan i duszki muszą poruszać się niezależnie od tego, czy naciskamy klawisze, czy nie...
Ekran Opis 2 zadania projektowego Ekran, tak jak w aplikacji konsolowej, składa się z komórek równomiernie rozłożonych na prostokącie. Inaczej niż w aplikacji konsolowej, tu komórka ma tylko kolor.
Ekran Opis 2 zadania projektowego Ekran, tak jak w aplikacji konsolowej, składa się z komórek równomiernie rozłożonych na prostokącie. Inaczej niż w aplikacji konsolowej, tu komórka ma tylko kolor. Komórek jest zdecydowanie więcej (w przypadku szablonu jest to 720 x 576).
Ekran Opis 2 zadania projektowego Ekran, tak jak w aplikacji konsolowej, składa się z komórek równomiernie rozłożonych na prostokącie. Inaczej niż w aplikacji konsolowej, tu komórka ma tylko kolor. Komórek jest zdecydowanie więcej (w przypadku szablonu jest to 720 x 576). Wszystko, co widzimy na ekranie, składa się z maleńkich prostokątów różnych kolorów (pikseli).
Ekran Opis 2 zadania projektowego Ekran, tak jak w aplikacji konsolowej, składa się z komórek równomiernie rozłożonych na prostokącie. Inaczej niż w aplikacji konsolowej, tu komórka ma tylko kolor. Komórek jest zdecydowanie więcej (w przypadku szablonu jest to 720 x 576). Wszystko, co widzimy na ekranie, składa się z maleńkich prostokątów różnych kolorów (pikseli).
Ekran Opis 2 zadania projektowego
Kolor Opis 2 zadania projektowego Każdy piksel składa się z trzech elementów świecących o kolorach czerwonym, zielonym i niebieskim. Kolor piksela w rzeczywistości określa, jak jasno ma świecić każdy element, np. czerwony na 100%, zielony na 50%, niebieski na 0% da nam taki kolor.
Kolor Opis 2 zadania projektowego Każdy piksel składa się z trzech elementów świecących o kolorach czerwonym, zielonym i niebieskim. Kolor piksela w rzeczywistości określa, jak jasno ma świecić każdy element, np. czerwony na 100%, zielony na 50%, niebieski na 0% da nam taki kolor. Natężenie każdego elementu określamy w skali: 0..255 (co odpowiada 0%..100%) po czym obliczamy: czerwony * 65536 + zielony * 256 + niebieski.
Kolor Opis 2 zadania projektowego Każdy piksel składa się z trzech elementów świecących o kolorach czerwonym, zielonym i niebieskim. Kolor piksela w rzeczywistości określa, jak jasno ma świecić każdy element, np. czerwony na 100%, zielony na 50%, niebieski na 0% da nam taki kolor. Natężenie każdego elementu określamy w skali: 0..255 (co odpowiada 0%..100%) po czym obliczamy: czerwony * 65536 + zielony * 256 + niebieski. W reprezentacji szesnastkowej kolejne natężenia zajmują kolejne pary cyfr liczby: 0x123456
Kolor Opis 2 zadania projektowego Każdy piksel składa się z trzech elementów świecących o kolorach czerwonym, zielonym i niebieskim. Kolor piksela w rzeczywistości określa, jak jasno ma świecić każdy element, np. czerwony na 100%, zielony na 50%, niebieski na 0% da nam taki kolor. Natężenie każdego elementu określamy w skali: 0..255 (co odpowiada 0%..100%) po czym obliczamy: czerwony * 65536 + zielony * 256 + niebieski. W reprezentacji szesnastkowej kolejne natężenia zajmują kolejne pary cyfr liczby: 0x123456
Upływ czasu Opis 2 zadania projektowego Jak szybko porusza się PacMan?.
Upływ czasu Opis 2 zadania projektowego Jak szybko porusza się PacMan?.
Upływ czasu Opis 2 zadania projektowego Aby uniezależnić się od warunków zewnętrznych, należy śledzić upływ czasu.
Upływ czasu Opis 2 zadania projektowego Aby uniezależnić się od warunków zewnętrznych, należy śledzić upływ czasu.
Upływ czasu Opis 2 zadania projektowego Dzięki temu uniezależniamy prędkość bochaterów od maszyny i zewnętrznych czynników. Możemy także operować na rozsądnych jednostkach, np. określać prędkość w pikselach na sekundę.
Upływ czasu Opis 2 zadania projektowego Dzięki temu uniezależniamy prędkość bochaterów od maszyny i zewnętrznych czynników. Możemy także operować na rozsądnych jednostkach, np. określać prędkość w pikselach na sekundę.
Upływ czasu Opis 2 zadania projektowego Należy odpowiednio obsłużyć wpływ klawiszy na stan bochaterów.
Upływ czasu Opis 2 zadania projektowego Należy odpowiednio obsłużyć wpływ klawiszy na stan bochaterów.
Zdarzenia klawiatury SDL KEYDOWN naciśnięcie klawisza SDL KEYUP zwolnienie klawisza
Zdarzenia klawiatury SDL KEYDOWN naciśnięcie klawisza SDL KEYUP zwolnienie klawisza event.key.keysym.sym to identyfikator klawisza, np.: SDLK ESCAPE, SDLK LEFT, SDLK RIGHT, SDLK DOWN, SDLK UP, SDLK a, SDLK b,...
Zdarzenia klawiatury SDL KEYDOWN naciśnięcie klawisza SDL KEYUP zwolnienie klawisza event.key.keysym.sym to identyfikator klawisza, np.: SDLK ESCAPE, SDLK LEFT, SDLK RIGHT, SDLK DOWN, SDLK UP, SDLK a, SDLK b,... Listę wszystkich można znaleźć w pliku: sdl/include/sdl keysym.h w szablonie projektu
Zdarzenia klawiatury SDL KEYDOWN naciśnięcie klawisza SDL KEYUP zwolnienie klawisza event.key.keysym.sym to identyfikator klawisza, np.: SDLK ESCAPE, SDLK LEFT, SDLK RIGHT, SDLK DOWN, SDLK UP, SDLK a, SDLK b,... Listę wszystkich można znaleźć w pliku: sdl/include/sdl keysym.h w szablonie projektu
Powierzchnie w SDL Powierzchnia w SDL reprezentuje prostokątny obszar o zdefiniowanych wymiarach, zawierający zbiór pikseli. Przykładem powierzchni jest ekran.
Powierzchnie w SDL Powierzchnia w SDL reprezentuje prostokątny obszar o zdefiniowanych wymiarach, zawierający zbiór pikseli. Przykładem powierzchni jest ekran. Np. jeżeli chcemy wyświetlić na ekranie obrazek (np. bitmapę) musimy:
Powierzchnie w SDL Powierzchnia w SDL reprezentuje prostokątny obszar o zdefiniowanych wymiarach, zawierający zbiór pikseli. Przykładem powierzchni jest ekran. Np. jeżeli chcemy wyświetlić na ekranie obrazek (np. bitmapę) musimy: utworzyć powierzchnię A,
Powierzchnie w SDL Powierzchnia w SDL reprezentuje prostokątny obszar o zdefiniowanych wymiarach, zawierający zbiór pikseli. Przykładem powierzchni jest ekran. Np. jeżeli chcemy wyświetlić na ekranie obrazek (np. bitmapę) musimy: utworzyć powierzchnię A, załadować do powierzchni A zawartość bitmapy,
Powierzchnie w SDL Powierzchnia w SDL reprezentuje prostokątny obszar o zdefiniowanych wymiarach, zawierający zbiór pikseli. Przykładem powierzchni jest ekran. Np. jeżeli chcemy wyświetlić na ekranie obrazek (np. bitmapę) musimy: utworzyć powierzchnię A, załadować do powierzchni A zawartość bitmapy, pobrać powierzchnię ekranu E,
Powierzchnie w SDL Powierzchnia w SDL reprezentuje prostokątny obszar o zdefiniowanych wymiarach, zawierający zbiór pikseli. Przykładem powierzchni jest ekran. Np. jeżeli chcemy wyświetlić na ekranie obrazek (np. bitmapę) musimy: utworzyć powierzchnię A, załadować do powierzchni A zawartość bitmapy, pobrać powierzchnię ekranu E, skopiować zawartość powierzchni A w określone miejsce powierzchni E.
Powierzchnie w SDL Powierzchnia w SDL reprezentuje prostokątny obszar o zdefiniowanych wymiarach, zawierający zbiór pikseli. Przykładem powierzchni jest ekran. Np. jeżeli chcemy wyświetlić na ekranie obrazek (np. bitmapę) musimy: utworzyć powierzchnię A, załadować do powierzchni A zawartość bitmapy, pobrać powierzchnię ekranu E, skopiować zawartość powierzchni A w określone miejsce powierzchni E.
Powierzchnie w SDL Typ SDL Surface reprezentuje uchwyt powierzchni. Pola w i h powierzchni określają jej wymiary.
Powierzchnie w SDL Typ SDL Surface reprezentuje uchwyt powierzchni. Pola w i h powierzchni określają jej wymiary. Załadowanie powierzchni z pliku: SDL Surface obrazek; obrazek = SDL LoadBMP( obrazek.bmp );
Powierzchnie w SDL Typ SDL Surface reprezentuje uchwyt powierzchni. Pola w i h powierzchni określają jej wymiary. Załadowanie powierzchni z pliku: SDL Surface obrazek; obrazek = SDL LoadBMP( obrazek.bmp ); Usunięcie powierzchni: SDL FreeSufrace(obrazek)
Powierzchnie w SDL Typ SDL Surface reprezentuje uchwyt powierzchni. Pola w i h powierzchni określają jej wymiary. Załadowanie powierzchni z pliku: SDL Surface obrazek; obrazek = SDL LoadBMP( obrazek.bmp ); Usunięcie powierzchni: SDL FreeSufrace(obrazek)
Przezroczystość Istnieje kilka metod określania przezroczystości. Jednym ze sposobów jest ustawienie koloru-klucza.
Przezroczystość Istnieje kilka metod określania przezroczystości. Jednym ze sposobów jest ustawienie koloru-klucza. Polega to na wybraniu konkretnego koloru, który reprezentuje przezroczystość.
Przezroczystość Istnieje kilka metod określania przezroczystości. Jednym ze sposobów jest ustawienie koloru-klucza. Polega to na wybraniu konkretnego koloru, który reprezentuje przezroczystość.
Przezroczystość
Przezroczystość Ustawienie koloru klucza: Ostatni argument to kolor klucz (w tym wypadku czarny).
Przezroczystość Ustawienie koloru klucza: Ostatni argument to kolor klucz (w tym wypadku czarny).
Rysowanie powierzchni na ekranie Funkcja DrawSurface z szablonu: Rysuje na ekranie screen obrazek sprite w punkcie (x, y) (są to współrzędne środka obrazka).
Rysowanie powierzchni na ekranie Funkcja DrawSurface z szablonu: Rysuje na ekranie screen obrazek sprite w punkcie (x, y) (są to współrzędne środka obrazka).
Tekst Opis 2 zadania projektowego Do rysowania tekstu można wykorzystać funkcję: (x, y) to początek tekstu na ekranie, text to tekst do wyświetlenia a charset to powierzchnia z obrazkami liter (zob. plik CS8X8.BMP)
Tekst Opis 2 zadania projektowego Do rysowania tekstu można wykorzystać funkcję: (x, y) to początek tekstu na ekranie, text to tekst do wyświetlenia a charset to powierzchnia z obrazkami liter (zob. plik CS8X8.BMP)
Stany Aplikacji Maszyna stanowa to obiekt który ma określony zbiór stanów i w danej chwili znajduje się w jednym z nich. Działania maszyny lub wpływ środowiska. może zmienić jej stan.
Stany Aplikacji Maszyna stanowa to obiekt który ma określony zbiór stanów i w danej chwili znajduje się w jednym z nich. Działania maszyny lub wpływ środowiska. może zmienić jej stan.
Stany Aplikacji
Stany Aplikacji
Dziękuje za uwagę