Тема: створення комп’ютерної моделі процесу взаємопов’язаного функціонування двох чи більше об’єктів за допомогою мови C++ з використанням бібліотеки wxWidgets.
Мета:
вдосконалити уміння визначати зв'язки між об'єктами, представляти їх у нових взаємозв'язках;
формувати обізнаність про можливості ПК як інструменту навчально-пізнавальної діяльності.
Після виконання роботи учень:
Обладнання: комп'ютери зі встановленими ОС, браузером, середовищем CodeBlocks для програмування мовою С++ з використанням бібліотеки wxWidgets, (дана) інструкція.
Структура уроку
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
2. Актуалізація опорних знань
Протлумачити вказівки:
wxPaintDC z(Panel1); z.SetBrush(wxColor(0,0,0)); z.SetPen(wxPen(wxColor(0,0,0),1)); z.DrawRectangle(0,0,600,450); srand(time(NULL)); wxColor c = wxColor(red, green, blue); z.DrawCircle(wxPoint(x0,y0,r0);
і порівняти з очікуваним.
3. Інструктаж з ТБ
4. Вироблення практичних навичок
Завдання 1. Створити проект у середовищі CodeBlocks для програмування мовою С++ з використанням бібліотеки wxWidgets «Злипання кругів»:
Вважити, що маса круга пропорційна його площі (квадрату радіуса).
Вказівки до виконання
У середовищі CodeBlocks у вказаній учителем теці створити проєкт discs з використанням бібліотеки wxWidgets з такими параметрами:
Видалити об'єкти: MenuBar1 і StatusBar1, виділивши їхні зображення (клацнувши на них лівою кнопкою миші) над зображенням форми і натиснувши клавішу Delete.
Надати властивостям форми значення (тут і нижче у тексті вказано лише ті властивості, значення яких потрібно змінити):
X | 0 |
Y | 0 |
Width | 600 |
Height | 450 |
Розташувати на панелі користувацький віджет Custom з вкладення Standard і надати його властивостям такі значення:
Creating code | $(THIS) = new $(CLASS)($(PARENT)); |
Include file | wx/dcclient.h |
Var name | z |
Class name | wxPaintDC |
X | 0 |
Y | 0 |
Width | 600 |
Height | 450 |
Щоб змінити значення Creating code (коду породження), потрібно клацнути лівою кнопкою миші праворуч від відповідного значення
і у вікні діалогу Creating code вилучити зайві символи, після чого натиснути на кнопку з написом OK.
Розташувати на формі таймер wxTimer з вкладення Tools і виставити проміжок між вмиканнями 50 мілісекунд, що відповідає частоті 20 кадрів на секунду.
Створити обробник події вмикання таймера:
виділити таймер, клацнувши на ній лівою кнопкою миші, і перейти до розгляду подій, натиснувши кнопку із зображенням фігурних дужок {};
навести вказівник миші на рядок з написом None (Жодного) праворуч від напису EVT_BUTTON, клацнути лівою кнопкою миші і з випадного меню вибрати Add new handler (Додати новий обробник);
підтвердити створення події OnTimer1Trigger вмикання таймера, натиснувши кнопку з написом OK у вікні діалогу New hadler (Новий обробник);
Описати глобальні змінні
const int m =20;// початкова кількість кругів double r[m], // радіуси кругів x[m], // абсциси центрів кругів y[m], // ординати центрів кругів vx[m], // горизонтальні складові швидкостей кругів vy[m]; // вертикальні складові швидкостей кругів wxColour c[m]; // кольори кругів int n=m; // поточна кількість кругів bool start=true;// початок гриу коді discsMain.cpp безпосередньо після вказівок
BEGIN_EVENT_TABLE(discsFrame,wxFrame) //(*EventTable(discsFrame) //*) END_EVENT_TABLE()
На початку коду discsMain.cpp замовити бібліотеку:
#include <ctime>
для того, щоб кожного разу породжувати різні послідовності псевдовипадкових чисел за рахунок ініціалізації генератора псевдовипадкових чисел поточною кількістю секунд процесорного часу вказівкою:
srand(time(NULL));
Описати функцію OnTimer1Trigger коду discsMain.cpp — обробник події вмикання таймера, що передбачає виконання завдання. Порівняти створене з очікуваним.
Перевірити правильність виконання проекту. Для цього на панелі інструментів середовища CodeBlocks натиснути (у вказаному порядку) такі кнопки:
Save all files (Зберегти всі файли);
Build (Побудувати);
Run (Запустити).
Замість натискання двох останніх кнопок можна натиснути одну:
Build and run (Побудувати і запустити).
У разі потреби внести зміни у код програми.
Повідомити вчителя про завершення роботи над проектом.
5. Підбиття підсумків уроку
Виставлення оцінок.
6. Домашнє завдання
Завдання 2. Написати аналогічну програму, в якій об'єкти замість злипання відштовхуються один від одного пружно без кручення, дотримуючись закону збереження енергії. Останнє означає, що у інерційній системі з початком координат у центрі мас системи двох кругів останні змінюють напрям швидкості на протилежний без зміни величини цієї швидкості.
Текст упорядкував Олександр Рудик.