Puzzle
Пазл (puzzle) — встроенный объект редактора, имеющий определенную игровую механику, которая заключается в том, чтобы собрать необходимое изображение из прямоугольных ячеек (частей). Ячейки пазла можно переставлять и вращать. По мере сбора пазла ячейки, оказывающиеся на своем месте, лишаются бордюра и пазл постепенно проявляется (см. рис. 1). У пазла может быть внешний бордюр (часть исходного изображения) который не разрезается на части и помогает при сборке. Пазл может быть увеличен и снова уменьшен (для работы на устройствах с маленьким экраном). Пазл сохраняется в файл с именем p<id_картинки>_<rows>_<cols>.puz (например p107_6_8.puz). При повторном сборе пазла вся информация берется из этого файла.
Содержание
Игровые механики и режимы пазла
Возможны две игровые механики пазла: обычная, когда все ячейки есть на игровом поле, и пятнашки, когда одной ячейки нет (аналог обычных пятнашек). Есть три режима обычной механики: легкий, эксперт и мастер. Режим эксперт отличается от легкого режима лишь количеством ячеек на которые разбивается исходное изображение (в режиме эксперт их больше). В режиме мастер столько же ячеек, сколько и в режиме эксперт, лишь добавлена возможность поворота ячеек по часовой стрелке вокруг своих центров (подробнее см. описание поворота в разделе параметры). Ячейка поворачивается при повторном клике на нее мышью.
Параметры пазла
(Курсивом в скобках указан id параметра, или состояния)
- Внешний вид
- Картинка (res) — это исходное изображение (графический ресурс) которое нужно собрать;
- Колонок (cols) — количество колонок, на которые разбивается картинка;
- Строчек (rows) — количество строчек (рядов), на которые разбивается картинка;
- Сетка? (g) — если 1 — отображается сетка после разделения картинки на ячейки. Если 0 — сетка не отображается;
- Пометка (alChk) — прозрачность выбранной ячейки пазла в диапазоне от нуля (полностью прозрачна, или невидима) до единицы (полностью не прозрачна, или видима);
- Фон (alBkg) — прозрачность (от нуля до единицы) исходной картинки, отображаемой под пазлом в игровом поле;
- Ширина пазла (vW) — размер ширины игрового поля в пикселях;
- Высота пазла (vH) — размер высоты игрового поля в пикселях;
- Маска (msk) — графический ресурс (изображение), которое накладывается на картинку (например текстура для придания изображению рельефности);
- Рамка (fr) — графический ресурс для рамки по краям ячейки;
- Флаер (fly) — флаер (подробнее см. объект редактора «флаер»), изображающий удачный ход. Он будет запущен над ячейкой которая встала на свое место.
- Звуки (Звуковые ресурсы перетаскивается мышью из редактора ресурсов в поле параметра, которое должно находится в состоянии редактирования))
- Выбор (sDn) — звук при выборе ячейки;
- Перестановка (sSh) — звук при перестановке ячеек;
- На месте (sOk) — звук при становлении ячейки на нужное место.
- Смешивать
- Перестановку (alSwp) — при поочередном выборе ячеек кликом мыши для перестановки, возможны два варианта визуализации этого процесса: первый (значение параметра 1) — ячейки остаются неподвижными, изменяются лишь их изображения по прозрачности (от нуля до единицы); второй (значение параметра 0) — происходит перемещение ячеек (ячейки меняются местами);
- Вращение (alRot) — визуализацию поворот ячейки в режиме «мастер» возможно осуществить двумя способами: первый (значение параметра 1) — ячейка остается неподвижной, изменяется лишь ее изображение по прозрачности (от нуля до единицы); второй (значение параметра 0) — происходит поворот ячейки.
- Правила
- Вращений (rot) — число возможных поворотов каждой ячейки пазла (0 — ячейки повернуть нельзя; 2 — два варианта положения ячейки, или поворот на 180°; 4 — четыре варианта положения ячейки, или поворот на 90°);
- Переставлять? (sw) — если 0 — ячейки нельзя переставлять местами путем поочередного выбора их мышью, 1 — можно;
- Пятнашки (fif) — если 0 — обычная механика игры, 1 — играем в пятнашки (см. игровые механики и режимы пазла).
- Времена этапов
- Невидимости (tmBeg) — время паузы перед открытием пазла;
- Открытия (tmOpn) — время открытия картинки;
- Показа (tmStt) — время отображения картинки перед тем, как она разделится на ячейки и перемешается. Это необходимо для того, чтобы игрок успел ознакомиться с изображением, которое ему необходимо собрать;
- Перемешивания (tmMix) — время визуализации процесса перемешивания ячеек пазла;
- Финала (tmFin) — время показа картнки когла она собрана. Это необходимо для того, чтобы игрок смог насладиться результатом своих стараний, а также смог повнимательнее разглядеть картинку;
- Закрытия (tmCls) — время закрытия пазла (переход в состояние (close) по прозрачности (alpha) от единицы до нуля).
- Счетчики
- Таймер (time) — объект редактора «timer» привязывается к пазлу и дает возможность собирать пазл определенное время, или использовать его для спортивного интереса, фиксирую время, за которое игрок соберет пазл. Таким образом игрок сможет с гордостью заявить своим друзьям, что он собрал пазл за такое-то время;
- Лучшее время (tmBest) — самое короткое время, за которое игрок собрал пазл. Оно считается лучшим и фиксируется в опциях для использования в прогрессе (см. объект редактора «progress»);
- Счетчик (count) — объект редактора «counter» привязывается к пазлу и фиксирует количество ходов;
- Лучший счетчик (ctBest) — наименьшее количество ходов за которое пазл собран. Оно считается лучшим и фиксируется в опциях для использования в прогрессе;
- Показов хинт счетчик (cntShw) — объект редактора «counter» привязывается к пазлу и фиксирует количество оставшихся подсказок-отображения (hint), тип подсказки когда картинка отображается на некоторое время;
- Перест. хинт счетчик (cntSwp) — объект редактора «counter» привязывается к пазлу и фиксирует количество оставшихся подсказок-перестановки (swap), тип подсказки когда выделенная, или произвольная ячейка становится на свое место;
- Игра (game) — имя игры, раздел в опциях, который надо вычитать для получения начального значения прогресса (например, для отображения результатов);
- Уровень (level) — имя уровня, параметра в разделе игра (см. выше), который надо вычитать для получения начального значения прогресса (например, для отображения результатов). В опциях записывается как «имя игры».«имя уровня» (game.level);
- Сохранять в профиль (prof) — если 1, то все значения будут сохранены в текущий профиль, 0 — глобально.
Хозяйке на заметку: Таким образом, с пазлой может быть связан таймер и три счетчика (числа ходов, и числа использования двух видов подсказок). Если, например, счетчик числа ходов определен, в опциях (файл options.xml) сохраняются данные подобного вида: <obj nm="options" > <pk1> <pz01 lv0="2" lv0ct="7" /> </pk1> </obj>
В этом примере параметр «игра» записывается как «pk1.pz01», а параметр «уровень» — «lv0». Эти параметры могут быть заданы как в свойствах пазла, так и внешними объектами. Наличие точки в параметре «игра» разбивает раздел опций на подразделы.
- Времена игры
- Перестановки (tmSwp) — время перестановки двух ячеек местами;
- Поворота (tmRot) — время поворота ячейки;
- Паузы (tmShw) — время паузы перед началом перестановки или поворота;
- Подсказки1 (tmHnt1) — время за которое проявляется исходная картинка в состоянии (hint);
- Подсказки2 (tmHnt2) — время в течении которого показывается исходная картинка в состоянии (hint) после проявления;
- Подсказки3 (tmHnt3) — время в течении которого закрывается исходная картинка в состоянии (hint) после проявления.
- Рейтинг (raiting) — если 1 — после того, как пазл собран показать рейтинг.
Подсказки
В игре есть два вида подсказок: (hint) и (swap). Первый проявляет исходную картинку, второй переставляет две ячейки местами, из которых, по крайней мере одна, окажется на своем месте. Если кнопкой или машиной состояний перевести пазл в состояние (hint), то он исчезнет по прозрачности (за время tmHnt1), а исходная картинка проявится. Затем, в течении tmHnt2, будет демонстрироваться исходная картинка, и за время tmHnt3, она по прозрачности исчезнет, а пазл снова перейдет в стадию игры. Состояние (swap) ставит одну из ячеек (выделенную игроком, или произвольную) на свое место. Кроме этого пазл можно перевести в состояние (scale). В этом состоянии он увеличивается в размерах и его можно таскать по экрану. Повторение состояния (scale) уменьшает возвращает пазлу исходные размеры.
Возможные состояния объекта
- (beg) — пауза перед состоянием (open);
- (open) — картнка появлятся по прозрачности от нуля до единицы;
- (start) — начальный показ картинки;
- (mix) — перемещать ячейки;
- (scale) — масштабирование (изменение размера) пазла;
- (wait) — ожидание первого клика на ячейку;
- (check) — проверка собранности пазла, если собран — переход в состояние (final);
- (hint) — временное отбраджение картинки;
- (swap) — выделенная, или произвольная ячейка становится на свое место;
- (final) — показ картинки в конце игры;
- (close) — закрытие пазла по прозрачности;
- (end) — конец игры, пазл недоступен;
- (init) — повторная инициализация картинки, переход в состояние (beg).
Для придания ячейкам объема служит графический ресурс рамка. Он может быть квадратной картинкой, прозрачной в центре и с серой полупрозрачной маской на краях. Её размер особой роли не играет. Например, 128x128:
Общая ширина и высота картинки пазлы задает игровое поле. Кроме этого есть поля ширина пазлы и высота пазлы, которые определяют размер центральной области картинки, которая разрезается на ячейки. Если эта область меньше размеров картинки, появится внешний бордюр, помогающий при сборке.
Таким образом, с пазлой может быть связан таймер и три счетчика (числа ходов, и числа использования двух видов хинтов). Если, например, счетчик числа ходов определен, в опциях (файл options.xml) сохраняются данные подобного вида:
<obj nm="options" > <pk1> <pz01 lv0="2" lv0ct="7" /> </pk1> </obj>
В этом пример параметр игра равен "pk1.pz01", а параметр уровень равен "lv0". Эти параметры могут быть заданы в свойствах пазлы, так и внешними объектами (например, кнопками выбора уровня сложности - lv0, lv1 или кнопками выбора картинки для сбора "pk1.pz01", "pk1.pz02",...). Наличие точки в параметре игра разбивает раздел опций на подразделы. Для каждой игры и уровня, будет записано число сделанных ходов (до полного разбора) с суффиксом "ct" после уровень . Выше это lv0ct="7". Кроме этого будет запись lv0="1" или lv0="2", в зависимости от того, превысило или нет число ходов значение лучший счетчик. Этот параметр служит для изображения эчивмесов (объект progress). Если lv0="1" - это "серебрянная звездочка", lv0="2" - "золотая".
Настройки: времена
- времена этапов
- невидимости - начальная пауза перед откртыием пазлы. (tmBeg)
- открытия - время открытия исходной картинки (проявляется по alpha). (tmOpn)
- показа - время показа исходной картинки (после проявления). (tmStt)
- перемешивания - время визуализации процесса перемешивания ячеек. (tmMix)
- финала - время финального показа пазлы после её разбора, перед переходом к закрытию. (tmFin)
- закрытия - время закрытия пазлы (в состояниия close, исчезает по alpha). (tmCls)
- времена игры
- перестановки - аремя перестановки двух ячеек местами при их выборе. (tmSwp)
- поворота - время поворота ячейки при повторном клике на нее. (tmRot)
- паузы - время паузы перед началом перстановки или поворота. (tmShw)
- подсказки1 - время за которое проявляется исходная картинка в состоянии hint. (tmHnt1)
- подсказки2 - время в течении которого показывается после проявления исходная картинка в состоянии hint. (tmHnt2)
- подсказки3 - время в течении которого закрывается после показа исходная картинка в состоянии hint. tmHnt3
Настройки: остальные
- звуки
- выбор - звуковой ресурс для проигрывания натжатия на ячейку. Перетаскивается мышкой из редактора ресурсов (sDn)
- перестановка - Звуковой ресурс для проигрывания перестановки ячеек (sSh)
- на месте - Звуковой ресурс для проигрывания события когда ячейки становится на свое место (sOk)
Добавляемые разделы
- изменить состояние объекта
- объект - после разбора перевести объект в состояние из следующего поля. (obj)
- состояние - новое состояние для объекта из предыдущего поля. (st)
- изменить параметр объекта
- объект - после разбора этот объект меняет свой параметр. (obj)
- свойство - параметр, который мы изменяем. (par)
- значение - новое значение параметра. (val)
Состояния
- beg - пауза перед состоянием open; пазла невидима
- open - появляется по alpha-каналу
- start - начальный показ картинки
- mix - перемешать ячейки
- scale - уменьшаем или увеличиваем размер пазлы
- wait1 - ждем первого клика на ячейку
- check - проверка собранности картинки; если собрана - переход на final
- hint - временно показать исходную картинку, проявляясь по alpha
- swap - выделенная или если нет случайная ячейка перелетает на место
- final - перейти в показ исходной картинки
- close - исчезает по alpha-каналу
- end - недоступна, невидима
- init - повторная инициализация картинки; переход в beg