Создание пазла
Contents
Как использовать скрипт shapegame.py для создания паззлов
Введение
Многие упражнения GCompris работают по схожему принципу: они представляют собой паззл из частей, иконки которых можно выбирать слева на экране и перетаскивать на основное поле игры. Это может быть как обычный паззл, так и игра по заполнению карты изображениями стран, например. Такие упражнения называются shapegame в терминологии GCompris и используют встроенный движок упражнений.
Чтобы самостоятельно создать такое упражнение, можно воспользоваться скриптом на языке Питон, созданным для графического редактора GIMP Мигелем де Изаррой (Miguel De Izarra). Собственно, требуется всего лишь наложить изображения на фон.
Необходимые инструменты
- скрипт на Питоне
- Графический редактор Gimp
- Картинка географической карты размером 800х520 пикселей, с хорошо видными границами государств.
Установка скрипта
Актуальная версия исходного кода скрипта находится на этой странице репозитория GCompris. Обратите внимание: скрипт не распространяется вместе с исходным кодом GCompris. Можно загрузить сам скрипт отсюда.
Чтобы его установить, скопируйте его в папку скриптов графического редактора GIMP. В Линуксе эта папка находится в вашем домашнем каталоге, в ~/.gimp-2.2/plug-ins/ ('~' представляет собой путь к домашнему каталогу, как /home/bruno). Затем добавьте права на исполнение этому скрипту :
cp gcompris_shapegame.py ~/.gimp-2.2/plug-ins/
chmod +x ~/.gimp-2.2/plug-ins/gcompris_shapegame.py
Отныне, если вы запустите GIMP, в нём будет новый пункт меню в меню Image: (Python-fu -> GCompris).
Подготовка
Создать собственную карту для GCompris легко. Мы покажем на примере, как создать карту Бразилии и разместить на ней областные регионы.
Скрипт работает только с файлами формата .xcf -- стандартного формата файлов GIMP. Нам было лениво вручную рисовать карту Бразилии, так что мы скачали её с Википедии в формате SVG (векторный графический формат, леко масштабируется без потери качества). Карты на Википедии распространяются по лицензии GPL и являются общественным достоянием.
Поскольку карта должна быть размером 800x520 пикселей, мы конвертируем векторый SVG-файл в растровый формат соответствующего размера. Сконвертированный файл уже можно открыть GIMPом.
Задание областей
На найденной нами карте Бразилия изображена светло-серым, а её внешние границы и границы между областями - темно-серым цветом. Каждая область хорошо видна. При помощи инструмента GIMP "волшебная палочка" мы выделим желаемую область ("волшебная палочка" выделяет последовательные регионы одного цвета). Когда область выделилась, она обрисовывается по контуру бегающими точками. Щелчком правой кнопки вызовем контекстное меню и выберем Выделить > Сохранить в Отдельный Канал [Select > Save to Channel]. Изменим имя канала (по умолчанию это "Копия маски выделения") и назовём его именем области, например Rio Grande do Norte.
Повторим операцию для каждого штата. Чтобы представить себе, о чем идёт речь, скачайте файл и посмотрите на результат. Откройте меню Диалоги > Каналы [Dialogs > Channels], чтоб увидеть созданные нами каналы.
Запуск скрита
Когда вы запустите скрипт, вы должны задать ему следующие параметры:
- activity_name: имя упражнения (по умолчанию = geography)
- dossier: папка для упражнения (например, Brazil)
- title: название, которое будет GCompris для этого упражнения
- bordersize: толщина границы между странами (хорошо подходит 3)
- keepLimit: сохранять ли границы между странами (желательно для сложных карт)
- level: Уровень сложности упражнения
- sublevel: Подуровень сложности
Скрипт раскрасит каждую область, создаст границы между ними, а также свяжет каждый канал с его местом на карте для будущего упражнения.
Результат будет сохранен в ту же папку, откуда взята исходная картинка. Переместите файо упражнения в папку упражнений GCompris. В нашем примере мы поместили упражнение в папку /usr/share/gcompris/boards/geography_country
Создание паззла
Создать паззл ещё проще: возьмите любую картинку 800x520, откройте и сохраните её в GIMP, и запустите скрипт Python-Fu->GCompris->Puzzle. Скрипт уточнит, сколько кусочков паззла вы хотите, и сделает новое упражнение-паззл из предоставленной картинки.