Инфоурок Информатика ПрезентацииОсновы программирования ФИСТ. Лекция 3

Основы программирования ФИСТ. Лекция 3

Скачать материал
Скачать материал "Основы программирования ФИСТ. Лекция 3"

Получите профессию

Методист-разработчик онлайн-курсов

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Специалист по работе с молодежью

Описание презентации по отдельным слайдам:

  • Основы программированияФИСТ 1 курсВласенко Олег ФедосовичЛекция 9.2
Прост...

    1 слайд

    Основы программирования
    ФИСТ 1 курс
    Власенко
    Олег
    Федосович
    Лекция 9.2
    Простая игра на двухмерном массиве

  • Делаем игру на основе 2D массива

    2 слайд

    Делаем игру на основе 2D массива

  • Кодируем состояние игры в 2D массиве#define N 10
#define M 15

int a[N][M] =...

    3 слайд

    Кодируем состояние игры в 2D массиве
    #define N 10
    #define M 15

    int a[N][M] = {
    { 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 },
    { 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0 },

    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0 },
    { 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 },
    { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 }
    };

    int steps = 0;
    int gold = 0;
    Коды ячеек
    // 0 - ???
    // 1 - ???
    // 2 - ???
    // 3 - ???

  • Кодируем состояние игры в 2D массиве#define N 10
#define M 15

