Розробка уроку — практичної роботи

Тема: створення комп’ютерної моделі процесу взаємо­пов’язаного функціону­вання двох чи більше об’єктів за допомогою мови C++ з використанням бібліотеки wxWidgets.

Мета:

Після виконання роботи учень:

Обладнання: комп'ютери зі встановленими ОС, браузером, середовищем CodeBlocks для програмування мовою С++ з використанням бібліотеки wxWidgets, (дана) інструкція.

Структура уроку

  1. Організаційний момент
  2. Актуалізація опорних знань
  3. Інструктаж з ТБ
  4. Вироблення практичних навичок
  5. Підбиття підсумків уроку
  6. Домашнє завдання

Хід уроку

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 «Злипання кругів»:

Вважити, що маса круга пропорційна його площі (квадрату радіуса).

Вказівки до виконання

  1. У середовищі CodeBlocks у вказаній учителем теці створити проєкт discs з використанням бібліотеки wxWidgets з такими параметрами:

    • Prefered GUI — Builders;
    • Application Type — Frame Based.
  2. Видалити об'єкти: MenuBar1 і StatusBar1, виділивши їхні зображення (клацнувши на них лівою кнопкою миші) над зображенням форми і натиснувши клавішу Delete.

  3. Надати властивостям форми значення (тут і нижче у тексті вказано лише ті властивості, значення яких потрібно змінити):

    • Title — Discs;
    • Width — 600;
    • Height — 450.

  4. Розташувати на формі панель wxPanel з вкладення Standard і надати її властивостям такі значення:

    X0
    Y0
    Width 600
    Height450
  5. Розташувати на панелі користувацький віджет Custom з вкладення Standard і надати його властивостям такі значення:

  6. Creating code$(THIS) = new $(CLASS)($(PARENT));
    Include filewx/dcclient.h
    Var namez
    Class namewxPaintDC
    X0
    Y0
    Width 600
    Height450

    Щоб змінити значення Creating code (коду породження), потрібно клацнути лівою кнопкою миші праворуч від відповідного значення

    і у вікні діалогу Creating code вилучити зайві символи, після чого натиснути на кнопку з написом OK.

  7. Розташувати на формі таймер wxTimer з вкладення Tools і виставити проміжок між вмиканнями 50 мілісекунд, що відповідає частоті 20 кадрів на секунду.

  8. Створити обробник події вмикання таймера:

    • виділити таймер, клацнувши на ній лівою кнопкою миші, і перейти до розгляду подій, натиснувши кнопку із зображенням фігурних дужок {};

    • навести вказівник миші на рядок з написом None (Жодного) праворуч від напису EVT_BUTTON, клацнути лівою кнопкою миші і з випадного меню вибрати Add new handler (Додати новий обробник);

    • підтвердити створення події OnTimer1Trigger вмикання таймера, натиснувши кнопку з написом OK у вікні діалогу New hadler (Новий обробник);

  9. Описати глобальні змінні

    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()
  10. На початку коду discsMain.cpp замовити бібліотеку:

    #include <ctime>

    для того, щоб кожного разу породжувати різні послідовності псевдовипадкових чисел за рахунок ініціалізації генератора псевдовипадкових чисел поточною кількістю секунд процесорного часу вказівкою:

    srand(time(NULL));

  11. Описати функцію OnTimer1Trigger коду discsMain.cpp — обробник події вмикання таймера, що передбачає виконання завдання. Порівняти створене з очікуваним.

  12. Перевірити правильність виконання проекту. Для цього на панелі інструментів середовища CodeBlocks натиснути (у вказаному порядку) такі кнопки:

    Save all files (Зберегти всі файли);
    Build (Побудувати);
    Run (Запустити).

    Замість натискання двох останніх кнопок можна натиснути одну:

    Build and run (Побудувати і запустити).

    У разі потреби внести зміни у код програми.

  13. Повідомити вчителя про завершення роботи над проектом.

5. Підбиття підсумків уроку
Виставлення оцінок.

6. Домашнє завдання

Завдання 2. Написати аналогічну програму, в якій об'єкти замість злипання відштов­хуються один від одного пружно без кручення, дотримуючись закону збереження енергії. Останнє означає, що у інерційній системі з початком координат у центрі мас системи двох кругів останні змінюють напрям швидкості на протилежний без зміни величини цієї швидкості.


Текст упорядкував Олександр Рудик.