Разделы презентаций


Основы программирования Лабораторная работа №6

Содержание

Простейшая игра – разбомби сарай!

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

Слайд 1Основы программирования Лабораторная работа №6
Игра с массивом

Власенко О.Ф.

Основы программирования Лабораторная работа №6Игра с массивомВласенко О.Ф.

Слайд 2Простейшая игра – разбомби сарай!

Простейшая игра – разбомби сарай!

Слайд 3Глобальные переменные
// Глобальные переменные:
HINSTANCE hInst;

// текущий экземпляр
WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка
WCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна

// самолет
int plane_x = 100;
int plane_y = 100;
int plane_vx = 10;
int plane_vy = 0;
Глобальные переменные// Глобальные переменные:HINSTANCE hInst;

Слайд 4Глобальные переменные
// бомба
int bomb_state = 0; // 0 - в

самолете готова к сбросу, 1 - летит к цели,
//

2-9 - взрывается прямо сейчас, 10 - взорвалась
int bomb_x;
int bomb_y;
int bomb_vx;
int bomb_vy;

// цель
int goal_exist = 1; // 1 - цель существует, 0 - не существует
int goal_x = 600;
int goal_y = 400;
int goal_width = 200;
int goal_height = 70;
Глобальные переменные// бомбаint bomb_state = 0; // 0 - в самолете готова к сбросу, 1 - летит