int a[N][M] =...

    4 слайд

    Кодируем состояние игры в 2D массиве
    #define N 10
    #define M 15

    int a[N][M] = {
    { 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 },
    { 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0 },

    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0 },
    { 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0 },
    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 },
    { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 }
    };

    int steps = 0;
    int gold = 0;
    Коды ячеек
    // 0 - свободно
    // 1 - золото
    // 2 - стена
    // 3 - игрок

  • Код функции WndProcLRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM w...

    5 слайд

    Код функции WndProc
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    switch (message)
    {

    case WM_PAINT:
    {
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hWnd, &ps);

    DrawField(hdc);

    EndPaint(hWnd, &ps);
    }
    break;

  • Код функции WndProccase WM_KEYDOWN:
		switch (wParam)
		{
		case VK_DOWN:...

    6 слайд

    Код функции WndProc
    case WM_KEYDOWN:
    switch (wParam)
    {
    case VK_DOWN:
    moveDown();
    InvalidateRect(hWnd, NULL, TRUE);
    break;
    case VK_LEFT:
    moveToLeft();
    InvalidateRect(hWnd, NULL, TRUE);
    break;
    case VK_UP:
    moveUp();
    InvalidateRect(hWnd, NULL, TRUE);
    break;
    case VK_RIGHT:
    moveToRight();
    InvalidateRect(hWnd, NULL, TRUE);
    break;
    }
    break;

  • Изменение состояния игры: двигаем игрока влевоvoid moveToLeft() {
	int i, j;...

    7 слайд

    Изменение состояния игры: двигаем игрока влево
    void moveToLeft() {
    int i, j;
    i = 0;
    while (i < N) {
    j = 1;
    while (j < M) {
    if (a[i][j] == 3) {
    if (a[i][j - 1] == 0) {
    a[i][j - 1] = 3;
    a[i][j] = 0;
    steps++;
    } else if (a[i][j - 1] == 1) {
    a[i][j - 1] = 3;
    a[i][j] = 0;
    steps++;
    gold++;
    }
    }
    j++;
    }
    i++;
    }
    }

  • Изменение состояния игры: двигаем игрока вправоvoid moveToRight() {
	int i =...

    8 слайд

    Изменение состояния игры: двигаем игрока вправо
    void moveToRight() {
    int i = 0;
    while (i < N) {
    int j = M - 2;
    while ( j >= 0) {
    if (a[i][j] == 3) {
    if (a[i][j + 1] == 0) {
    a[i][j + 1] = 3;
    a[i][j] = 0;
    steps++;
    } else if (a[i][j + 1] == 1) {
    a[i][j + 1] = 3;
    a[i][j] = 0;
    steps++;
    gold++;
    }
    }
    j--;
    }
    i++;
    }
    }

  • Изменение состояния игры: двигаем игрока вверхvoid moveUp() {
	int i = 1;
	wh...

    9 слайд

    Изменение состояния игры: двигаем игрока вверх
    void moveUp() {
    int i = 1;
    while (i < N) {
    int j = 0;
    while (j < M) {
    if (a[i][j] == 3) {
    if (a[i - 1][j] == 0) {
    a[i - 1][j] = 3;
    a[i][j] = 0;
    steps++;
    } else if (a[i - 1][j] == 1) {
    a[i - 1][j] = 3;
    a[i][j] = 0;
    steps++;
    gold++;
    }
    }
    j++;
    }
    i++;
    }
    }

  • Изменение состояния игры: двигаем игрока внизvoid moveDown() {
	int i = N;
	w...

    10 слайд

    Изменение состояния игры: двигаем игрока вниз
    void moveDown() {
    int i = N;
    while (i >= 0) {
    int j = 0;
    while (j < M) {
    if (a[i][j] == 3) {
    if (a[i + 1][j] == 0) {
    a[i + 1][j] = 3;
    a[i][j] = 0;
    steps++;
    } else if (a[i + 1][j] == 1) {
    a[i + 1][j] = 3;
    a[i][j] = 0;
    steps++;
    gold++;
    }
    }
    j++;
    }
    i--;
    }
    }

  • Отрисовка состояния игры
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WP...

    11 слайд

    Отрисовка состояния игры

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    switch (message)
    {
    ...
    case WM_PAINT:
    {
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hWnd, &ps);

    DrawField(hdc);

    EndPaint(hWnd, &ps);
    }
    break;
    ...
    return 0;
    }

  • Отрисовка состояния игры (2)int sizeX = 36;
int sizeY = 30;

void DrawField(H...

    12 слайд

    Отрисовка состояния игры (2)
    int sizeX = 36;
    int sizeY = 30;

    void DrawField(HDC hdc) {

    HBRUSH hBrushEmptyCell; //создаём кисть для пустого поля
    hBrushEmptyCell = CreateSolidBrush(RGB(200, 200, 200)); // серый

    HBRUSH hBrushGold; //создаём кисть для поля с золотом
    hBrushGold = CreateSolidBrush(RGB(255, 255, 0)); // желтый

    HBRUSH hBrushWall; //создаём кисть для стены
    hBrushWall = CreateSolidBrush(RGB(0, 0, 0)); // черный

    HBRUSH hBrushMan; //создаём кисть для игрока
    hBrushMan = CreateSolidBrush(RGB(0, 0, 255)); // синий

  • Отрисовка состояния игры (3)int i, j;
i = 0;
while (i &lt; N)  {
	j = 0;
	while...

    13 слайд

    Отрисовка состояния игры (3)
    int i, j;
    i = 0;
    while (i < N) {
    j = 0;
    while (j < M) {
    RECT rect = { j * sizeX,i * sizeY, (j + 1) * sizeX,(i + 1) * sizeY };
    if (a[i][j] == 0) {
    FillRect(hdc, &rect, hBrushEmptyCell);
    } else if (a[i][j] == 1) {
    FillRect(hdc, &rect, hBrushGold);
    } else if (a[i][j] == 2) {
    FillRect(hdc, &rect, hBrushWall);
    } else if (a[i][j] == 3) {
    FillRect(hdc, &rect, hBrushMan);
    } else {
    // тут никогда не должны оказаться
    }
    j++;
    }
    i++;
    }

  • Отрисовка состояния игры (4)HFONT hFont;
hFont = CreateFont(20,
	0, 0, 0, 0,...

    14 слайд

    Отрисовка состояния игры (4)
    HFONT hFont;
    hFont = CreateFont(20,
    0, 0, 0, 0, 0, 0, 0,
    DEFAULT_CHARSET,
    0, 0, 0, 0,
    L"Courier New"
    );
    SelectObject(hdc, hFont);
    SetTextColor(hdc, RGB(0, 128, 128));

    TCHAR string1[] = _T("сделано ходов:");
    TCHAR string2[] = _T("собрано золота:");
    TextOut(hdc, 10, sizeY * (N + 1), (LPCWSTR)string1, _tcslen(string1));
    TextOut(hdc, 10, sizeY * (N + 1) + 20, (LPCWSTR)string2, _tcslen(string2));

  • Отрисовка состояния игры (5)char sSteps[5];
TCHAR  tsSteps[5];
sprintf(sSteps...

    15 слайд

    Отрисовка состояния игры (5)
    char sSteps[5];
    TCHAR tsSteps[5];
    sprintf(sSteps, "%d", steps);
    OemToChar(sSteps, tsSteps);
    TextOut(hdc, 220, sizeY * (N + 1), (LPCWSTR)tsSteps, _tcslen(tsSteps));

    char sGold[5];
    TCHAR tsGold[5];
    sprintf(sGold, "%d", gold);
    OemToChar(sGold, tsGold);
    TextOut(hdc, 220, sizeY * (N + 1) + 20, (LPCWSTR)tsGold, _tcslen(tsGold));

    DeleteObject(hFont);
    DeleteObject(hBrushEmptyCell);
    DeleteObject(hBrushGold);
    DeleteObject(hBrushWall);
    DeleteObject(hBrushMan);

    } // конец функции void DrawField(HDC hdc)

  • Вставь в правильное место!!Чтобы успешно заработали небезопасные функции ввод...

    16 слайд

    Вставь в правильное место!!
    Чтобы успешно заработали небезопасные функции ввода/вывода, нужно подключить stdio.h, и определить константу
    #define _CRT_SECURE_NO_WARNINGS
    в файле stdafx.h

  • Домашнее задание** Соберите игру из предложенного кода

*** Сделайте свою игр...

    17 слайд

    Домашнее задание
    ** Соберите игру из предложенного кода

    *** Сделайте свою игру на основе двухмерного массива

  • Источники информацииmsdn
google

    18 слайд

    Источники информации
    msdn
    google

Получите профессию

Экскурсовод (гид)

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 625 620 материалов в базе

Скачать материал

Другие материалы

РАБОЧАЯ ПРОГРАММА Учебной дисциплины «ОП.09 Информационные технологии в профессиональной деятельности»
  • Учебник: «Информатика (базовый уровень)», Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.
  • Тема: Глава 1. Информационные системы и базы данных
  • 02.01.2021
  • 587
  • 8
«Информатика (базовый уровень)», Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 15.10.2020 87
    • PPTX 181.7 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Курлович Ольга Дмитриевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Курлович Ольга Дмитриевна
    Курлович Ольга Дмитриевна
    • На сайте: 3 года и 3 месяца
    • Подписчики: 0
    • Всего просмотров: 80570
    • Всего материалов: 237

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Методист-разработчик онлайн-курсов

Методист-разработчик онлайн-курсов

500/1000 ч.

Подать заявку О курсе
  • Сейчас обучается 66 человек из 34 регионов

Курс повышения квалификации

Применение компьютерных моделей при обучении математике и информатике в рамках ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 47 человек из 24 регионов

Курс профессиональной переподготовки

Педагогическая деятельность по проектированию и реализации образовательного процесса в общеобразовательных организациях (предмет "Информатика")

Учитель информатики

300 ч. — 1200 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе

Курс повышения квалификации

Специфика преподавания информатики в начальных классах с учетом ФГОС НОО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 40 человек из 20 регионов

Мини-курс

Налог на прибыль и учет доходов/расходов

2 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Практические аспекты работы логопеда: методы и приемы в логоритмике

2 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Психологические особенности педагогического общения

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 30 человек из 19 регионов