GDI
Zadanie 1 - Paint
Zaimplementuj aplikację, która pozwala rysować przy pomocy myszki po oknie głównym. Rysowanie odbywa się po wciśnięciu lewego klawisza myszy domyślnym piórem. Dodaj do programu możliwość zmiany koloru posaka oraz zmiany jego grubości.
Przydatne funkcje
- funkcja GetDC uzyskuje uchwyt do DC (device context)
- funkcja ReleaseDC() zamyka DC
- funkcja MoveToEx przesuwa pióro do wskazanej pozycji
- funkcja LineTo rysuje linię do wskazanej pozycji
- komunikaty
WM_LBUTTONDOWN
,WM_LBUTTONUP
,WM_MOUSEMOVE
wołane w czasie zdarzeń związanych z myszą (wciśnięcie lewego klawisz, zwolnienie lewego klawisza i ruch myszą) - finckja ChooseColor() z biblioteki
Commdlg.h
tworzy okno dialogowe umożliwiające wybrać kolor.
Zadanie 2 - Najeźdzcy z kosmosu
Zaimplementuj grę Space Invaders.
Gracz porusza za pomocą klawiszy pojazdem kosmicznym w lewo i w prawo oraz oddaje strzał po wciśnięciu spacji. Wrogie statki kosmiczne poruszają się automatycznie i w losowych odstępachch czasu oddają strzał do pojazdu gracza. Każdy zestrelony statek wroga zwiększa wartość punktów wyświetlanych na liczniku u dołu ekranu. Sprity (statek gracza i wrogie statki) zrealizowane są za pomocą bitmap. Przygotuj własne animacje (bitmapy) lub skorzystaj z poniższych grafik:
Przydatne funkcje
Device Context
- GetDC - uzyskanie uchwytu do DC (device context)
- ReleaseDC
- BeginPaint - przygotowanie okna do rysowania dla komunikatu
WM_PAINT
- EndPaint
- GetObject - uzuskuje informacje na temat obiektu DC
- SelectObject - ustawia wzkazany obiekt w kontekście DC
- DeleteObject - niszczy obiekt
- Pen
- CreatePen - długopis/pisak
- Brush
- CreateSolidBrush - pędzel
- CreateHatchBrush - pędzel z wzorem
- Font
- CreateFont - font
- TextOut - wypisuje tekst w zadanej pozycji
- DrawText - wypisuje tekst we wskazanej pozycji
- SetTextColor - ustawia kolor tekstu
- Bitmap
- LoadBitmap - wczytanie bitmapy
- CreateCompatibleCD - utworzenie zgodnego kontekstu DC
- BitBlt - kopiowanie zawartości kontekstu DC
Kształty i rysowanie
- SetPixel - rysywoanie pojedynczego piksela
- MoveToEx - przesunięcie pisaka
- LineTo - narysowanie linii
- SetBkColor - kolor tła
Timer
- SetTimer - uruchomienie stopera
- komunikat
WM_TIMER
wysyłany po określonym czasie od uruchomienia czasomierza - KillTimer - zatrzymuje (zabija) stoper
Sterowanie
- komunikaty związane z obsługą klawiszy WM_KEYDOWN, WM_KEYUP
Space invaders c.d.
Zmodyfikuj grę space invaders w taki sposób aby rysowanie sceny oraz znimacje realiowane były w osobnym wątku.
Przydatne funkcje:
- CreateThread tworzenie wątku
- TerminateThread przerywanie działania wątku
- CloseHandle zamyka uchwyt do obiektu (np. do wątku)