Слайд 5Рисование самолета
void DrawPlane(HDC hdc) {
HPEN hPen = CreatePen(PS_SOLID, 10, RGB(0,

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);

DeleteObject(hPen);
}
Рисование самолетаvoid DrawPlane(HDC hdc) {	HPEN hPen = CreatePen(PS_SOLID, 10, RGB(0, 255, 0));	SelectObject(hdc, hPen);	MoveToEx(hdc, plane_x + 50, plane_y,

Слайд 6Перемещение самолета
void MovePlane() {

if (plane_x >= 1000) {
plane_x = 10;
}

plane_x

+= plane_vx;
plane_y += plane_vy;
}

Перемещение самолетаvoid MovePlane() {	if (plane_x >= 1000) {		plane_x = 10;	}	plane_x += plane_vx;	plane_y += plane_vy;}

Слайд 7Сброс бомбы
void Bombing() {

if (bomb_state == 0) {
bomb_x = plane_x;
bomb_y

= plane_y;
bomb_vx = plane_vx;
bomb_vy = 10;
bomb_state = 1; // бомба

летит к цели
}
}
Сброс бомбыvoid Bombing() {	if (bomb_state == 0) {		bomb_x = plane_x;		bomb_y = plane_y;		bomb_vx = plane_vx;		bomb_vy = 10;		bomb_state =

Слайд 8Перемещение (падение) бомбы
void MoveBomb() {
if (bomb_state == 1) {
bomb_x +=

bomb_vx;
bomb_y += bomb_vy;
}
}

Перемещение (падение) бомбыvoid MoveBomb() {	if (bomb_state == 1) {		bomb_x += bomb_vx;		bomb_y += bomb_vy;	}}

Слайд 9Отрисовка бомбы (1)
void DrawBomb(HDC hdc) {

//int bomb_state;
// 0 -

в самолете готова к сбросу, 1 - летит к цели,


// 2-9 - взрывается прямо сейчас, 10 - взорвалась

if (bomb_state == 1) {
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
SelectObject(hdc, hPen);
SelectObject(hdc, GetStockObject(NULL_BRUSH));
Ellipse(hdc, bomb_x - 3, bomb_y - 3, bomb_x + 3, bomb_y + 3);
DeleteObject(hPen);
}
Отрисовка бомбы (1)void DrawBomb(HDC hdc) {	//int bomb_state; 	// 0 - в самолете готова к сбросу, 1 -

Слайд 10Отрисовка бомбы (2)
else if (bomb_state == 2) {
HPEN hPen =

CreatePen(PS_SOLID, 3, RGB(255, 255, 0));
SelectObject(hdc, hPen);
HBRUSH hBrush2 = CreateHatchBrush(HS_DIAGCROSS, RGB(255,

255, 128));
SelectObject(hdc, hBrush2);

SelectObject(hdc, GetStockObject(NULL_BRUSH));
Ellipse(hdc, bomb_x - 10, bomb_y - 10, bomb_x + 10, bomb_y + 10);
DeleteObject(hPen);
DeleteObject(hBrush2);
bomb_state = 3;
}
Отрисовка бомбы (2)else if (bomb_state == 2) {	HPEN hPen = CreatePen(PS_SOLID, 3, RGB(255, 255, 0));	SelectObject(hdc, hPen);	HBRUSH hBrush2

Слайд 11Отрисовка бомбы (3)
else if (bomb_state == 3) {
HPEN hPen =

CreatePen(PS_SOLID, 3, RGB(255, 255, 0));
SelectObject(hdc, hPen);
HBRUSH hBrush2 = CreateHatchBrush(HS_DIAGCROSS, RGB(255,

255, 128));
SelectObject(hdc, hBrush2);

SelectObject(hdc, GetStockObject(NULL_BRUSH));
Ellipse(hdc, bomb_x - 20, bomb_y - 20, bomb_x + 20, bomb_y + 20);
DeleteObject(hPen);
DeleteObject(hBrush2);
bomb_state = 4;
}
Отрисовка бомбы (3)else if (bomb_state == 3) {	HPEN hPen = CreatePen(PS_SOLID, 3, RGB(255, 255, 0));	SelectObject(hdc, hPen);	HBRUSH hBrush2

Слайд 12Отрисовка бомбы (4)
else if (bomb_state == 4) {
HPEN

hPen = CreatePen(PS_SOLID, 3, RGB(255, 255, 0));
SelectObject(hdc, hPen);
HBRUSH hBrush2 =

CreateHatchBrush(HS_DIAGCROSS, RGB(255, 255, 128));
SelectObject(hdc, hBrush2);

SelectObject(hdc, GetStockObject(NULL_BRUSH));
Ellipse(hdc, bomb_x - 30, bomb_y - 30, bomb_x + 30, bomb_y + 30);
DeleteObject(hPen);
DeleteObject(hBrush2);
bomb_state = 10;
}

}
Отрисовка бомбы (4) else if (bomb_state == 4) { 	HPEN hPen = CreatePen(PS_SOLID, 3, RGB(255, 255, 0));	SelectObject(hdc,

Слайд 13Проверка контакта бомбы с чем-нибудь
void CheckContact() {
if (bomb_state ==

1) {
// если попали в цель
if (goal_exist
&&

(bomb_x >= goal_x) && (bomb_x <= goal_x + goal_width) &&
(bomb_y >= goal_y) && (bomb_y <= goal_y + goal_height)
)
{
bomb_state = 2; // бомба начала взрываться
goal_exist = 0; // цель больше не существует!
}
// если бомба попала в землю
else if (bomb_y > 500) {
bomb_state = 2; // бомба начала взрываться
}
}
}
Проверка контакта бомбы с чем-нибудьvoid CheckContact() { if (bomb_state == 1) {	// если попали в цель	if (goal_exist

Слайд 14Отрисовка цели
void DrawGoal(HDC hdc) {

if (goal_exist) {

HPEN hPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 128));
SelectObject(hdc, hPen);
Rectangle(hdc, goal_x,

goal_y, goal_x + goal_width, goal_y + goal_height);
DeleteObject(hPen);
}
}
Отрисовка целиvoid DrawGoal(HDC hdc) {  if (goal_exist) {  	HPEN hPen = CreatePen(PS_SOLID, 2, RGB(0, 0,

Слайд 15WndProc (1)
//
// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
LRESULT CALLBACK WndProc(HWND hWnd,

UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{

case WM_KEYDOWN:
switch

(wParam)
{
case VK_RETURN:
Bombing();
InvalidateRect(hWnd, NULL, TRUE);
break;
}
break;

WndProc (1)//// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ switch

Слайд 16WndProc (2)
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: Добавьте

сюда любой код прорисовки, использующий HDC...

DrawPlane(hdc);
DrawBomb(hdc);
DrawGoal(hdc);

EndPaint(hWnd, &ps);
}
break;


WndProc (2)	case WM_PAINT:	{		PAINTSTRUCT ps;		HDC hdc = BeginPaint(hWnd, &ps);	// TODO: Добавьте сюда любой код прорисовки, использующий HDC...

Слайд 17WndProc (3)
case WM_CREATE:
SetTimer(hWnd, 1, 100, 0);
break;

case WM_TIMER:
MoveBomb();
MovePlane();
CheckContact();
InvalidateRect(hWnd, NULL, TRUE);
break;


WndProc (3)	case WM_CREATE:		SetTimer(hWnd, 1, 100, 0);		break;	case WM_TIMER:		MoveBomb();		MovePlane();		CheckContact();		InvalidateRect(hWnd, NULL, TRUE);		break;	…

Слайд 18Задача 1
Из исходников собрать работающую игру

Задача 1Из исходников собрать работающую игру

Слайд 19Задача 2
Сделать взрыв бомбы не из 3 кадров, а из

6-8 кадров

Задача 2Сделать взрыв бомбы не из 3 кадров, а из 6-8 кадров

Слайд 20Задача 3
Самолет несет запас бомб – не единственная бомба, а

6-8 бомб

Задача 3Самолет несет запас бомб – не единственная бомба, а 6-8 бомб

Слайд 21Задача 3 (1)
Самолет несет запас бомб – не единственная бомба,

а 6-8 бомб

Бомба не одна, а N_BOMB!

Задача 3 (1)Самолет несет запас бомб – не единственная бомба, а 6-8 бомбБомба не одна, а N_BOMB!

Слайд 22Задача 3 (2)
Самолет несет запас бомб – не единственная бомба,

а 6-8 бомб

Сбрасываем очередную бомбу!

Задача 3 (2)Самолет несет запас бомб – не единственная бомба, а 6-8 бомбСбрасываем очередную бомбу!

Слайд 23Задача 3 (3)
Самолет несет запас бомб – не единственная бомба,

а 6-8 бомб

Перемещение не одной, а N_BOMB бомб!

Задача 3 (3)Самолет несет запас бомб – не единственная бомба, а 6-8 бомбПеремещение не одной, а N_BOMB

Слайд 24Задача 3 (4)
Самолет несет запас бомб – не единственная бомба,

а 6-8 бомб

Также нужно изменить код в функциях:
void DrawBomb(HDC hdc)


void CheckContact()
Задача 3 (4)Самолет несет запас бомб – не единственная бомба, а 6-8 бомбТакже нужно изменить код в

Слайд 25Задача 4
Имеется не одна мишень, а 4-8.

Задача 4Имеется не одна мишень, а 4-8.

Слайд 26Задача 4 (1)
Имеется не одна мишень, а 4-8.

Мишень не одна,

а N_GOAL!

Задача 4 (1)Имеется не одна мишень, а 4-8.Мишень не одна, а N_GOAL!

Слайд 27Задача 4 (2)
Имеется не одна мишень, а 4-8.

Мишень не одна,

а N_GOAL, и бомб не одна, а N_BOMB!

Задача 4 (2)Имеется не одна мишень, а 4-8.Мишень не одна, а N_GOAL, и бомб не одна, а

Слайд 28Задача 5
Имеется не один тип мишени, а несколько.

Задача 5Имеется не один тип мишени, а несколько.

Слайд 29Задача 5 (1)
Имеется не один тип мишени, а несколько.

Каждой мишени

нужно задать тип:

Задача 5 (1)Имеется не один тип мишени, а несколько.Каждой мишени нужно задать тип:

Слайд 30Задача 5 (2)
Имеется не один тип мишени, а несколько.
Разные типы

мишеней отрисовываются по разному:

Задача 5 (2)Имеется не один тип мишени, а несколько.Разные типы мишеней отрисовываются по разному:

Слайд 31Задача 6.1 (ИЛИ 6.2)
Ведется счет побед и поражений (попаданий и

промахов).

Задача 6.1 (ИЛИ 6.2)Ведется счет побед и поражений (попаданий и промахов).

Слайд 32Задача 6.2 (ИЛИ 6.1)
Что-то на ваш выбор

Задача 6.2 (ИЛИ 6.1)Что-то на ваш выбор

Слайд 33Задача 7
Ещё что-то на ваш выбор

Задача 7Ещё что-то на ваш выбор

Слайд 34Домашнее задание
Доделать задачи, которые не успели сделать в классе.
Подготовить отчет

(см следующий слайд)
Принести на следующее занятие код финальной игры, чтобы

иметь возможность её продемонстрировать
Домашнее заданиеДоделать задачи, которые не успели сделать в классе.Подготовить отчет (см следующий слайд)Принести на следующее занятие код

Слайд 35Домашнее задание - оформление
Для сдачи домашней работы нужно подготовить отчет.
Отчет

состоит из:
Стандартного титульного листа
Задания на лабораторную работу (отдельная страница)
Лист(ы) с

расчетом всех картинок
Распечатки программы
Скриншот работающей программы
Блоксхем алгоритмов обработки массивов.
Заключение – выводы, чему научился

Домашнее задание - оформлениеДля сдачи домашней работы нужно подготовить отчет.Отчет состоит из:Стандартного титульного листаЗадания на лабораторную работу

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика