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

Тема: створення моделей рівномірного прямолінійного руху об’єкта, руху об’єкта на площині з перешкодами та з вибором шляху у середовищі Netbeans для мови Java.

Мета: навчити створювати моделі руху об’єкта на площині з перешкодами з використанням графічних примітивів в середовищі Netbeans для мови Java.

Обладнання: ПК з встановленими ОС і NetBeans + JDK.

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

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

Хід уроку

1. Організаційний момент

Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.

2. Актуалізація опорних знань

  1. Які є типи даних в мові Java?
  2. Що таке об'єктно-орієнтована програма?
  3. Що таке клас, метод, об'єкт?
  4. Які є види циклів?
  5. Для чого використовується вказівка break в циклах?
  6. Як записується складна умова?
  7. Яким чином задаються кольори в колірній моделі RGB?
Алгоритм створення проекту з порожньою формою
у середовищі NetBeans + JDK

(у звязку з відсутністю на момент створення розробки уроку
україномовного інтерфейсу середовища NetBeans, опис подано
з ілюстраціями щодо російськомовного інтерфейсу
з відповідним перекладом українською мовою
для різнокореневих слів)
  1. Cтворення проекту:

    • завантажити середовище програмування NetBeans;

    • натиснути клавіші Ctrl + Shift + N або використати вказівку меню Файл / Создать проект;


    • в області Категории вибрати Java;
    • в області Проектывибрати Приложение (Застосунок) Java;
    • натиснути кнопку Далее;


    • ввести lab у поле Имя проекта;
    • вказати шлях до теки (у поданому прикладі C:/Проект Java);
    • встановити прапорець Использовать отдельную папку для хранения библиотек (Використовувати окрему теку для зберігання бібліотек);

    • вказати місце розташування теки бібліотек (необов'язково);
    • зняти прапорець Создать главный класс;
    • клацнути по кнопці Готово (Гаразд).

  2. Створення форми JFrame:

    • на вкладенні Проекты клацанням правої кнопки миші на вузлі lab викликати контекстне меню;

    • у контексному меню вибрати Новый / Другое (Інше);


    • у вікні діалогу вибрати:
      • категорію Формы Swing GUI;
      • тип файлу Форма JFrame;
    • натиснути кнопку Далее;


    • ввести назву класу Labirint у полі Имя класса;
    • вибрати (вказати) пакет lab;
    • клацнути по кнопці Готово.

    У результаті буде створено форму JFrame, пов'язану з файлом Labirint.java. Клас Labirint відкриває форму JFrame в GUI Builder. Пакет lab стане пакетом як усталено.

    Текст початкової сторінки можна закрити. На цій сторінці розміщені посилання на довідкові ресурси.

  3. Запуск проекта на виконання:

    • відкрити вкладення Источник (Джерело), де знаходиться текст програми, який збережено в файлі Labirint.java.

    • перш ніж запустити проект на виконання, необхідно призначити головний клас Labirint пакету lab (якщо це не було зроблено раніше);

    • на вкладенні Выполнить (Виконати) вибрати Установить конфигурацию проекта, а потім вибрати Настроить (Налаштувати);

    • у вікні Категории вже буде обрано пункт Выполнение (Виконання) і, використовуючи кнопку Обзор (Огляд), розташовану у правій частині вікна, обрати головний клас lab.Labirint у вікні Выбор главных классов,

      у результаті чого у поле Главный класс буде занесено назву головного класу lab.Labirint;

    • натиснути на кнопку OK;

    • запустити програму на виконання, щоб впевнитися в тому, що створену форму буде відображено на екрані,:

      • або натиснувши на кнопку , розташовану на панелі інструментів;

      • або використавши вказівку меню Выполнить / Запустить главный проект;

      • або натиснувши на функціональну клавішу F6.

      У лівій верхній частині екрану буде виведено форму.

      У вікні Вывод, розташованому в нижній частині вікна, буде виведено повідомлення про успішне виконання пакету lab і час роботи або повідомлення про помилки.

3. Вивчення нового матеріалу

Мотивація навчання: урок присвячено створенню комп'ютерної моделі рівномірного руху об’єкта на площині з перешкодами з використанням графічних примітивів середовища Netbeans для мови Java.

Для успішного досягнення мети уроку необхідно знати відповіді на такі запитання щодо мови Java.

  1. Як задати графічний режим в середовищі NetBeans?
    Імпортувати пакет з класами Graphics i Color для роботи з графікою:

    import java.awt.*;

    А потім в програмі описати метод paint, який забезпечить роботу з графікою:

    public void paint(Graphics g) {super.paint(g); …} 
  2. Як вказати назву форми g в Рядку заголовка?

    g.setTitle("Назва форми");

  3. Як вказати у пікселях ширину Width і висоту Height форми g?

    g.setSize(Width, Height);

  4. Що необхідно врахувати при заданні розмірів форми?
    Рядок заголовку вікна форми має висоту 25 пікселів, тому неохідно додати це значення до оголошеної висоти форми.

  5. Які є вказівки для зображення на формі g графічних примітивів?

    • g.drawLine(x1,y1,x2,y2) — відрізок прямої з кінцями (x1,y1) і (x2, y2);

    • g.drawRect(x, y, width, height) — прямокутник з верхньою лівою вершиною (x, y), шириною width і висотою height вздовж горизонталі й вертикалі відповідно, всі значення параметрів — у пікселях;

    • g.drawOval(x, y, width, height) — овал, вписаний у прямокутник з пара­метрами, описаними вище. Якщо значення останніх двох параметрів збігаються, овал перетворюється на коло.

  6. Як очистити прямокутну ділянку форми?

    g.clearRect(x, y, width, height); — опис параметрів подано вище.

  7. Як задати колір контурів графічних примітивів?

    g.setColor(Color.колір);

  8. Як отримати перелік допустимих кольорів?
    Після набору «Color.» буде виведено вікно діалогу з переліком допустимих кольорів (BLACK, BLUE, CYAN, GRAY, GREEN, ORANGE, RED та інші) для вибору необхідного кольору.

  9. Як працювати з випадковими числами?
    Спочатку потрібно імпортувати пакет з описом класу роботи з випадковими числами Random:

    import java.util.*;

    А потім у програмі створити новий екземпляр цього класу, наприклад, generator. Після цього цілочисленній змінній надати значення — випадкове число від 0 до 99 включно (для даного прикладу):

    Random generator  = new Random();
    int z = generator.nextInt(100);
  10. Як перевизначати метод супер класу?
    @Override — анотація-маркер (у мові Java спеціальна форма синтаксичних метаданих), яку застосовують лише до методів. Метод, анотований як @Override, повинен перевизначати метод супер класу. Анотація-маркер @Override перевіряє, чи перевизначено чи метод. Викликає помилку компіляції, якщо метод не знайдено у батьківському класі або інтерфейсі.

У програмі потрібно втілити алгоритм руху об'єкта з оминанням перешкод. При русі зліва направо і перешкодах у вигляді вертикальних відрізків алгоритм може бути таким, як подано нижче.

Алгоритм

  1. Повторювати такі дії:

    1. Переміститися праворуч на 1 точку (піксель).

    2. Якщо колір точки попереду червоний, то вийти з циклу (І).

    3. Якщо колір точки попереду чорний, то поки точка праворуч має чорний колір і не досягнуто верхньої межі форми переміщуватися вгору на 1 точку.

    4. Поки точка ліворуч має чорний колір повторювати таке:

      • переміститися вниз на 1 точку;

      • якщо колір точки не чорний, тобто є прохід, то опуститись вниз на 10 точок.

  2. Поки не досягнуто нижньої межі форми переміщати об'єкт вниз на 1 точку.

Пункт І забезпечує досягнення червоної лінії, пункт ІІ забезпечує рух вздовж червоної лінії до нижнього краю платформи.

4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу


Завдання. Створити програмний проект реалізації моделі рівномірного руху об’єкта на площині з перешкодами з використанням графічних примітивів.

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

  1. Cтворити проект з порожньою формою:
    • створити окрему теку з назвою Ваше прізвище у теці, вказаній учителем;

    • створити проект з порожньою формою, вказавши місцем розташування проекту попередньо створену теку;

    • ввести назву форми Рух між перешкодами й задати розмір форми 650 пікселів у ширину й 425 пікселів у висоту:

      public Labirint()
      { initComponents();
        setTitle("Рух між перешкодами");
        setSize(650,425);
      }
  2. Створити графічні примітиви на формі:

    • імпортувати необхідні пакети класів:

      import java.awt.*;
      import javax.swing.*;
      import java.util.*;
    • описати метод paint для роботи з графікою, в якому створити новий екземпляр generator класу Random;

    • використовуючи генератор випадкових чисел та вказівки малювання графічних примітивів, створити перешкоди вертикальними лініями чорного кольору (15 або більше ліній), праву межу — відрізком червоного кольору та об'єкт руху — круг синього кольору діаметром 10 пікселів (обов'язково передбачити можливість проходу об'єкта між перешкодами, задавши відстань більшу за діаметр кола);

    • порівняти отримане з очікуваним;

    • зберегти даний проект:

      • або натиснувши кнопку на панелі інструментів;
      • або використавши вказівку меню Файл / Сохранить всё;
      • або натиснувши на клавіші Ctrl + Shift + S;
    • запустити проект на виконання й отримати у верхньому правому куті екрана зображення форми заданого розміру 650×425 пікселів з назвою «Рух між перешкодами» в рядку заголовка та намальованими графічними примітивами з випадковими координатами (синій круг, 1 червона й 15 чорних ліній).

  3. Створити нові класи:

    • для призупинення виконання програми на деякий час, наприклад, на 3 сек, щоб спостерігати рух об'єкта між перешкодами. Для цього використати клас Thread з пакету java.lang.Thread, який необхідно попередньо імпортувати. Цей клас вимагає обробку виключної ситуації try … catch, тому необхідно створити новий клас Thr:

      • натиснути правою кнопкою миші на зображенні пакету lab і в контексному меню обрати Новый / Класс Java:

      • вказати назву класу Thr у відповідному полі та натиснути кнопку Готово:

      • в результаті отримати таку конфігурацію:

      • створити метод Thr згідно з поданим зразком опису класу Thr, у якому при перехопленні переривання:

        catch(InterruptedException e)

        буде здійснено виведення детального повідомлення про помилки роботи:

        e.printStackTrace();

      • отримати відображення у вікні Навигатор класу Thr і його методу Thr:

      • у тексті програми головного класу Labirint створити новий екземпляр класу Thr:

        Thr Thr = new Thr();

    • аналогічно створити ще два нових класи для визначення того, чи колір поточного пікселя:

      • червоний — клас ColorPxy;
      • чорний — клас ColorBxy;
    • отримаємо проект lab, містить 4 класи з головним класом Labirint:

    • на вкладенні Файлы перевірити розташування файлів:

    • у вікні навігатора перевірити наявність складових головного класу Labirint:

    • завершити роботу над описом класів ColorPxy та ColorBxy:

      • імпортувати пакет java.awt.* з класами Color i Robot, необхідні для роботи з графікою щодо визначенню кольору точки із заданими координатами;

      • щойно створені класи ColorPxy і ColorBxy повинні повертати у головний клас Labirint результат роботи, тому у кожному з цих двох класів потрібно описуємо метод з такою самою назвою, як і назва відповідного класу, і вказати тип boolean (логічний) методу і результату (rez):

        public class ColorPxy
        { boolean rez;
          public  boolean ColorPxy (int x, int y ){…}
        }
      • пересвідчитися, що у вікні навігатора кожного класу буде відображено цю інформацію:

      • у методі кожного з класів ColorPxy і ColorBxy описати новий екземпляр класу Robot:

        Robot robot = new Robot();

      • колір пікселя визначити за допомогою методу getPixelColor:

        Color color = robot.getPixelColor(x,y);

      • визначити інтенсивності (кожна ціле число у межах від 0 до 255) трьох основних кольорів (червоного, зеленого і синього) за допомогою методів getRed(), getGreen() та getBlue(), застосованих до об'єкта color;

      • у методі ColorPxy (ColorBxy) надати значення змінній rez:
        • true, якщо колір заданого пікселя червоний (чорний);
        • false, якщо колір заданого пікселя інший;
      • порівняти з очікуваними текстами класів ColorPxy або ColorBxy;

    • у тексті програми головного класу Labirint створити новий екземпляр класу ColorPxy та ColorBxy:

      ColorPxy colorPXY = new ColorPxy();
      ColorBxy colorBXY = new ColorBxy();

      і описати логічну зміну:

      boolean b = false;

      для того, щоб зберігти результат визначення, чи є колір поточного пікселя чорним (червоним):

      b = colorBXY.ColorBxy(X1,Y1);

  4. Реалізувати модель руху об'єкта між перешкодами:

    • програмно втілити алгоритм руху об'єкта з оминанням перешкод, перед­бачивши затримку на 3 сек між такими діями: спочатку очистити прямокутник, в який вписано об'єкт-коло, а потім намалювати синім кольором коло на новому місці;

    • порівняти створений текст програми головного класу Labirint з орієнтовним;

    • по завершенню роботи отримати таке:



Після збереження проекту й демонстрації його учителю порівняти з демон­стра­ційним розв'язанням, створеним на ПК під керуванням ОС Windows, але праце­здатним і на ПК під керуванням ОС Linux Mint — анімацію вище створено саме на такому ПК.

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

7. Домашнє завдання
Виробити пропозиції щодо удосконалення проекту (наприклад, перешкоди задати в вигляді похилих ліній або повернутих літер П). При можливості реалізувати.


Текст упорядкувала Кохно Людмила Павлівна, вчитель спеціалізованої школи № 94 «Еллада» Печерського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 13.11.2017 по 17.11.2017.