Тема: створення комп’ютерної моделі процесу взаємопов’язаного функціонування двох чи більше об’єктів за допомогою мови C++ з використанням бібліотеки
wxWidgets.
Мета:
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.
Надати властивостям форми значення (тут і нижче у тексті вказано лише ті властивості, значення яких потрібно змінити):

wxPanel з вкладення Standard і надати її властивостям такі значення:| 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. Написати аналогічну програму, в якій об'єкти замість злипання відштовхуються один від одного пружно без кручення, дотримуючись закону збереження енергії. Останнє означає, що у інерційній системі з початком координат у центрі мас системи двох кругів останні змінюють напрям швидкості на протилежний без зміни величини цієї швидкості.
Текст упорядкував Олександр Рудик.