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

Kig надає вам змогу створювати власні типи на мові програмування Python. Це дуже розвинена можливість, мені відома лише одна програма з інтерактивної геометрії, що має подібну функціональність (програма для GNOMEDr.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.