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

Тема: створення ігрового проекту в середовищі Lazarus.

Мета: навчитися складати та виконувати алгоритми з використанням змінних для розв’я­зування задач в середовищі програмування Lazarus.

По завершенню навчання учень уміє:

Обладнання: ПК із встановленим ОС і середовищем програмування Lazarus, (дана) інструкція.

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

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

Хід уроку

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

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

У теорії ігор — математичній теорії, спрямовані на пошук оптимальної (виграшної) стратегії (поведінки) в умовах конфлікту інтересів: у грі в казино, конкуренції компаній на ринку, військовому протистоянні. Сторони, які беруть участь у конфліктній ситуації, у межах цієї теорії називають гравцями. Гру описуть сукупністю правил: які є позиції (стани) гри і з яких позицій у які можна робити хід, яку кінцеву позицію, з якої немає жодного ходу, вважати виграшною (і який виграш), а яку — програшною (і який програш). Ходи бувають двох видів:

На початковій стадії знайомства з теорією ігор використовують прості ігри, одніює з яких є гра Баше (Клод Гаспар Баше де Мезірака (1581–1638) — французький математик, поет і перекладач): у початковий момент в купці є n предметів. Два гравці по черзі забирають з цієї купки предмети (від 1 до p включно). Переможцем вважають того, хто примусить суперника зробити останній хід.

Така грає прикладом анагоністичної гри (один гравець виграє, а інший — програє) з повною інформацією (усі гравці знають, у якій позиції перебуває гра) без випадкового втручання (всі ходи роблять лише гравці).

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

  1. Що таке вказівка розгалуження?
  2. Як записати повну форму вказівки розгалуження?
  3. Як записати коротку форму вказівки розгалуження?
  4. Для чого використовують конструкцію begin ... end?
  5. Назвіть вікна середовища Lazarus.
  6. Назвіть три функціональні блоки головного вікна Lazarus.
  7. Назвіть вкладення вікна Інспектор об'єктів.

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

Додати нову форму у проект можна за допомогою вказівки меню Файл / Нова форма

або натиснувши кнопку Нова форма на Панелі інструментів. У результаті з'явиться нова порожня форма з назвою Form2,

а відповідний їй файл з кодом програми буде додано у Редактор тексту на нове вкладення Unit2.

У цьому вікні жирним шрифтом буде виділено зарезервовані слова, червоним — знаки пунктуації, синім — коментарі та рядкові сталі (послідовності символів).

Після додавання нової форми, проект потрібно зберегти.

Показ форм здійснюють за допомого одного з двох методів:

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

Метод Show показує форму, переміщує її на передній план екрану і робить активною. У поданому нижче прикладі описано виклик форми Form2 у звичайному вікні після натискання кнопки Button1.

procedure TForm1.Button1Click (Sender: TObject);
begin
  Form2.Show;
end;

Метод ShowModal викликає форму у модальному вікні. Переключитися з модального вікна на інші вікна можна лише після закритття вікна. Нижче подано приклад показу форми Form3 у модальному вікні після натискання кнопки Button2.

procedure TForm1.Button2Click (Sender: TObject);
begin
  Form3.ShowModal;
end;

Для того щоб модуль Unit2 форми Form2 був досяжним з модуля Unit1, в розділі Implementation коду Unit1 необхідно записати вказівку:

uses Unit2;

Аналогічно, щоб зробити модуль Unit1 форми Form1 досяжним з модуля Unit2, потрібно у модулі Unit2 в розділі Implementation записати вказівку:

uses Unit1;

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


