Содержание
- 2. Очерчиваем клиентскую область case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // RECT -
- 3. struct В языке Си, структура (struct) — композитный тип данных, инкапсулирующий без сокрытия набор значений различных
- 4. Пример struct struct tagRECT // определение структуры tagRECT { LONG left; // поле left LONG top;
- 5. struct и typedef typedef struct name { type atrib1; type atrib2; // остальные элементы структуры... }
- 6. struct и typedef – пример (RECT) // windef.h? typedef struct tagRECT { LONG left; LONG top;
- 7. Рисуем много линий из центра case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); RECT
- 8. Polygon POINT pt[5]; // Массив содержит структуры pt[0].x = 100; pt[0].y = 50; pt[1].x = 150;
- 9. struct и typedef – пример 2 (POINT) // windef.h? typedef struct tagPOINT { LONG x; LONG
- 10. Polygon POINT pt[5]; // Массив содержит структуры pt[0].x = 100; pt[0].y = 50; pt[1].x = 150;
- 11. Polygon POINT pt[5]; pt[0].x = 100; pt[0].y = 50; pt[1].x = 150; pt[1].y = 100; pt[2].x
- 12. Polygon POINT pt[5]; pt[0].x = 100; pt[0].y = 50; pt[1].x = 150; pt[1].y = 100; pt[2].x
- 13. Polygon HBRUSH hBrush = CreateHatchBrush(HS_CROSS, RGB(128, 0, 128)); SelectObject(hdc, hBrush); Ellipse(hdc, 0, 0 , 160, 120);
- 14. Polygon – прозрачная кисть HBRUSH hBrush = CreateHatchBrush(HS_CROSS, RGB(128, 0, 128)); SelectObject(hdc, hBrush); Ellipse(hdc, 0, 0
- 15. Polyline POINT pt[5]; pt[0].x = 100; pt[0].y = 50; pt[1].x = 150; pt[1].y = 100; pt[2].x
- 16. Источники информации http://www.frolov-lib.ru/books/bsp/v14/ch2_3.htm - Рисование геометрических фигур
- 17. Добавляем в игру «Меткого зенитчика»
- 18. Константы и подключаемые файлы // Lection6_1.cpp: определяет точку входа для приложения. // #include "stdafx.h" #include "Lection6_1.h"
- 19. Функция WndProc (1) LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message)
- 20. Функция WndProc (2) case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // TODO: Добавьте
- 21. Функция WndProc (3) case WM_KEYDOWN: switch (wParam) { case VK_RETURN: Bombing(); InvalidateRect(hWnd, NULL, TRUE); break; //
- 22. Модель (глобальные данные) (1) // Глобальные переменные: // самолет int plane_x = 100; int plane_y =
- 23. Модель (глобальные данные) (2) // new!!! // структура для пули struct Bullet { int x; int
- 24. Модель (глобальные данные) (3) // зенитное орудие double alpha = M_PI * 3.0 / 2.0; //
- 25. Зенитное орудие - отрисовка void DrawCannon(HDC hdc) { HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 255));
- 26. Вспоминаем тригонометрию Численные значения тригонометрических функций угла в тригонометрической окружности с радиусом, равным единице
- 27. Зенитное орудие - управление void MoveCannonRight() { if (alpha alpha += M_PI / 20; } void
- 28. Зенитное орудие - выстрел void ShotCannon() { if (bullet.state != IN_STOCK) return; int r2 = 70;
- 29. Самолет - отрисовка void DrawPlane(HDC hdc) { // new!!! HPEN hPen = NULL; if (plane_state !=
- 30. Самолет – проверка попадания в int InsidePlane(int plane_x, int plane_y, int x, int y) { if
- 31. Самолет – уничтожение void DestroyPlane() { plane_state = DESTROYED; }
- 32. Пуля – отрисовка, перемещение и уничтожение void DrawBullets(HDC hdc) { if (bullet.state == DESTROYED) return; HPEN
- 33. Пуля – проверка контакта пули и самолета void CheckContactBullets() { if (bullet.state == IN_FLIGHT && InsidePlane(plane_x,
- 34. Демонстрация сборки проекта из кода презентации
- 35. А если окно не того размерчика?
- 36. А если окно не того размерчика? BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; //
- 37. А если окно не того размерчика? BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; //
- 38. Задача 1 Добавить «Меткого зенитчика» в предыдущий код вашей игры ВАЖНО – сохранить предыдущий код –
- 39. Задача 2 Добавить на небо 5-7 звезд Каждая звезда создается при помощи Polygon по образцу функции
- 40. Задача 2 – пример кода через Polyline
- 41. Задача 3 Сделать 3 типа звезд – с разной заливкой. Использовать Polygon. Назвать функции Star1(), Star2()
- 43. Скачать презентацию