🗊Презентация Цикл while. Enum. Обработка нажатия клавиши. Таймер

Нажмите для полного просмотра!
Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №1Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №2Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №3Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №4Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №5Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №6Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №7Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №8Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №9Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №10Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №11Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №12Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №13Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №14Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №15Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №16Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №17Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №18Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №19Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №20Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №21Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №22Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №23Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №24Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №25Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №26Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №27Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №28Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №29Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №30Цикл while. Enum. Обработка нажатия клавиши. Таймер, слайд №31

Содержание

Вы можете ознакомиться и скачать презентацию на тему Цикл while. Enum. Обработка нажатия клавиши. Таймер. Доклад-сообщение содержит 31 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Основы программирования
ФИСТ 1 курс
Власенко 
Олег 
Федосович
Лекция 5
Цикл while. Enum.
Обработка нажатия клавиши. Таймер. 
Делаем простую игру - 2.
Описание слайда:
Основы программирования ФИСТ 1 курс Власенко Олег Федосович Лекция 5 Цикл while. Enum. Обработка нажатия клавиши. Таймер. Делаем простую игру - 2.

Слайд 2





«Полет самолета» - координаты и отрисовка
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ – координаты самолета
int plane_x = 0;
int plane_y = 100;
// Функция отрисовки самолета 
void DrawPlane(HDC hdc) {
	MoveToEx(hdc, plane_x + 50, plane_y, NULL);
	LineTo(hdc, plane_x - 50, plane_y);
	LineTo(hdc, plane_x - 70, plane_y - 20);
	MoveToEx(hdc, plane_x - 50, plane_y + 30, NULL);
	LineTo(hdc, plane_x, plane_y);
	LineTo(hdc, plane_x - 50, plane_y - 30);
}
Описание слайда:
«Полет самолета» - координаты и отрисовка // ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ – координаты самолета int plane_x = 0; int plane_y = 100; // Функция отрисовки самолета void DrawPlane(HDC hdc) { MoveToEx(hdc, plane_x + 50, plane_y, NULL); LineTo(hdc, plane_x - 50, plane_y); LineTo(hdc, plane_x - 70, plane_y - 20); MoveToEx(hdc, plane_x - 50, plane_y + 30, NULL); LineTo(hdc, plane_x, plane_y); LineTo(hdc, plane_x - 50, plane_y - 30); }

Слайд 3





«Полет самолета» - вызов отрисовки
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
	…
	case WM_PAINT:
	{
		PAINTSTRUCT ps;
		HDC hdc = BeginPaint(hWnd, &ps);
		// TODO: Добавьте сюда любой код прорисовки
		DrawPlane(hdc);
		EndPaint(hWnd, &ps);
	}
	break;