Завдання. Створити проект для гри двох людей у гру Баше.

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

  1. Завантажити середовище Lazarus.

  2. Побачити форму — об’єкт для розташування кнопок, полів, написів, меню, смуг прокрутки тощо.

  3. Для форми Form1 у вікні Інспектор об'єктів на вкладенні Властивості надати такі значення величинам:

    • Сaption — «гра Баше»;
    • Color — clMoneyGreenc;
    • Height, Left, Top, Width — задати довільно.
  4. Створити другу форму. Для цього натиснути кнопку Нова форма на Панелі інструментів.

  5. Для форми Form2 у вікні Інспектор об'єктів на вкладенні Властивості надати такі значення величинам:

    • Сaption — «гра Баше продовження»;
    • Color — clSkyBlue;
    • Height, Left, Top, Width — задати довільно.
  6. Створити окрему теку для проекту з назвою Ваше прізвище у теці, вказаній учителем.

  7. Зберегти у новостворену теку проект, натиснувши кнопку Зберегти всі на Панелі інструментів.

  8. Розташувати на формі Form1 такі об’єкти: одну кнопку, два поля і три написи, використовуючи Панель компонентів. Після натискання віповідної кнопки на вкладенні Standard розташувати на формі вказівник миші, натиснути ліву кнопку миші і, не відпускаючи її, змістити вказівник миші і відпустити кнопку миші. Таким чином буде вказано прямокутник для розташування об'єкта, після чого об'єкт буде розташовано у ньому. Натискати потрібно такі кнопки:
    tbutton — один раз — для створення кнопки;
    tedit — двічі — для створення полів;
    tlabel — тричі — для створення написів.

  9. У вікні Інспектор об'єктів змінити значення властивостей об'єктів:

    • для кнопки button1: Caption — «Розпочати гру», інші властивості — довільні;

    • для полів edit1 і edit2: Text — порожній, інші властивості — довільні;

    • для напису Label1 властивості Caption надати значення: «Гра Баше. У початковий момент в купці є N предметів. Два гравці по черзі забирають з цієї купки предмети (від 1 до P включно). Переможцем вважають того, хто примусить суперника зробити останній хід», значення інших властивостей — довільні;

    • для напису Label2 властивості Caption надати значення: «Кількість предметів», інші властивості — довільні.

    • для напису Label3 властивості Caption надати значення: «По скільки брати», інші властивості — довільні.

  10. Надати формі Form1 такого вигляду.

  11. Перейти до форми Form2, активувавши її клацанням лівою кнопкою миші.

  12. Розташувати на формі Form2 такі об’єкти: одну кнопку, одне поле і шість написів, використовуючи Панель компонентів.

  13. У вікні Інспектор об'єктів змінити значення властивостей об'єктів:

    • для кнопки button1: властивість Caption — «Граємо», інші властивості — довільні;

    • для поля edit1: Text — порожній, інші властивості — довільні;

    • для напису Label1: Caption — «Залишилось», інші властивості — довільні;

    • для напису Label2: Caption — «предметів», інші властивості — довільні.

    • для напису Label3: Caption — «Перший гравець», інші властивості — довільні.

    • для напису Label4: Caption — «Другий гравець», інші властивості — довільні.

    • для напису Label5: Caption буде породжено програмою, розміщення — між Label1 та Label2

    • для напису Label6: Caption буде породжено програмою, інші властивості — довільні.

  14. Надати другій формі такого вигляду.

  15. У модулі Unit1 описати глобальні змінні і надати доступ до коду Unit2. Безпосередньо після рядків:

    var
    Form1: TForm1;

    вставити такий текст:

    n, {кількість предметів}
    p: {по скільки предметів брати}
    integer; {тип даних - цілі числа}

    Безпосередньо після рядка:

    implementation

    вставити такий рядок:

    uses Unit2; {надає доступ до кодів Unit2}

    Отримати такий вигляд вікна Редактор тексту.

  16. Описати реакцію програми на натискання кнопки з написом: «Розпочати гру» на формі Form1. На формі Form1 виділити кнопку з написом: «Розпочати гру». У вікні Інспектор об'єктів перейти на вкладення Події, вибрати подію OnClick і двічі клацнути у полі OnClick.

    У вікні Редактор тексту на вкладенні Unit1 ввести такий код.

    n:=strtoint(edit1.Text);
    p:=strtoint(edit2.Text);
    form2.label5.caption:=inttostr(n);
    form2.button1.Enabled:=true;
    form2.label6.caption:='';
    Form2.Show;

    У введеному коді:

    • функція strtoint перетворює рядок тексту в ціле число;
    • функція inttostr перетворює ціле число в рядок тексту;
    • n — кількість предметів;
    • p — найбільша кількість предметів, яку можна брати за один хід;
    • напис label5 на Form2 вказує, скільки предметів залишилось;
    • кнопка button1 на Form2 досяжна — можна грати;
    • напису label6 на Form2 надано порожнє значення.
  17. Описати реакцію на натискання кнопки з написом Граємо. На формі Form2 виділити кнопку з написом Граємо. У вікні Інспектор об'єктів перейти на вкладення Події, вибрати подію OnClick і двічі клацнути у полі OnClick. У вікні Редактор тексту на вкладенні Unit2 у тіло процедури TForm2.Button1Click ввести такий код.

    one:=strtoint(edit1.text);
    if one>Unit1.p
    then showMessage('брати не більше '+inttostr(Unit1.p))
    else
    begin
      Unit1.n:=Unit1.n-one;
      label5.caption:=inttostr(Unit1.n);
      edit1.text:='';
      if Unit1.n<=1 then
      begin
        button1.Enabled:=false;
        if   label3.Visible=true
        then label6.Caption:='гра закінчилась, вітаємо першого гравця'
        else label6.Caption:='гра закінчилась, вітаємо другого гравця';
      end
      else
      if label3.Visible=true
      then
      begin
        label4.Visible:=true;
        label3.Visible:=false;
      end
      else
      begin
        label3.Visible:=true;
        label4.Visible:=false;
      end;
    end;

    У введеному коді є звертання до процедури showMessage для виведення вікна повідомлень з попередженням про неправильну кількість взятих предметів.

  18. Описати змінні проекту Unit2. Після таких рядків

    var Form1: TForm1;

    вставити такий текст:

    one: {скільки предметів бере кожен гравець}
         integer; {тип даних - цілі числа} 
    

    Після рядка

    implementation

    вставити

    uses Unit1; {надає доступ до кодів Unit1}

    У вікні Редактор тексту відповідний фрагмент коду матиме такий вигляд.

  19. Виконати проект, натиснувши кнопку Виконати. Якщо все було зроблено правильно, у Вікні повідомлень з'явиться напис: Проект успішно зібрано. Запустити створений файл exe на виконання і пересвідчитися у коректності роботи.

    Порівняти з роботою демонстраційного розв'язання.

  20. Зберегти всі файли проекту у раніше створену теку з назвою Ваше прізвище, натиснувши кнопку Зберегти всі на Панелі інструментів.

  21. Закрити вікно Lazarus.

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

7. Домашнє завдання
На основі зробленого у класі створити проект гри, у одним з гравців є учень, а іншим комп'ютерна програма, яка дотримується такої виграшної стратегії: перемагає той, хто робить лишок від ділення кількості предметів на (p + 1) рівним одиниці.


Текст упорядкувала Наталія Михайлівна Петрушанська, учитель НВК І-ІІІ ступенів гімназія «Потенціал» Оболонського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 28.11.2016 по 02.12.2016.