Tworzenie aplikacji dla Windows Od prostych programow do gier komputerowych.pdf

(539 KB) Pobierz
Tworzenie aplikacji
dla Windows.
Od prostych programów
do gier komputerowych
Autor: Pawe³ Borkowski
ISBN: 978-83-246-1881-1
Format: 158x235, stron: 456
Poznaj tajniki tworzenia aplikacji dla Windows
Jak okreœliæ po³o¿enie, rozmiar i styl okna?
Jak tworzyæ w¹tki aplikacji za pomoc¹ funkcji CreateThread?
Jak definiowaæ biblioteki?
Dev-C++ to zintegrowane œrodowisko programistyczne, którego niew¹tpliwym atutem
s¹ tzw. DevPaki, czyli rozszerzenia programu, pozwalaj¹ce korzystaæ z ró¿nych
bibliotek, szablonów i narzêdzi. Œrodowisko Dev-C++ wspomaga tak¿e pracê
nad nowym projektem Windows — gotowym kodem tworz¹cym okno z obs³ug¹
podstawowych komunikatów. Wszystko to sprawia, ¿e mamy do czynienia z wygodnym
i funkcjonalnym œrodowiskiem, zarówno dla pocz¹tkuj¹cych, jak i zaawansowanych
programistów.
Z ksi¹¿ki „Tworzenie aplikacji dla Windows. Od prostych programów do gier
komputerowych” mo¿e skorzystaæ ka¿dy, kto chce nauczyæ siê programowania:
zarówno studenci kierunków informatycznych, jak i osoby, które nie maj¹ takiego
przygotowania. Podrêcznik kolejno ods³ania poszczególne elementy wiedzy
programistycznej — od najprostszych po najbardziej zaawansowane. Dowiesz siê wiêc,
jak wprowadzaæ niewielkie zmiany w kodzie, jak projektowaæ aplikacje wielow¹tkowe
i definiowaæ biblioteki, jak budowaæ du¿e, sk³adaj¹ce siê z kilku plików projekty, aby
na koniec samodzielnie stworzyæ grê komputerow¹.
Instalacja œrodowiska Dev-C++
Tworzenie narzêdzia pióro
Obs³uga map bitowych
Obs³uga komunikatów myszy i klawiatury
Obiekty steruj¹ce w oknie
Menu i plik zasobów
Projektowanie aplikacji wielow¹tkowych
Biblioteki statyczne i dynamiczne
Multimedia
Programowanie gier
Naucz siê programowania i twórz w³asne gry!
Spis treści
Wstęp .............................................................................................. 7
Część I
Dla początkujących ........................................................ 9
Rozdział 1. Instalacja
środowiska
Dev-C++ ....................................................... 11
Rozdział 2. Pierwszy program ........................................................................... 13
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
3.8.
4.1.
4.2.
4.3.
4.4.
4.5.
5.1.
5.2.
5.3.
Przygotowanie edytora ....................................................................................... 13
Kod wygenerowany przez Dev-C++ .................................................................. 15
Określanie tytułu okna ....................................................................................... 19
Określanie położenia i rozmiaru okna ................................................................ 19
Określanie stylu okna ......................................................................................... 21
Ćwiczenia
........................................................................................................... 22
Obsługa komunikatu WM_PAINT .................................................................... 23
Zestawienie funkcji graficznych. Program
z użyciem funkcji Ellipse i LineTo .................................................................... 25
Wyświetlanie tekstu w obszarze roboczym okna ............................................... 28
Pierwszy program z użyciem funkcji SetPixel — wykres funkcji sinus ............ 34
Tworzenie pióra ................................................................................................. 39
Drugi program z użyciem funkcji SetPixel — zbiór Mandelbrota ..................... 42
Trzeci program z użyciem funkcji SetPixel — prosta obsługa bitmap ............... 48
Ćwiczenia
........................................................................................................... 55
Program z obsługą komunikatu WM_MOUSEMOVE ...................................... 57
Obsługa komunikatów WM_LBUTTONDOWN
i WM_RBUTTONDOWN — zbiór Mandelbrota po raz drugi .......................... 62
Obsługa komunikatów WM_MOUSEMOVE, WM_LBUTTONDOWN
i WM_RBUTTONDOWN — zbiór Mandelbrota a zbiory Julii ........................ 66
Tajemnica przycisków okna ............................................................................... 75
Ćwiczenia
........................................................................................................... 86
Komunikaty klawiatury. Obsługa komunikatu WM_CHAR .............................. 87
Obsługa komunikatu WM_KEYDOWN. Diagram Feigenbauma ...................... 90
Ćwiczenia
......................................................................................................... 101
Rozdział 3. Rysowanie w oknie ........................................................................ 23
Rozdział 4. Obsługa komunikatów myszy .......................................................... 57
Rozdział 5. Obsługa komunikatów klawiatury .................................................... 87
4
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Rozdział 6. Obiekty sterujące w oknie ............................................................ 103
6.1.
6.2.
6.3.
6.4.
Obiekt klasy BUTTON .................................................................................... 103
Obsługa grafiki za pomocą obiektów klasy BUTTON ..................................... 109
Obiekt klasy edycji. Automaty komórkowe ..................................................... 116
Ćwiczenia
......................................................................................................... 128
Rozdział 7. Menu i plik zasobów ..................................................................... 131
7.1.
Dodanie menu do okna ..................................................................................... 131
7.2.
Obsługa bitmapy z pliku zasobów .................................................................... 138
7.3.
Odczytywanie danych z pliku. Edytor bitmap .................................................. 143
7.4.
Kopiarka wielokrotnie redukująca ................................................................... 154
7.5.
Ćwiczenia
......................................................................................................... 169
Podsumowanie części I ................................................................................................. 169
Część II
Dla
średniozaawansowanych
....................................... 171
8.1.
8.2.
8.3.
8.4.
9.1.
9.2.
9.3.
9.4.
9.5.
Tworzenie wątków za pomocą funkcji CreateThread ...................................... 173
Czy praca z wątkami przyspiesza działanie aplikacji?
Sekcja krytyczna i priorytety wątków .............................................................. 178
Wstrzymywanie pracy i usuwanie wątków ...................................................... 190
Ćwiczenia
......................................................................................................... 199
Biblioteki statyczne .......................................................................................... 201
Biblioteki dynamiczne — podejście strukturalne ............................................. 207
Biblioteki dynamiczne — podejście obiektowe ............................................... 220
Własny temat okna ........................................................................................... 225
Ćwiczenia
......................................................................................................... 254
Rozdział 8. Projektowanie aplikacji wielowątkowych ....................................... 173
Rozdział 9. Definiowanie bibliotek .................................................................. 201
Rozdział 10. Multimedia .................................................................................. 255
10.1. Odtwarzanie plików wav — funkcja sndPlaySound ........................................ 255
10.2. Odtwarzanie plików mp3 — biblioteka FMOD ............................................... 258
10.3.
Ćwiczenia
......................................................................................................... 269
Podsumowanie części II ............................................................................................... 270
Część III Dla zaawansowanych .................................................. 273
Rozdział 11. Programowanie gier z użyciem biblioteki OpenGL .......................... 275
11.1.
11.2.
11.3.
Podstawy obsługi biblioteki OpenGL .............................................................. 275
Prymitywy OpenGL ......................................................................................... 284
Bufor głębokości, perspektywa
— wzorzec kodu do programowania gier (pierwsze starcie) ............................ 298
11.4. Animacja .......................................................................................................... 309
11.5. Poruszanie się po scenie, funkcja gluLookAt
i wzorzec kodu do programowania gier (starcie drugie, decydujące) ............... 320
11.6. Tekstury i mipmapy ......................................................................................... 334
11.7. Listy wyświetlania i optymalizacja kodu ......................................................... 349
11.8. Detekcja kolizji ................................................................................................ 361
11.9.
Światło,
mgła, przezroczystość i inne efekty specjalne ....................................... 368
Uruchamianie gry w trybie pełnoekranowym .................................................. 368
Mgła ................................................................................................................. 371
Przezroczystość ................................................................................................ 374
Światło
............................................................................................................. 384
Spis treści
11.10.
11.11.
11.12.
11.13.
11.14.
5
Jak ustawić stałą prędkość działania programu? .............................................. 390
Gotowe obiekty OpenGL ................................................................................. 398
Fonty ................................................................................................................ 406
Dźwięk na scenie ............................................................................................. 416
Budujemy grę! ................................................................................................. 419
Wprowadzenie i charakter gry ......................................................................... 419
Dane gracza ...................................................................................................... 420
Strzał z broni .................................................................................................... 423
Pozostali bohaterowie gry ................................................................................ 425
Odnawianie zasobów gracza ............................................................................ 428
Zakończenie programu (gry) ............................................................................ 430
Podsumowanie części III .............................................................................................. 433
Dodatki ..................................................................................... 435
Dodatek A ................................................................................... 437
Dodatek B ................................................................................... 439
Skorowidz .................................................................................... 441
Rozdziaä 8.
i
Projektowanie aplikacji wielowñtkowych
173
Rozdziaä 8.
Projektowanie aplikacji
wielowñtkowych
8.1. Tworzenie wñtków za pomocñ
funkcji CreateThread
Jeste my przyzwyczajeni do tego, e w systemie Windows mo emy pracowaü na wielu
oknach jednocze nie. Jak du e jest to udogodnienie, nie trzeba nikogo przekonywaü.
T cech systemu nazywamy wielozadaniowo ci . Jej najpo yteczniejszym zastosowa-
niem jest mo liwo ü ukrycia przed pracodawc pod stosem otwartych okien jednego
okienka z uruchomion ulubion gr . System Windows pozwala tak e na co wi cej —
na wielow tkowo ü, czyli wykonywanie wielu zada równocze nie w ramach dziaáania
jednego programu. Oczywi cie, poj cia pracy równoczesnej nie nale y traktowaü zbyt
dosáownie. System dzieli czas pracy procesora i przyznaje po kolei pewn jego cz ü
w celu obsáugi kolejnego w tku. Poniewa wspomniany proces wykonywany jest bardzo
szybko, powstaje iluzja równolegáego dziaáania w tków.
W tek tworzymy za pomoc funkcji
CreateThread
o nast puj cej skáadni:
HANDLE CreateThread(LPSECURITY_ATTRIBUTES atrybuty_watku,
DWORD rozmiar_stosu,
LPTHREAD_START_ROUTINE adres_funkcji_watku,
LPVOID parametr,
DWORD flaga_watku,
LPDWORD identyfikator
);
Pierwszy argument
atrybuty_watku
miaá zastosowanie w systemie Windows NT. Od tego
czasu nie wykorzystuje si go i mo emy w jego miejsce wpisaü
NULL
. Drugi argument
okre la rozmiar stosu w bajtach. Je eli nie mamy pomysáu dotycz cego jego wielko ci,
wpiszmy zero, co oznacza zadeklarowanie stosu standardowego rozmiaru. W parametrze
Zgłoś jeśli naruszono regulamin