Тема: створення комп’ютерної гри з двома об’єктами, управління одним з яких здійснює людина, а управління іншими здійснюється автоматично за допомогою комп’ютера мовою програмування C#.
Мета: сформувати предметні компетенції щодо технологій імітації руху та моделювання гри.
Учень повинен пояснювати: призначення та спосіб дії програмного таймера.
Учень повинен вміти:
Обладнання: комп’ютери зі встановленими ОС, інтегроване середовище програмування MonoDevelop, бібліотек Cairo і Gtk# 3.0.
Структура уроку
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності й готовності учнів до уроку.
2. Актуалізація опорних знань
Для створення програмного втілення гри «Пінг-Понг» згадаємо вже знайомі класи й методи:
Для створення програмного втілення гри «Пінг-Понг» візьмемо за основу
код прикладу з рухомим текстом.
3. Інструктаж з ТБ
4. Вироблення практичних умінь і навичок
Завдання.
Описати порядок створення складових гри «Пінг-Понг» з відбиванням м'яча від бокових меж ігрового поля і двох ракеток, керування однією з яких здійснює людина, а керування іншою здійснює комп’ютерна програма.
Cтворити й налагодити програму для такої гри.
Код програми записати у файл Ваше_прізвище у теку, вказану вчителем.
Порядок створення складових гри «Пінг-Понг»
(бажано отримати як результат конкурсу ідей)
Вказівки щодо створення програми (на кожному з кроків 1-6 перевірити можливість компіляції та правильність роботи програми, при потребі змінювати код)
Створити консольний застосунок у середовищі MonoDevelop з таким налаштуванням підключення пакунків
і замінити створений код програми на код, що створює рухомий текст.
Вилучити з коду зайве — залишити лише зображення зеленого тла.
Задати значення властивостей класу панелі малювання,
public int i=0, // стан гри il=0, // кількість очок на рахунку програми ir=0, // кількість очок на рахунку гравця w=780, // ширина вікна програми та ігрового поля h=500, // висота ігрового поля c=24, // висота рядка заголовку вікна програми a=10, // ширини прямокутника — зображення ракетки b=100, // висота прямокутника — зображення ракетки, r=10, // радіус круга — зображення м'яча, d_=8, // приріст ординати ракетки на одне оновлення екрану (3), dx, // приріст поточної величини абсциси круга за 1 такт оновлення екрану dy, // приріст поточної величини ординати круга за 1 такт оновлення екрану dx_=9, // модуль приросту абсциси круга за 1 такт оновлення екрану dy_=7, // верхня межа приросту ординати круга за 1 такт оновлення екрану x =390,// поточна абсциса центра зображення м'яча y =250,// поточна ордината центра зображення м'яча yl=200,// ордината верхнього краю прямокутника-ракетки ліворуч, керованого програмою yr=200;// ордината верхнього краю прямокутника-ракетки праворуч, керованого людиною public bool up = false, // потрібно рухати жовтий прямокутник догори down = false, // потрібно рухати жовтий прямокутник донизу timer = true;змінити вигляд вікна,
надавши йому розміру w × h — вказано значення властивостей області малювання,
змінити проміжок часу між послідовними викликами таймера на 50 мс. Порівняти з очікуваним.
Описати у методі OnDrawn області малювання відображення поточного стану гри:
Порівняти з очікуваним.
Описати у коді вікна програми опрацювання подій натискання клавіш: за допомогю методів OnKeyPressEvent і OnKeyReleaseEvent і властивості Key події змінювати значення властивостей up i down області малювання. Порівняти з очікуваним.
Описати зміну стану гри за 1 крок на початку коду методу OnDrawn області малювання.
Якщо номер стану гри 0 (вкидання м'яча у напрямку ліворуч), розташувати білий круг у центрі поля, надати йому сталої горизонтальної швидкості ліворуч, випадкової вертикальної швидкості та перейти до стану гри з номером 1.
Якщо номер стану гри 1 (рух м'яча):
якщо найближча до лівого (правого) краю екрану точка білого круга перетнула білу обмежувальну лінію поза розташуванням прямокутника червоного (жовтого) прямокутника зображення ракетки програми (користувача), збільшити рахунок суперника на 1 у перейти до стану гри з номером 0 (2).
Якщо номер стану гри 2 (вкидання м'яча у напрямку праворуч), розташувати білий круг у центрі поля, надати йому сталої горизонтальної швидкості праворуч, випадкової вертикальної швидкості та перейти до стану гри з номером 1.
5. Підбиття підсумків уроку
Виставлення оцінок.
6. Домашнє завдання
Порівняти створену програму з демонстраційним розв'язанням. Змінити наявну програму, додавши випадковість у вибір величини переміщення ракетки, керованої програмою. Інакше кажучи, надати можливість користувачу виграти.
Матеріал упорядкував Олександр Рудик.