Тема: створення ігрових проектів мовою Java.
Мета: навчитися складати та виконувати алгоритми з використанням змінних для розв’язування задач мовою Java.
По завершенню навчання учень повинен уміти:
Обладнання: комп’ютери зі встановленими ОС та середовищем програмування: JDK (Java Development Kit) + (Eclips, Netbeans або IntelliJ).
Структура уроку
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
Мотивація навчання. Cьогодні ми навчимося складати ігрову програму для розв'язування математичної задачі Баше. Для цього створемо ігровий проект мовою Java.
У теорії ігор — математичній теорії, спрямовані на пошук оптимальної (виграшної) стратегії (поведінки) в умовах конфлікту інтересів:
у грі в казино, конкуренції компаній на ринку, військовому протистоянні. Сторони, які беруть участь у конфліктній ситуації, у межах цієї теорії називають гравцями. Гру описуть сукупністю правил: які є позиції (стани) гри і з яких позицій у які можна робити хід, яку кінцеву позицію, з якої немає жодного ходу, вважати виграшною (і який виграш), а яку — програшною (і який програш). Ходи бувають двох видів:
зроблені гравцями;
результат випадкового втручання (експерименту): підкидання монети, грального кубика, роботи датчика випадкових чисел.
На початковій стадії знайомства з теорією ігор використовують прості ігри, одніює з яких є гра Баше (Клод Гаспар Баше де Мезірака (1581–1638) — французький математик, поет і перекладач): у початковий момент в купці є n предметів. Два гравці по черзі забирають з цієї купки предмети (від 1 до p включно). Переможцем вважають того, хто примусить суперника зробити останній хід.
Така грає прикладом анагоністичної гри (один гравець виграє, а інший — програє) з повною інформацією (усі гравці знають, у якій позиції перебуває гра) без випадкового втручання (всі ходи роблять лише гравці).
2. Актуалізація опорних знань
import java.awt.GridLayout; // Замовлення менеджера розташування AWT import java.awt.event.ActionEvent; // Замовлення опрацювання подій AWT import java.awt.event.ActionListener;// Замовлення відстежувача подій AWT import javax.swing.*; // Замовлення складових Swing; // Опис класу з використанням відстежувача подій public class назва_класу implements ActionListener {…} // Опис використаних складових JPanel назва_панелі; JLabel назва_напису; JTextField назва_поля_введення; JButton назва_кнопки; JFrame назва_контейнера-рамки; // Використання складових назва_панелі = new JPanel(); // Створення панелі GridLayout назва_менеджера = new GridLayout(3,3,10,10);// Створення менеджера розташування назва_панелі.setLayout(назва_менеджера розташування); // Застосування менеджера розташування назва_кнопки = new JLabel("Напис на кнопці"); // Створення кнопки назва_поля_введення; = new JTextField(); // Створення поля введення // Додавання відстежувача подій до елемента керування й передавання йому екземпляра обробника подій назва_елемента_керування.addActionListener(this); назва_панелі.add(назва_елемента_керування); // Встановлення на панелі елемента керування назва_вікна = new JFrame("заголовок_вікна");// Створення вікна назва_вікна.setContentPane(назва_панелі); // Розташування панелі у вікні назва_вікна.setSize(ширина, висота); // Задання розмірів вікна назва_об'єкта.setVisible(true); // Зробити об'єкт видимим назва_об'єкта.setVisible(false); // Зробити об'єкт невидимим // Swing: виклик вікна діалогу (звичайне повідомлення) // для підвердження запиту так/ні/скасувати (є повний опис) JOptionPane.showConfirmDialog(null, "текст для виведення", "заголовок вікна", JOptionPane.PLAIN_MESSAGE); @Override // Аннотація подальшого переозначення методу базового класу. // Слугує для контролю успішності дій при збиранні проекту. public void actionPerformed(ActionEvent e) { JButton s = (JButton) e.getSource(); … // Надання змінній s значення } // кнопки - джерела події е назва_об'єкта.setEnabled(true); // Вмикання об'єкта назва_об'єкта.setEnabled(false); // Вмикання об'єкта назва_напису.setText("текст"); // Відображення тексту у написі назва_напису.setText(String.valueOf(число)); // Відображення у написі значення числа число = Integer.valueOf(назва_напису.getText());// Надання числу значення з поля введення
3. Інструктаж з ТБ
4. Вироблення практичних навичок
Завдання 1. Створити програму, що реалізує гру Баше — див. ілюстрації нижче.
Вказівки до розв'язання
Завдання 2. Виявити (сформулювати) виграшну стратегію. Для цього можете взяти сірники і пограти у парах.
5. Підбиття підсумків уроку
Виставлення оцінок.
6. Домашнє завдання
При потребі доробити завдання 1. На його основі створити проект гри Баше, у якій одним з гравців є учень, а іншим комп'ютерна програма, що реалізує виграшну стратегію: залишати після свого ходу таку кількість предметів у купці, щоб лишок від ділення її на (p + 1) дорівнював 1.
Текст упорядкувала Безпрозванна Любов Михайлівна, учитель спеціалізованої школи № 76 імені Олеся Гончара Святошинського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 30.10.2017 по 03.11.2017.
Використано матеріали розробок уроків Гедзун Мар'яни Вікторівни, Коваленко Олени Станіславівни, Євтехової Ізабелли Євгеніївни, Петрушанської Наталії Михайлівни, Костюченка Віталія Геннадійовича, що проходили курси удосконалення у 2016 та 2017 роках.