Розділ 5. Запис сценаріїв

Kig надає вам змогу створювати власні типи на мові програмування Python. Це дуже розвинена можливість, мені відома лише одна програма з інтерактивної геометрії, що має подібну функціональність (програма для GNOME — Dr.Geo).

На базовому рівні написання сценаріїв на Python у Kig надає вам змогу створювати ваші власні об’єкти з певних базових об’єктів. Наприклад, якщо ви є вчителем математики і вам відомий витончений спосіб обчислення цікавої точки конічного перерізу, тоді замість плутанини складних побудов і макротипів, ви можете просто написати код на Python для обчислення цієї точки, а потім Kig продемонструє вам цю точку.

Припустімо, що вам не відомо про вбудований у Kig тип «Середня точка», а ви хочете побачити середню точку між двома заданими точками. Тоді вам слід натиснути кнопку   Сценарій на Python на панелі інструментів або вибрати пункт меню Об’єкти → Інше → Сценарій на Python. Перед вами з’явиться майстер, який полегшить вам подальшу роботу.

Майстер об’єктів-сценаріїв

Перш за все слід вибрати аргументи об’єкта-сценарію. У нашому випадку це дві точки, для яких ви бажаєте знайти середню точку. Виберіть ці точки у головному вікні Kig, а потім натисніть кнопку Далі, щоб продовжувати.

Перед вами з’явиться поле редагування тексту, куди ви можете ввести код вашого об’єкта-сценарію. Код шаблону і деякі коментарі вже міститимуться у ньому. Важливо переконатися, що ваш код є коректним з точки зору мови Python. Користувачі знайомі з мовою Python зауважать, що насправді ми визначаємо функцію Python з назвою calc. Тому потрібно дотримуватися правил Python для визначення функцій. Наприклад, кожен рядок функції має починатися з символу Tab. Перший же рядок, що не починається з табуляції завершує визначення функції.

Функція Python, яку ми хочемо визначити, називається calc, і у нашому випадку приймає два параметри. Це ті об’єкти, які ви вибрали як аргументи у попередньому вікні. Вам потрібно стільки ж аргументів, скільки ви там вибрали. Їх названо arg1 і arg2, але ви можете змінити їх назви на змістовніші, якщо ви цього бажаєте.

У функції ви можете виконувати всі види обчислень, які вважаєте потрібними, з використання двох аргументів. Функція має повертати об’єкт, який ви бажаєте визначити. У нашому випадку це об’єкт Point. Два аргументи є також об’єктами Point, і ми можемо використовувати функцію Point.coordinate() для визначення координат двох заданих точок.

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

def calc( a, b ):
    m = ( a.coordinate() + b.coordinate() ) / 2;
    return Point( m )
Введення коду для середньої точки у майстрі об’єкта-сценарію.

Якщо ви тепер натиснете на кнопку Завершити, у документі Kig з’явиться новий об’єкт. Якщо ви потім пересунете одну з точок, створена сценарієм точка рухатиметься відповідно до руху кінця відрізка. За допомогою цього способу можна побудувати набагато складніші об’єкти: просто спробуйте це зробити.

Побудований об’єкт-сценарій

Всі об’єкти у Kig можна використовувати у коді на Python. Як ми вже бачили раніше, точки належать до класу Point, отже, для них можна використовувати, наприклад, метод Point.coordinate(). Функції також можуть повертати всі типи об’єктів, а не лише Point. У коді на Python у Kig доступні набагато більше класів і методів, докладнішу довідку щодо цього питання можна знайти на сайті Kig.