Описание слайда:
«Полет самолета» - вызов отрисовки LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { … case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // TODO: Добавьте сюда любой код прорисовки DrawPlane(hdc); EndPaint(hWnd, &ps); } break;

Слайд 4





Ручное изменение высоты самолета
case WM_KEYDOWN:
	switch (wParam)
	{
	case VK_UP:
		plane_y -= 20;
		InvalidateRect(hWnd, NULL, TRUE);
		break;
	case VK_DOWN:
		plane_y += 20;
		InvalidateRect(hWnd, NULL, TRUE);
		break;
	}
	break;
Описание слайда:
Ручное изменение высоты самолета case WM_KEYDOWN: switch (wParam) { case VK_UP: plane_y -= 20; InvalidateRect(hWnd, NULL, TRUE); break; case VK_DOWN: plane_y += 20; InvalidateRect(hWnd, NULL, TRUE); break; } break;

Слайд 5





Timer – автоматический полет самолета (!!!)
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
	…
	case WM_CREATE:
		SetTimer(hWnd, 1, 100, 0);
		break;
	case WM_TIMER:
		plane_x += 20;
		InvalidateRect(hWnd, NULL, TRUE);
		break;
Описание слайда:
Timer – автоматический полет самолета (!!!) LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { … case WM_CREATE: SetTimer(hWnd, 1, 100, 0); break; case WM_TIMER: plane_x += 20; InvalidateRect(hWnd, NULL, TRUE); break;

Слайд 6





Enum: Перечисления (Перечисляемый тип)
Перечисление состоит из набора именованных целочисленных констант.  

Синтаксис
enum identifier { enumerator-list }
https://msdn.microsoft.com/ru-ru/library/whbyts4t.aspx
Пример
enum cardsuit { CLUBS, DIAMONDS, HEARTS, SPADES };
https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D1%8F%D0%B5%D0%BC%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF
Описание слайда:
Enum: Перечисления (Перечисляемый тип) Перечисление состоит из набора именованных целочисленных констант.   Синтаксис enum identifier { enumerator-list } https://msdn.microsoft.com/ru-ru/library/whbyts4t.aspx Пример enum cardsuit { CLUBS, DIAMONDS, HEARTS, SPADES }; https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D1%8F%D0%B5%D0%BC%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF

Слайд 7





Enum: Перечисления (Перечисляемый тип)
Состояния самолета
enum State {
	IN_STOCK,
	IN_FLIGHT,
	DESTROYED
}; 
State plane_state = IN_FLIGHT;
Описание слайда:
Enum: Перечисления (Перечисляемый тип) Состояния самолета enum State { IN_STOCK, IN_FLIGHT, DESTROYED };  State plane_state = IN_FLIGHT;

Слайд 8





Цикл с предусловием while
while (Условие) {
	Действие;
}
Описание слайда:
Цикл с предусловием while while (Условие) { Действие; }

Слайд 9





Задача: ввести число. Найти сумму его цифр.
Ввод:
34
Вывод: 
7
Ввод:
1023
Вывод:
6
Ввод:
9876
Вывод:
30
Описание слайда:
Задача: ввести число. Найти сумму его цифр. Ввод: 34 Вывод: 7 Ввод: 1023 Вывод: 6 Ввод: 9876 Вывод: 30

Слайд 10





Задача: ввести число. Найти сумму его цифр.
Описание слайда:
Задача: ввести число. Найти сумму его цифр.

Слайд 11





Задача: ввести число. Найти сумму его цифр.
void main() { 
 	int number;
	scanf("%d", &number); 
	int s = 0;
	// Вычисляем сумму цифр
	while (number > 0) {
		// остаток от деления на 10 это последняя 
		// цифра числа. Например: 129 % 10 = 9
		int digit = number % 10; 
		// к сумме добавляем только что полученную цифру
		s = s + digit; 
		// отбрасываем последнюю цифру числа
		// Например: 129 / 10 = 12
		number = number / 10;
	}
 	printf("s=%d\n", s); 
}
Описание слайда:
Задача: ввести число. Найти сумму его цифр. void main() {    int number; scanf("%d", &number);  int s = 0; // Вычисляем сумму цифр while (number > 0) { // остаток от деления на 10 это последняя // цифра числа. Например: 129 % 10 = 9 int digit = number % 10;  // к сумме добавляем только что полученную цифру s = s + digit;  // отбрасываем последнюю цифру числа // Например: 129 / 10 = 12 number = number / 10; }   printf("s=%d\n", s);  }

Слайд 12





Задача: ввести число. Найти сумму его цифр.
ТРАССИРОВКА!
Ввод:
10235
Вывод:
11
Описание слайда:
Задача: ввести число. Найти сумму его цифр. ТРАССИРОВКА! Ввод: 10235 Вывод: 11

Слайд 13





Делаем игру «Меткий зенитчик»
Описание слайда:
Делаем игру «Меткий зенитчик»

Слайд 14





Константы и подключаемые файлы
Описание слайда:
Константы и подключаемые файлы

Слайд 15





Функция WndProc (1)
Описание слайда:
Функция WndProc (1)

Слайд 16





Функция WndProc (2)
Описание слайда:
Функция WndProc (2)

Слайд 17





Функция WndProc (3)
Описание слайда:
Функция WndProc (3)

Слайд 18





Модель (глобальные данные) (1)
// Глобальные переменные:
…
// самолет-мишень
int plane_x = 0;
int plane_y = 100; 
int plane_vx = 10;
int plane_vy = 0;
 
//int plane_state = 1; // 1 - in flight, 2 - destroyed
enum State {
	IN_STOCK,
	IN_FLIGHT,
	DESTROYED
}; 
State plane_state = IN_FLIGHT;
 
Описание слайда:
Модель (глобальные данные) (1) // Глобальные переменные: … // самолет-мишень int plane_x = 0; int plane_y = 100;  int plane_vx = 10; int plane_vy = 0;   //int plane_state = 1; // 1 - in flight, 2 - destroyed enum State { IN_STOCK, IN_FLIGHT, DESTROYED };  State plane_state = IN_FLIGHT;  

Слайд 19





Модель (глобальные данные) (2)
 // пуля
int bullet_x = 430;
int bullet_y = 445; 
int bullet_vx = 0;
int bullet_vy = 0;
 
//int state = 0; // 0 - in stock, 1 - in flight, 2 - destroyed
State bullet_state = IN_STOCK;
 
 
 
Описание слайда:
Модель (глобальные данные) (2)  // пуля int bullet_x = 430; int bullet_y = 445;  int bullet_vx = 0; int bullet_vy = 0;   //int state = 0; // 0 - in stock, 1 - in flight, 2 - destroyed State bullet_state = IN_STOCK;      

Слайд 20





Модель (глобальные данные) (3)
// зенитное орудие
double alpha = M_PI * 3.0 / 2.0; // направление стрельбы - СТРОГО ВВЕРХ
 
 
 
Описание слайда:
Модель (глобальные данные) (3) // зенитное орудие double alpha = M_PI * 3.0 / 2.0; // направление стрельбы - СТРОГО ВВЕРХ      

Слайд 21





Зенитное орудие - отрисовка
 void DrawCannon(HDC hdc) {
	HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 255));
	SelectObject(hdc, hPen); 
	MoveToEx(hdc, 400, 450, NULL);
	LineTo(hdc, 600, 450);
	Arc(hdc, 450, 400,550, 500,      550,450, 450, 450);	
	int r1 = 50;
	int r2 = 70; 
	int x1 = 500 + (int)(cos(alpha) * r1);
	int x2 = 500 + (int)(cos(alpha) * r2); 
	int y1 = 450 + (int)(sin(alpha) * r1);
	int y2 = 450 + (int)(sin(alpha) * r2); 
	MoveToEx(hdc, x1, y1, NULL);
	LineTo(hdc, x2, y2);
}
 
Описание слайда:
Зенитное орудие - отрисовка  void DrawCannon(HDC hdc) { HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 255)); SelectObject(hdc, hPen);  MoveToEx(hdc, 400, 450, NULL); LineTo(hdc, 600, 450); Arc(hdc, 450, 400,550, 500, 550,450, 450, 450); int r1 = 50; int r2 = 70;  int x1 = 500 + (int)(cos(alpha) * r1); int x2 = 500 + (int)(cos(alpha) * r2);  int y1 = 450 + (int)(sin(alpha) * r1); int y2 = 450 + (int)(sin(alpha) * r2);  MoveToEx(hdc, x1, y1, NULL); LineTo(hdc, x2, y2); }  

