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

Тема: реалізація алгоритму гри «Сапер» з визначенням для кожного елемента таблиці кількості сусідніх елементів з мінами у середовищі Lazarus.

Мета:

Обладнання: комп'ютери зі встановленими ОС та середовищем програмування Lazarus.

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

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

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

2. Актуалізація опорних знань
Дати відповіді на запитання і порівняти з очікуваними відповідями.

  1. Що таке Lazarus?
    Lazarus — вільне середовище розробки програмного забезпечення мовами програмування Free Pascal та Оbject Pascal.

  2. Які вікна відкриються після завантаження середовища Lazarus?
    Після завантаження середовища Lazarus буде відкрито такі вікна:

    • головне меню ICP Lazarus;
    • Інспектор об’єктів;
    • вікно форми Form1;
    • вікно програмного коду Редактор тексту;
    • вікно повідомлень.
  3. Як у Free Pascal позначають назви змінних?
    Назви змінних у Free Pascal починанають з латинської літери та можуть містити літери латиниці та цифри.

  4. Що таке підпрограма?
    Підпрограма — це спеціальним чином оформлений фрагмент програми, який має свою назву і призначений для виконання певних дій, до якого можна звернутися з будь-якого іншого місця всередині програми.

  5. Що таке рекурсія?
    Рекурсією називається така ситуація, коли підпрограма (процедура або функція) викликає сама себе.

  6. Як записують цикл мовою Free Pascal?

    for j:=1 to n do <вказівка>
    for j:=n downto 1 do <вказівка>
    while <умова> do <вказівка>
    repeat <вказівки> until <умов>>

  7. Як записують умовний оператор мовою Free Pascal?

    if <умова> then <вказівка> else <вказівка>

    if <умова> then <вказівка>
    case <вираз> of
     <значення1>: <дія1>;
     <значення2>: <дія2>; …
     else <дія>
    end
  8. Які правила комп'ютерної гри «Сапер»?

    Мета гри: знайти всі порожні клітинки, не зачепивши міни.
    Рівні складності вказують, обираючи розмір поля.
    Початок гри: потрібно клацнути по довільній клітині ігрового поля.
    Перебіг гри:

    • якщо відкрито клітину з міною, гру програно;
    • якщо відкрито всі клітини без мін, гру виграно;
    • інакше гра триває.

    Якщо у відкритій комірці вказано число, воно показує, скільки мін приховано у восьми сусідніх клітинах навколо даної. Це число допомагає гравцеві зрозуміти, де розташовано безпечні клітини.

3. Інструктаж з ТБ
4. Вироблення практичних навичок


Завдання. Створити комп'ютерну програму для гри «Сапер» у середовищі Lazarus.

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

  1. Створити середовище для розробки програми.
  2. Створити код породження ігрового поля.
  3. Створити код відображення клацання миші по ігровому полю.
  4. Створити інтерфейс користувача та об'єднати всі складові програми.

Реалізувати цей план таким чином.

  1. Створення робочого середовища для розробки програми. Усі кроки виконувати, використовуючи конкурс ідей, і порівнювати з демонстраційним розв'язанням. Для перегляду здійснювати перехід за гіперпосиланням.

    1. Створити теку Сапер_Прізвище у вказаному вчителем місці.

    2. Запустити середовище програмування Lazarus.

    3. Спланувати інтерфейс майбутнього ігрового середовища, наприклад таким чином:

      Для виведення масиву зручно використати компонент StringGrid з вкладення Additional.

    4. Розташувати необхідні елемети керування на формі:

    5. Змінити властивості об'єктів у вікні Інспектор об'єктів:

      Назва
      об'єкта
      Властивість
      об'єкта
      Значення
      властивості
      Form1CaptionСапер
      Form1AutoSizeTrue
      Label1CaptionСтовпчиків
      Label2CaptionРядків
      Label3CaptionНеобхідно відкрити усі
      незаміновані клітинки
      Label4CaptionМін на полі
      Label4VisibleFalse
      Label5CaptionКлітинок
      Label5VisibleFalse
      Label6CaptionКлітинок відкрито
      Label6VisibleFalse
      Edit1Text10
      Edit2Text10
      Edit3Text
      Edit3VisibleFalse
      Edit4Text
      Edit4VisibleFalse
      Edit5Text
      Edit5VisibleFalse
      Button1CaptionПочати гру
      StringGrid1FixedCols0
      StringGrid1FixedRows0
      StringGrid1ColCount10
      StringGrid1RowCount10
      StringGrid1DefaultColWidth21
      StringGrid1DefaultRowHeight21
      StringGrid1VisibleFalse

      Пересвідчитися, що після такої зміни властивостей після запуску проекту на виконання (F9) отримаєте таке вікно:

  2. Створення коду породження ігрового поля (тут і далі кроки перелічено у порядку наповнення файлу програми unit1.pas).

    1. Задати значення змінних S1 і S2, які визначають розмір поля, взявши їх з полів Edit1 та Edit2 форми.

    2. Перевірити справдження умов: 0 ≤ S1 ≤ 30; 0 ≤ S2 ≤ 20. У випадку хибності однієї з цих умов вивести відповідне повідомлення.


    3. Якщо умови справджуються, обчислити:
      • кількість клітин поля k = S1 · S2;
      • кількість мін на полі m, що у 10 разів менша від k.
    4. Змінити властивості об'єкта StringGrid1: кількість стовпчиків та рядків, ширину та висоту об'єкта, зробити об'єкт видимим.

    5. Заповнити порожніми рядками допоміжну прямокутну (розміру S1×S2) таблицю символів а і символами знаку запитання «?» усі клітинки StringGrid1.

    6. Випадковим чином розставити міни, позначивши символом «+» їхнє розташування у матриці а.

    7. Для кожної клітини ігрового поля, вільної від мін, підрахувати кількість мін у сусідніх клітинах, перетворити її на рядок, який зберегти як значення відповідного елемента таблиці а.

  3. Створення коду відображення клацання миші по ігровому полю.

    1. Описати рекурсивну процедуру step перевірки за даними таблиці a відсутності міни на полі, суміжних полях, суміжних до суміжних і т.д. та зміни значень відповідних елементів об'єкта StringGrid на рядок із символом пробілу.

    2. Описати процедуру виведення повідомлення: «На жаль, Ви про­гра­ли...» при клацанні на «замінованій» клітині.

    3. В обробнику події OnClick об'єкта StringGrid1 визначити номер рядка і стовпчика вибраної клітини, виклик програми опрацювання отриманих значень (у поданому далі демонстраційному розв'язанні vvod) і виведення привітання: «Вітаю, Ви виграли!!!» у разі перемоги гравця.

  4. Об'єднання всіх складових програми.

    1. Описати усі запроваджені й використані глобальні змінні.

    2. У коді обробника події OnClick об'єкта Button1 поєднати необхідні частини програмного коду.

  5. Перевірка роботи програми. Запустити проект на виконання, натис­нувши клавішу F9. У разі потреби внести зміни у програмний код, щоб отримати такі вікна на відповідних етапах гри:

    • після натискання кнопки Почати гру;

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

5. Підбиття підсумків уроку

Обговорення проблем, які виникли під час виконання завдання. Відповіді на запитання учнів. Виставлення оцінок.

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

Проаналізувати коди розв'язання. Змінити коди: передбачити вибір рівня гри: легкий (8×8), середній (16×16), важкий (30×16) і власний (з вибором кількості рядків і стовпчиків.


Текст упорядкувала Царик Валентина Михайлівна, вчитель ліцею № 227 імені М.М.Громова Голосіївського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 13.11.2017 по 17.11.2017.