Тема: створення нескладної комп’ютерної гри з використанням змінних величин мовою Ruby.
Мета: навчитися складати та виконувати алгоритми з величинами числового типу мовою програмування Ruby. Після виконання роботи учень
складати алгоритми опрацювання величин числового типу;
складати, редагувати, налагоджувати та виконувати програми опрацювання числових величин мовою Ruby;
аналізувати результати виконання програм опрацювання величин числового типу;
налагоджувати програму та виконувати її у покроковому режимі.
Обладнання: комп’ютери зі встановленими ОС, текстовим редактором, інтепретатором Ruby і бібліотекою Tk.
Структура уроку
Хід уроку
1. Організаційний момент
Вітання з класом. Перевірка присутності і готовності учнів до уроку. Перевірка виконання домашнього завдання.
2. Актуалізація опорних знань
Для створення комп'ютерної гри нам знадобиться код створення вікна програми,
require 'tk' $root = TkRoot.new(:title => "Гра Баше (основний варіант)",:width=>400,:height=>300) Tk.root.bind( TkVirtualEvent.new('Control-c', 'Control-q'), proc{Tk.exit}) Tk.mainloop
яке можна закрити натисканням клавіш Ctrl + c або Ctrl + x,
і приклади використання елементів керування Ruby / Tk.
3. Вивчення нового матеріалу
Клод Гаспар Баше де Мезеріак (Claude Gaspard Bachet de Méziriac, 1581–1638) — французький математик, поет і перекладач, який запропонував розглянуту далі гру у книзі «Цікаві і приємні числові завдання». Книжка вийшла в 1612 року, а туди вона потрапила з твору Леонарда Пізанського 1202 року.
Гра Баше. У початковий момент в купці є n предметів. Два гравці по черзі забирають з цієї купки предмети — від 1 до p включно, де 1 < p. Переможцем вважають того, хто зробить останній хід.
Є інший (альтернативний) варіант гри: переможцем вважати того, хто примусить суперника зробити останній хід.
Гра Баше — один з найпростіших і найвідоміших прикладів гри:
з повною інформацією — обидва гравці знають, які всі зроблені ходи;
без випадкового втручання — стан (позиція) визначається виключно ходами (рішеннями) гравців;
антагоністичної. Інтереси гравців — протилежні, тобто, якщо один виграв, то інший програв. В інших іграх: чим більше грошей (балів) у результаті отримає одни гравець, тим менше отримає інший (отримають інші).
Для таких ігор є розроблена теорія пошуку виграшної стратегії — правил поведінки, що гарантує виграш у грі. Розглянемо елементи цієї теорії.
Запровадимо поняття графа гри, який складається з:
вершин-позицій — невід'ємних цілих чисел — кількостей предметів у купці;
дуг-ходів — впорядкованих пар вершин, які вказують, яку позицію з якої можна отримати за один хід.
Для гри Баше хід з позиції A в позицію B дозволено, якщо справджуються нерівності:
0 < A − B ≤ p.
Вершину, на яку не вказує жодна дуга, назвемо початковою позицією або початком гри.
Вершину, з якої не виходить жодна дуга (порожню множину) назвемо кінцевою позицією або кінцем гри.
Означимо поняття виграшної і програшної позицій (для того, чия черга ходити).
Для кінцевої позиції виграшність позиції визначається згідно з правилами гри:
Для решти (не кінцевих) позицій:
Інакше кажучи, у виграшній позиції гравець, чия черга ходу, може вибрати хід у програшну позицію, що забезпечує йому перемогу за умови відповідного вибору й надалі. У програшній позиції гравець завжди робить хід у виграшну позицію, тобто він не може позбавити суперника можливості виграти. Для нього виграш можливий лише, якщо суперник припуститься помилки і зробить хід у виграшну позицію.
Схема аналізу графа гри
Визначити виграшні позиції, з яких визначені раніше програшні позиції досягаються за 1 хід.
Визначити програшні позиції, з яких визначені раніше виграшні позиції досягаються за 1 хід.
Повторювати виконання пунктів 2−3 до встановлення, якими є всі позиції.
Таким чином за скінчену кількість кроків проводять аналіз усіх позицій гри. Аналіз завершується, якщо кроки 2−3 не дають ніякої нової інформації щодо виграшності чи програшності позицій.
4. Інструктаж з ТБ
5. Вироблення практичних навичок
Завдання 1. Встановити для обох варіантів гри Баше, які позиції є виграшними, а які є програшними.
Вказівки до виконання: проаналізувати граф гри для p = 3 й узагальнити на випадок усіх натуральних p. Порівняти з очікуваним.
Завдання 2. Створити програму для гри Баше для двох гравців-людей, яка до натискання кнопки з написом «Почати гру» вибирає випадкові значення:
а далі забезпечує дотримання правил гри й виводить вікна повідомлень з коментарями про некоректність ходу (при потребі), виграшність останнього зробленого ходу та результат гри.
Описати інтерфейс програми, що до початку гри має такий вигляд.
Порівняти з очікуваним.
Описати методи виклику вікон повідомлень з єдиним параметром — рядком тексту — для виведенням його у вікні.
Порівняти з очікуваним.
6. Підбиття підсумків уроку
Обговорення проблем виконання завдання. Виставлення оцінок.
7. Домашнє завдання
У разі потреби доробити завдання. Удосконалити програму, передбачивши вибір варіанту гри Баше. Додатково для охочих: створити аналогічну програму мовою Ruby для іншої гри з використанням змінних величин, попередньо узгодивши зміст (правила) гри з учителем.
Текст упорядкував Олександр Рудик.