Слайд 22





Зенитное орудие - управление
 void MoveCannonRight() { 
	if (alpha < M_PI * 1.95)
		alpha += M_PI / 20;
}
 
void MoveCannonLeft() {
	if (alpha > M_PI * 1.05)
		alpha -= M_PI / 20;
}
Описание слайда:
Зенитное орудие - управление  void MoveCannonRight() {  if (alpha < M_PI * 1.95) alpha += M_PI / 20; }   void MoveCannonLeft() { if (alpha > M_PI * 1.05) alpha -= M_PI / 20; }

Слайд 23





Зенитное орудие - выстрел
void ShotCannon() { 
	if (bullet_state != IN_STOCK)
		return; 
	int r2 = 70;
	int x2 = 500 + (int)(cos(alpha) * r2);
	int y2 = 450 + (int)(sin(alpha) * r2); 

	int vr = 10;
	int vx = (int)(cos(alpha) * vr);
	int vy = (int)(sin(alpha) * vr); 

	bullet_x = x2;
	bullet_y = y2; 
	bullet_vx = vx;
	bullet_vy = vy; 
	bullet_state = IN_FLIGHT;
}
Описание слайда:
Зенитное орудие - выстрел void ShotCannon() {  if (bullet_state != IN_STOCK) return;  int r2 = 70; int x2 = 500 + (int)(cos(alpha) * r2); int y2 = 450 + (int)(sin(alpha) * r2);  int vr = 10; int vx = (int)(cos(alpha) * vr); int vy = (int)(sin(alpha) * vr);  bullet_x = x2; bullet_y = y2;  bullet_vx = vx; bullet_vy = vy;  bullet_state = IN_FLIGHT; }

Слайд 24





Самолет - отрисовка
 void DrawPlane(HDC hdc) {
	HPEN hPen = NULL;
	if (plane_state == IN_FLIGHT)
		hPen = CreatePen(PS_SOLID, 10, RGB(255, 0, 0));
	if (plane_state == DESTROYED)
		hPen = CreatePen(PS_SOLID, 10, RGB(255, 255, 0));
 	SelectObject(hdc, hPen);
 
	MoveToEx(hdc, plane_x + 50, plane_y, NULL);
	LineTo(hdc, plane_x - 50, plane_y);
	LineTo(hdc, plane_x - 70, plane_y - 20);
 
	MoveToEx(hdc, plane_x - 50, plane_y + 30, NULL);
	LineTo(hdc, plane_x, plane_y);
	LineTo(hdc, plane_x - 50, plane_y - 30);
}
 
Описание слайда:
Самолет - отрисовка  void DrawPlane(HDC hdc) { HPEN hPen = NULL; if (plane_state == IN_FLIGHT) hPen = CreatePen(PS_SOLID, 10, RGB(255, 0, 0)); if (plane_state == DESTROYED) hPen = CreatePen(PS_SOLID, 10, RGB(255, 255, 0));   SelectObject(hdc, hPen);   MoveToEx(hdc, plane_x + 50, plane_y, NULL); LineTo(hdc, plane_x - 50, plane_y); LineTo(hdc, plane_x - 70, plane_y - 20);   MoveToEx(hdc, plane_x - 50, plane_y + 30, NULL); LineTo(hdc, plane_x, plane_y); LineTo(hdc, plane_x - 50, plane_y - 30); }  

Слайд 25





Самолет – проверка попадания в
int InsidePlane(int plane_x, int plane_y, int x, int y) {
	if (x < plane_x - 50)
		return 0;
	if (x > plane_x + 50)
		return 0;
	if (y < plane_y - 20)
		return 0;
	if (y > plane_y + 20)
		return 0; 
	return 1;
}
 
 
Описание слайда:
Самолет – проверка попадания в int InsidePlane(int plane_x, int plane_y, int x, int y) { if (x < plane_x - 50) return 0; if (x > plane_x + 50) return 0; if (y < plane_y - 20) return 0; if (y > plane_y + 20) return 0;  return 1; }    

Слайд 26





Самолет – перемещение и уничтожение
void MovePlane() {
	plane_x += plane_vx;
	plane_y += plane_vy;
}
 
 
 
void DestroyPlane() {
	plane_state = DESTROYED;
}
 
 
Описание слайда:
Самолет – перемещение и уничтожение void MovePlane() { plane_x += plane_vx; plane_y += plane_vy; }       void DestroyPlane() { plane_state = DESTROYED; }    

Слайд 27





Пуля – отрисовка, перемещение и уничтожение
 void DrawBullet(HDC hdc) { 
	if (bullet_state == DESTROYED)
		return;
 
	HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 255, 0));
	SelectObject(hdc, hPen);
	Ellipse(hdc, bullet_x - 3, bullet_y - 3, bullet_x + 3, bullet_y + 3);
}
 void MoveBullet() {
	bullet_x += bullet_vx;
	bullet_y += bullet_vy;
}
 
void DestroyABullet() {
	bullet_state = DESTROYED;
}
Описание слайда:
Пуля – отрисовка, перемещение и уничтожение  void DrawBullet(HDC hdc) {  if (bullet_state == DESTROYED) return;   HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 255, 0)); SelectObject(hdc, hPen); Ellipse(hdc, bullet_x - 3, bullet_y - 3, bullet_x + 3, bullet_y + 3); }  void MoveBullet() { bullet_x += bullet_vx; bullet_y += bullet_vy; }   void DestroyABullet() { bullet_state = DESTROYED; }

Слайд 28





Пуля – проверка контакта пули и самолета
void CheckContact() { 
 
	if (bullet_state == IN_FLIGHT
		&& InsidePlane(plane_x, plane_y, bullet_x, bullet_y)) {

		DestroyPlane();
		DestroyABullet();		

	} 
}
Описание слайда:
Пуля – проверка контакта пули и самолета void CheckContact() {    if (bullet_state == IN_FLIGHT && InsidePlane(plane_x, plane_y, bullet_x, bullet_y)) { DestroyPlane(); DestroyABullet(); }  }

Слайд 29





Версия 2.0: Стреляем очередями
Описание слайда:
Версия 2.0: Стреляем очередями

Слайд 30





Домашнее задание
Собрать и заставить работать код 
А) Отрисовки самолета
Б) Ручного управления перемещением
В) перемещения самолета по таймеру
*** Собрать игрушку из того, что есть в слайдах 
*** Поиграться с получившимся кодом – изменить параметры, добавить функционал
Описание слайда:
Домашнее задание Собрать и заставить работать код А) Отрисовки самолета Б) Ручного управления перемещением В) перемещения самолета по таймеру *** Собрать игрушку из того, что есть в слайдах *** Поиграться с получившимся кодом – изменить параметры, добавить функционал

Слайд 31





Источники информации
Virtual-Key Codes - https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd375731%28v=vs.85%29.aspx
Работа с таймером - http://frolov-lib.ru/books/bsp.old/v11/ch7.htm  
Google.com
Описание слайда:
Источники информации Virtual-Key Codes - https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd375731%28v=vs.85%29.aspx Работа с таймером - http://frolov-lib.ru/books/bsp.old/v11/ch7.htm Google.com



Похожие презентации
Mypresentation.ru
Загрузить презентацию