Puzzle — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
м
 
(не показано 57 промежуточных версий 10 участников)
Строка 1: Строка 1:
 +
{{TOC right}}
 +
 
[[Файл:puzzle1.png|right]]
 
[[Файл:puzzle1.png|right]]
'''Пазла''' (puzzle) - минигра, состоящая в собирании картинки, разрезанной на прямоугольные ячейки. Ячейки можно вращать и/или переставлять. Возможны 2 игровые механики, когда все ячейки есть на игровом поле и когда одной нет (аналог - игра 15-шки).
+
'''Пазл''' (puzzle) — встроенный [[Object|объект]] редактора, имеющий определенную игровую механику, которая заключается в том, чтобы собрать необходимое изображение из прямоугольных ячеек (частей) за минимальное количество шагов (перемещений частей пазла). <br>
По мере сбора пазлы ячейки оказывающиеся на своем месте лишаются бордюра и пазла постепенно проявляется (см. рисунок). У пазлы может быть внешний бордюр (часть исходной картинки), который не разрезается на ячейки и помогает при её сборке.
+
 
 +
== Немного о графике ==
 +
Для придания ячейкам объема служит графический ресурс рамка (собственный бордюр ячейки). Он может быть квадратной картинкой, прозрачной в центре и с серой полупрозрачной маской на краях. Её размер особой роли не играет. Например, 128x128:
 +
 
 +
[[Файл:border.png|right]]
 +
Общая ширина и высота картинки пазла задает игровое поле. Кроме этого есть поля ширина пазла и высота пазла, которые определяют размер центральной области картинки, которая разбивается на ячейки. Если эта область меньше размеров картинки, появится внешний бордюр, помогающий при сборке.
  
== Цикл жизни ==
+
== Игровые механики и режимы пазла ==
 +
*Ячейки пазла можно переставлять и вращать. По мере сбора пазла ячейки, оказывающиеся на своем месте, лишаются собственного бордюра и пазл постепенно проявляется  <br>
 +
*У пазла может быть внешний бордюр (часть исходного изображения), который не разрезается на части и помогает при сборке.
 +
* Пазл может быть увеличен и снова уменьшен<br>
 +
 
 +
Возможны две игровые механики пазла: <br>
 +
* обычная -  все ячейки есть на игровом поле<br>
 +
*  пятнашки - одной ячейки нет (аналог обычных пятнашек). <br>
 +
 
 +
'''''Замечание.''''' Чтобы корректно работала механика "пятнашки", в правилах нужно указать значение 1 для параметров "переставлять?" и "пятнашки". Если в "переставлять?" будет значение 0, то пазл будет запускаться с механикой "пятнашки", но уже в собранном виде.
 +
 
 +
Существует три уровня сложности сбора пазла с обычной механикой :
 +
* Легкий
 +
* Эксперт
 +
* Мастер
 +
Режим «Эксперт» отличается от режима «Легкий» количеством ячеек, на которые разбивается  исходное изображение (в режиме «Эксперт» их больше). <br>
 +
В режиме мастер столько же ячеек, сколько и в режиме эксперт, лишь добавлена возможность поворота ячеек по часовой стрелке вокруг своих центров (подробнее см. описание поворота в разделе параметры). Ячейка  пазла поворачивается при повторном клике на нее мышью. <br>
 +
 
 +
== Важное замечание ==
 +
В процессе сбора пазла на устройство сохраняются файлы, в которые записывается информация о ходе игры (какие пазлики на месте, а какие  - нет). Структура  имени файла, сохраняемого на устройство p<id_картинки>_<rows>_<cols>.puz  (например p107_6_8.puz) . <br>
 +
При повторном сборе пазла или повторном открытии загружается  информация из этих файлов, т.е. мы увидим то же состояние пазла, что и  перед выходом с этого экрана. Рекомендуется создать кнопку, дающую пользователю возможность начать игру с начала. . <br>
 +
 
 +
== Основные параметры пазла ==
 +
''(Курсивом в скобках указан id параметра, или состояния)''
 +
 
 +
'''Группа - внешний вид'''
 +
*'''Картинка''' ''(res)'' — это исходное изображение (графический ресурс) которое нужно собрать;
 +
*'''Колонок''' ''(cols)'' — количество колонок, на которые разбивается картинка;
 +
*'''Строчек''' ''(rows)'' — количество строчек (рядов), на которые разбивается картинка;
 +
*'''Сетка?''' ''(g)'' — отображение сетки:
 +
:'''1''' — отображается сетка после разделения картинки на ячейки,
 +
:'''0''' — сетка не отображается;
 +
*'''Пометка''' ''(alChk)'' — прозрачность выбранной ячейки пазла в диапазоне от нуля (полностью прозрачна, или невидима) до единицы (полностью не прозрачна, или видима);
 +
*'''Фон''' ''(alBkg)'' — прозрачность (от нуля до единицы) исходной картинки, отображаемой под пазлом в игровом поле;
 +
*'''Ширина пазла''' ''(vW)'' — размер ширины игрового поля в пикселях;
 +
*'''Высота пазла''' ''(vH)'' — размер высоты игрового поля в пикселях;
 +
*'''Маска''' ''(msk)'' — графический ресурс (изображение), которое накладывается на картинку (например текстура для придания изображению рельефности);
 +
*'''Рамка''' ''(fr)'' — графический ресурс для рамки по краям ячейки;
 +
*'''Рамка активной''' ''(fra)'' — графический ресурс для рамки вокруг активной ячейки;
 +
*'''Рамка соседей''' ''(frn)'' — графический ресурс для рамок вокруг соседних ячеек;
 +
*'''Флаер''' ''(fly)'' — флаер (подробнее см. объект редактора [http://ge.absolutist.com/index.php/Flyer «флаер»]), изображающий удачный ход. Он будет запущен над ячейкой которая встала на свое место.
 +
 
 +
 
 +
'''Группа - звуки''' ''(Звуковые ресурсы перетаскивается мышью из редактора ресурсов в поле параметра, которое должно находится в состоянии редактирования))''
 +
*'''Выбор''' ''(sDn)'' — звук при выборе ячейки;
 +
*'''Перестановка''' ''(sSh)'' — звук при перестановке ячеек;
 +
*'''На месте''' ''(sOk)'' — звук при становлении ячейки на нужное место.
 +
 
 +
 
 +
'''Группа - смешивать'''
 +
*'''Перестановку''' ''(alSwp)'' — при поочередном выборе ячеек кликом мыши для перестановки, возможны два варианта визуализации этого процесса:
 +
:'''1''' — ячейки остаются неподвижными, изменяются лишь их изображения по прозрачности (от нуля до единицы);
 +
:'''0''' — происходит перемещение ячеек (ячейки меняются местами);
 +
*'''Вращение''' ''(alRot)'' — визуализацию поворот ячейки в режиме «мастер» возможно осуществить двумя способами:
 +
:'''1''' — ячейка остается неподвижной, изменяется лишь ее изображение по прозрачности (от нуля до единицы);
 +
:'''0''' — происходит поворот ячейки.
 +
 
 +
 
 +
'''Группа - правила'''
 +
*'''Вращений''' ''(rot)'' — число возможных поворотов каждой ячейки пазла:
 +
:'''0''' — ячейки повернуть нельзя;
 +
:'''2''' — два варианта положения ячейки, или поворот на 180°;
 +
:'''4''' — четыре варианта положения ячейки, или поворот на 90°;
 +
*'''Переставлять?''' ''(swp)'' — переставление ячеек местами путем поочередного выбора их мышью:
 +
:'''0''' — нельзя,
 +
:'''1''' — можно;
 +
*'''Пятнашки''' ''(fif)'' — механика игры:
 +
:'''0''' — обычная механика игры,
 +
:'''1''' — играем в пятнашки (см. игровые механики и режимы пазла);
 +
*'''Соседи''' ''(nei)'' — какие ячейки можно переставлять:
 +
:'''0''' - переставлять можно любые ячейки,
 +
:'''1''' — переставлять можно только соседние элементы.
 +
*'''Таскать''' ''(is_drag)'' — ячейки смениваются только поочередными кликами или еще дропом одну на другую:
 +
:'''0''' - нельзя,
 +
:'''1''' — можно.
 +
 
 +
 
 +
'''Группа - времена этапов'''
 +
*'''Невидимости''' ''(tmBeg)'' — время паузы перед открытием пазла;
 +
*'''Открытия''' ''(tmOpn)'' — время открытия картинки;
 +
*'''Показа''' ''(tmStt)'' — время отображения картинки перед тем, как она разделится на ячейки и перемешается. Это необходимо для того, чтобы игрок успел ознакомиться с изображением, которое ему необходимо собрать;
 +
*'''Перемешивания''' ''(tmMix)'' — время визуализации процесса перемешивания ячеек пазла;
 +
*'''Финала''' ''(tmFin)'' — время показа картинки когда она собрана. Это необходимо для того, чтобы игрок смог насладиться результатом своих стараний, а также смог повнимательнее разглядеть картинку;
 +
*'''Закрытия''' ''(tmCls)'' — время закрытия пазла (переход в состояние (close) по прозрачности (alpha) от единицы до нуля).
 +
 
 +
 
 +
'''Группа - счетчики'''
 +
*'''Таймер''' ''(timer)'' — объект редактора [http://ge.absolutist.com/index.php/Timer «timer»] привязывается к пазлу и дает возможность собирать пазл определенное время, или использовать его для спортивного интереса, фиксируя время, за которое игрок соберет пазл. Таким образом игрок сможет с гордостью заявить своим друзьям, что он собрал пазл за такое-то время;
 +
*'''Лучшее время''' ''(tmBest)'' — самое короткое время, за которое игрок собрал пазл. Оно считается лучшим и фиксируется в опциях для использования в прогрессе (см. объект редактора «progress»);
 +
*'''Счетчик''' ''(count)'' — объект редактора [http://ge.absolutist.com/index.php/Counter «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>
 +
</pre>
 +
 +
В этом примере параметр «игра» записывается как «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)'' уменьшает возвращает пазлу исходные размеры.
  
* пазла невидима время tmBeg (состояние beg);
+
== Добавляемые параметры ==
* пазла проявляется в течении tmOpn по alpha от 0 до заданной в общих параметрах (состояние open);
 
* пазла показывает исходную картинку в течении tmStt (состояние start);
 
* происходит перемешивание, визуализация которого длится время tmMix (состояние mix);
 
* основной цикл игры; когда она заканчивается - переход в состояние final;
 
* в состоянии final показывается исходная картинка в течении времени tmFin.
 
* затем, картинка исчезает по alpha до 0 (состояние close)
 
* пазла невидима (состояние end)
 
  
== Процесс игры ==
 
  
Управление игрой завист от того, выбрана ли мода игры 15-шки или стрнадртная пазла. Кроме этого, по разному выглядит управление, в зависимости от того, разрешены ли вращения или нет.  
+
[[Файл:Paz add par.jpg|right]]
 +
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши.  
  
В стандартной (не 15-шковой моде), первый клик на ячейку её подсвечивает. Если затем идет клик на другую ячейку, то они переставляются местами. При повторном клике на первую ячейку - она поворачивается (если повороты разрешены). В противном случае с неё снимается пометка
+
[[Файл:+.png]] '''Изменить состояние объекта''' - После разбора перевести объект в новое состояние.
 +
*'''объект'''- после разбора перевести объект в состояние из следующего поля.  
 +
*'''состояние''' - новое состояние для объекта из предыдущего поля.  
  
В моде игры 15-шки клик на ячейку её перемещает, если рядом находится пустая (невидимая ячейка), иначе ничего не происходит.
+
[[Файл:+.png]] '''Изменить параметр объекта''' - После разбора изменить параметр объекта.
 +
*'''объект'''- после разбора этот объект меняет свой параметр.
 +
*'''свойство''' - параметр, который мы изменяем.
 +
*'''значение''' - новое значение параметра.
  
Если ячейка оказывается на своем месте, бордюр вокруг неё снимается и над ячейкой
+
[[Файл:+.png]] '''Хинт запущен: изменить состояние объекта''' - перевести объект в состояние, при начале хинта ( включить маску).
запускаются [[Flyer|флайеры]] (если они определены в настройках).  
+
*'''объект'''- после разбора перевести объект в состояние из следующего поля.
 +
*'''состояние''' - новое состояние для объекта из предыдущего поля.  
  
== Хинты ==
+
[[Файл:+.png]] '''Хинт завершён: изменить состояние объекта''' - перевести объект в состояние, после завершения хинта ( разблокировать маску).
 +
*'''объект'''- после разбора перевести объект в состояние из следующего поля.
 +
*'''состояние''' - новое состояние для объекта из предыдущего поля.
  
В игре есть два хинта: hint и swap. Первый проявляет исходную картинку, второй переставляет две ячейки местами, из которых, по крайней мере одна, окажется на своем месте. Опишем их подробнее.
+
== Возможные состояния объекта ==
  
Если кнопкой или машиной состояний перевести пазлу в состояние '''hint''', то она по альфа исчезнет (за время tmHnt1), а исходная картинка проявится. Затем, в течении tmHnt2, будет демонстрироваться исходная картинка, и за время tmHnt3 она по alpha исчезнет, а пазла снова перейдет в стадию игры.
+
:''(beg)'' — пауза перед состоянием ''(open)'';
 +
:''(open)'' — картинка появляется по прозрачности от нуля до единицы;
 +
:''(start)'' — начальный показ картинки;
 +
:''(mix)'' — перемещать ячейки;
 +
:''(scale)'' — масштабирование (изменение размера) пазла;
 +
:''(wait)'' — ожидание первого клика на ячейку;
 +
:''(check)'' — проверка собранности пазла, если собран — переход в состояние ''(final)'';
 +
:''(hint)'' — временное отображение картинки;
 +
:''(swap)'' — выделенная, или произвольная ячейка становится на свое место;
 +
:''(final)'' — показ картинки в конце игры;
 +
:''(close)'' — закрытие пазла по прозрачности;
 +
:''(end)'' — конец игры, пазл недоступен;
 +
:''(init)'' — повторная инициализация картинки, переход в состояние ''(beg)''.
  
Аналогично, состояние '''swap''' ставит одну из ячеек на свое место. Если при активировании этого хинта одна из ячеек была игроком выбрана, то на своое место перелетает она. Если выбранных ячеек нет, случайным образом выбирается одна из ячеек (которая стоит не на своем месте) и перемешается туда, где ей положено быть.
+
== Пример ==
 +
Объект «Пазл» в редакторе выглядит так:
  
== Настройки: внешний вид ==
+
[[Файл:01.JPG]]
  
Раздел настроек пазлы, определяющий её внешний вид выглядит следующим образом:
 
* ''внешний вид''
 
** '''картинка''' - графический ресурс картинки пазлы. Перетаскивается мышкой из редактора ресурсов (res)
 
** '''колонок''' - число колонок на которые разбивается пазла. (cols)
 
** '''строчек''' - число строчек на которые разбивается пазла. (rows)
 
** '''сетка?''' - если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет. (g)
 
** '''пометка''' - прозрачность помеченной ячеки (от 0-невидима, до 1-полностью непрозрачна). (alChk)
 
** '''фон''' - прозрачность исходной картинки, рисуемой под пазлой (если 0, то не рисуется). (alBkg)
 
** '''ширина пазлы''' - ширина области пазла в пикселах (число колонок * ширину ячейки) (vW)
 
** '''высота пазлы''' - высота области пазла в пикселах (число строк * высоту ячейки) (vH)
 
** '''рамка''' - графический ресурс для рамки вокруг ячейки (fr)
 
** '''флаер''' -  флаер изображающий удачного хода (fly)
 
* ''смешивать''
 
** '''перестановку''' - если 1, то при перестановке ячеек происходит смешивание по alpha, иначе ячейки перелетают. (alSwp)
 
** '''вращение''' - если 1, то при вращении ячейки происходит смешивание по alpha, иначе ячейка поворачивается. (alRot)
 
  
Для придания ячейкам объема служит графический ресурс '''рамка'''. Он может быть квадратной картинкой, прозрачной в центре и с серой полупрозрачной маской на краях. Её размер особой роли не играет. Например, 128x128. Например:
+
Картинку пазла можно задать, перетянув изображение из редактора ресурсов в поле «картинка»:
  
[[Файл:border.png|center]]
+
[[Файл:02.JPG]]
  
Общая ширина и высота картинки пазлы задает игровое поле. Кроме этого есть поля '''ширина пазлы''' и
 
'''высота пазлы''', которые определяют размер центральной области картинки, которая разрезается на ячейки. Эсли эта область меньше размеров картинки, появится внешний бордюр, помогающий при сборке.
 
  
== Настройки: правила ==
+
либо с помощью другого объекта (например кнопкой, или машиной):
  
* ''правила''
+
[[Файл:6.2.JPG]]
** '''вращений''' - число возможных углов поворота каждой ячейки пазлы (если 0 - то вращать ячейки нельзя). (rot)
 
** '''переставлять?''' - если 1, то можно переставлять ячейки местами. (swp)
 
** '''пятнашки''' - если 1, то играем по правилам пятнашек (одна ячека - нижняя левая, невидимая). (fif)
 
  
== Настройки: счетчики ==
 
  
* ''счетчики''
+
Выбор сложности игры делается отдельным экраном, на котором есть кнопки которые меняют параметры пазла:
** '''таймер''' - таймер, связанный с пазлой. Это объект [[timer]], который будет показывать время прошедшее с начала сбора пазлы (timer).
 
** '''лучшее время"''' - время, меньше которого считается лучшим (помечается в опциях для использования в прогрессе) (tmBest).
 
** '''счетчик''' - счетчик сделанных ходов. Это объект [[counter]] показывающий число перестановок ячеек с начала игры. (count)
 
** '''лучший счетчик''' - счет ходов, меньше которого считается лучшим (помечается в опциях для использования в прогрессе) (ctBest)
 
** '''показов хинт счетчик''' - [[counter|счетчик]] числа сделанных хинтов показа картинки. Может находиться рядом с кнопкой, вызывающей запуск хинта. (cntShw)
 
** '''перест. хинт счетчик''' - [[counter|счетчик]] cчетчик числа сделанных хинтов перестановки ячеек.
 
** '''игра''' - имя игры (раздела в опциях), который надо вычитать для получения начального значения прогресса (например, для отображения результатов) (game)
 
** '''уровень''' - Имя уровня (параметра в разделе игра - см.выше), который надо вычитать для получения начального значения прогресса (например, для отображения результатов). Для достжений запись будет равна [game.]level=1, для счетчика [game.]level+ct=число, для времени [game.]level+tm=время (level)
 
  
== Настройки: времена ==
+
[[Файл:6.3.JPG]]
  
* ''времена этапов''
 
** '''невидимости''' - начальная пауза перед откртыием пазлы. (tmBeg)
 
** '''открытия''' - время открытия исходной картинки (проявляется по alpha). (tmOpn)
 
** '''показа''' - время показа исходной картинки (после проявления). (tmStt)
 
** '''перемешивания''' - время визуализации процесса перемешивания ячеек. (tmMix)
 
** '''финала''' - время финального показа пазлы после её разбора, перед переходом к закрытию. (tmFin)
 
** '''закрытия''' - время закрытия пазлы (в состояниия close, исчезает по alpha). (tmCls)
 
* '''времена игры'''
 
** '''перестановки''' - аремя перестановки двух ячеек местами при их выборе. (tmSwp)
 
** '''поворота''' - время поворота ячейки при повторном клике на нее. (tmRot)
 
** '''паузы''' - время паузы перед началом перстановки или поворота. (tmShw)
 
** '''подсказки1''' - время за которое проявляется исходная картинка в состоянии hint. (tmHnt1)
 
** '''подсказки2''' - время в течении которого показывается после проявления исходная картинка в состоянии hint. (tmHnt2)
 
** '''подсказки3''' - время в течении которого закрывается после показа исходная картинка в состоянии hint. tmHnt3
 
  
== Настройки: остальные ==
+
Выбор сложности на устройстве:
  
* ''звуки''
+
[[Файл:6.3.1.JPG]]
** '''выбор''' - звуковой ресурс для проигрывания натжатия на ячейку. Перетаскивается мышкой из редактора ресурсов (sDn)
 
** '''перестановка''' - Звуковой ресурс для проигрывания перестановки ячеек (sSh)
 
** '''на месте''' - Звуковой ресурс для проигрывания события когда ячейки становится на свое место (sOk)
 
  
== Добавляемые разделы ==
 
  
* ''изменить состояние объекта''
+
И, наконец, пазл на устройстве выглядит примерно так:
** '''объект''' - после разбора перевести объект в состояние из следующего поля. (obj)
 
** '''состояние''' - новое состояние для объекта из предыдущего поля. (st)
 
* ''изменить параметр объекта''
 
** '''объект''' - после разбора этот объект меняет свой параметр. (obj)
 
** '''свойство''' - параметр, который мы изменяем. (par)
 
** '''значение''' - новое значение параметра. (val)
 
  
 +
[[Файл:6.4.JPG]]
 +
== Пример ==
  
== Состояния ==
+
[http://fs5.absolutist.com/files/wikisample/Puzzle.rar Download]
  
* '''beg''' - пауза перед состоянием open; пазла невидима
+
[[Category:Game mechanic]]
* '''open''' - появляется по alpha-каналу
 
* '''start''' - начальный показ картинки
 
* '''mix''' - перемешать ячейки
 
* '''wait1''' - ждем первого клика на ячейку
 
* '''check''' - проверка собранности картинки; если собрана - переход на final
 
* '''hint''' - временно показать исходную картинку, проявляясь по alpha
 
* '''final''' - перейти в показ исходной картинки
 
* '''close''' - исчезает по alpha-каналу
 
* '''end''' - недоступна, невидима
 
* '''init''' - повторная инициализация картинки; переход в beg
 

Текущая версия на 10:39, 29 июля 2019

Puzzle1.png

Пазл (puzzle) — встроенный объект редактора, имеющий определенную игровую механику, которая заключается в том, чтобы собрать необходимое изображение из прямоугольных ячеек (частей) за минимальное количество шагов (перемещений частей пазла).

Немного о графике

Для придания ячейкам объема служит графический ресурс рамка (собственный бордюр ячейки). Он может быть квадратной картинкой, прозрачной в центре и с серой полупрозрачной маской на краях. Её размер особой роли не играет. Например, 128x128:

Border.png

Общая ширина и высота картинки пазла задает игровое поле. Кроме этого есть поля ширина пазла и высота пазла, которые определяют размер центральной области картинки, которая разбивается на ячейки. Если эта область меньше размеров картинки, появится внешний бордюр, помогающий при сборке.

Игровые механики и режимы пазла

  • Ячейки пазла можно переставлять и вращать. По мере сбора пазла ячейки, оказывающиеся на своем месте, лишаются собственного бордюра и пазл постепенно проявляется
  • У пазла может быть внешний бордюр (часть исходного изображения), который не разрезается на части и помогает при сборке.
  • Пазл может быть увеличен и снова уменьшен

Возможны две игровые механики пазла:

  • обычная - все ячейки есть на игровом поле
  • пятнашки - одной ячейки нет (аналог обычных пятнашек).

Замечание. Чтобы корректно работала механика "пятнашки", в правилах нужно указать значение 1 для параметров "переставлять?" и "пятнашки". Если в "переставлять?" будет значение 0, то пазл будет запускаться с механикой "пятнашки", но уже в собранном виде.

Существует три уровня сложности сбора пазла с обычной механикой :

  • Легкий
  • Эксперт
  • Мастер

Режим «Эксперт» отличается от режима «Легкий» количеством ячеек, на которые разбивается исходное изображение (в режиме «Эксперт» их больше).
В режиме мастер столько же ячеек, сколько и в режиме эксперт, лишь добавлена возможность поворота ячеек по часовой стрелке вокруг своих центров (подробнее см. описание поворота в разделе параметры). Ячейка пазла поворачивается при повторном клике на нее мышью.

Важное замечание

В процессе сбора пазла на устройство сохраняются файлы, в которые записывается информация о ходе игры (какие пазлики на месте, а какие - нет). Структура имени файла, сохраняемого на устройство p<id_картинки>_<rows>_<cols>.puz (например p107_6_8.puz) .
При повторном сборе пазла или повторном открытии загружается информация из этих файлов, т.е. мы увидим то же состояние пазла, что и перед выходом с этого экрана. Рекомендуется создать кнопку, дающую пользователю возможность начать игру с начала. .

Основные параметры пазла

(Курсивом в скобках указан id параметра, или состояния)

Группа - внешний вид

  • Картинка (res) — это исходное изображение (графический ресурс) которое нужно собрать;
  • Колонок (cols) — количество колонок, на которые разбивается картинка;
  • Строчек (rows) — количество строчек (рядов), на которые разбивается картинка;
  • Сетка? (g) — отображение сетки:
1 — отображается сетка после разделения картинки на ячейки,
0 — сетка не отображается;
  • Пометка (alChk) — прозрачность выбранной ячейки пазла в диапазоне от нуля (полностью прозрачна, или невидима) до единицы (полностью не прозрачна, или видима);
  • Фон (alBkg) — прозрачность (от нуля до единицы) исходной картинки, отображаемой под пазлом в игровом поле;
  • Ширина пазла (vW) — размер ширины игрового поля в пикселях;
  • Высота пазла (vH) — размер высоты игрового поля в пикселях;
  • Маска (msk) — графический ресурс (изображение), которое накладывается на картинку (например текстура для придания изображению рельефности);
  • Рамка (fr) — графический ресурс для рамки по краям ячейки;
  • Рамка активной (fra) — графический ресурс для рамки вокруг активной ячейки;
  • Рамка соседей (frn) — графический ресурс для рамок вокруг соседних ячеек;
  • Флаер (fly) — флаер (подробнее см. объект редактора «флаер»), изображающий удачный ход. Он будет запущен над ячейкой которая встала на свое место.


Группа - звуки (Звуковые ресурсы перетаскивается мышью из редактора ресурсов в поле параметра, которое должно находится в состоянии редактирования))

  • Выбор (sDn) — звук при выборе ячейки;
  • Перестановка (sSh) — звук при перестановке ячеек;
  • На месте (sOk) — звук при становлении ячейки на нужное место.


Группа - смешивать

  • Перестановку (alSwp) — при поочередном выборе ячеек кликом мыши для перестановки, возможны два варианта визуализации этого процесса:
1 — ячейки остаются неподвижными, изменяются лишь их изображения по прозрачности (от нуля до единицы);
0 — происходит перемещение ячеек (ячейки меняются местами);
  • Вращение (alRot) — визуализацию поворот ячейки в режиме «мастер» возможно осуществить двумя способами:
1 — ячейка остается неподвижной, изменяется лишь ее изображение по прозрачности (от нуля до единицы);
0 — происходит поворот ячейки.


Группа - правила

  • Вращений (rot) — число возможных поворотов каждой ячейки пазла:
0 — ячейки повернуть нельзя;
2 — два варианта положения ячейки, или поворот на 180°;
4 — четыре варианта положения ячейки, или поворот на 90°;
  • Переставлять? (swp) — переставление ячеек местами путем поочередного выбора их мышью:
0 — нельзя,
1 — можно;
  • Пятнашки (fif) — механика игры:
0 — обычная механика игры,
1 — играем в пятнашки (см. игровые механики и режимы пазла);
  • Соседи (nei) — какие ячейки можно переставлять:
0 - переставлять можно любые ячейки,
1 — переставлять можно только соседние элементы.
  • Таскать (is_drag) — ячейки смениваются только поочередными кликами или еще дропом одну на другую:
0 - нельзя,
1 — можно.


Группа - времена этапов

  • Невидимости (tmBeg) — время паузы перед открытием пазла;
  • Открытия (tmOpn) — время открытия картинки;
  • Показа (tmStt) — время отображения картинки перед тем, как она разделится на ячейки и перемешается. Это необходимо для того, чтобы игрок успел ознакомиться с изображением, которое ему необходимо собрать;
  • Перемешивания (tmMix) — время визуализации процесса перемешивания ячеек пазла;
  • Финала (tmFin) — время показа картинки когда она собрана. Это необходимо для того, чтобы игрок смог насладиться результатом своих стараний, а также смог повнимательнее разглядеть картинку;
  • Закрытия (tmCls) — время закрытия пазла (переход в состояние (close) по прозрачности (alpha) от единицы до нуля).


Группа - счетчики

  • Таймер (timer) — объект редактора «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) уменьшает возвращает пазлу исходные размеры.

Добавляемые параметры

Paz add par.jpg

Меню выбора Добавляемые параметры к объектам активируется по правой кнопки мыши.

+.png Изменить состояние объекта - После разбора перевести объект в новое состояние.

  • объект- после разбора перевести объект в состояние из следующего поля.
  • состояние - новое состояние для объекта из предыдущего поля.

+.png Изменить параметр объекта - После разбора изменить параметр объекта.

  • объект- после разбора этот объект меняет свой параметр.
  • свойство - параметр, который мы изменяем.
  • значение - новое значение параметра.

+.png Хинт запущен: изменить состояние объекта - перевести объект в состояние, при начале хинта ( включить маску).

  • объект- после разбора перевести объект в состояние из следующего поля.
  • состояние - новое состояние для объекта из предыдущего поля.

+.png Хинт завершён: изменить состояние объекта - перевести объект в состояние, после завершения хинта ( разблокировать маску).

  • объект- после разбора перевести объект в состояние из следующего поля.
  • состояние - новое состояние для объекта из предыдущего поля.

Возможные состояния объекта

(beg) — пауза перед состоянием (open);
(open) — картинка появляется по прозрачности от нуля до единицы;
(start) — начальный показ картинки;
(mix) — перемещать ячейки;
(scale) — масштабирование (изменение размера) пазла;
(wait) — ожидание первого клика на ячейку;
(check) — проверка собранности пазла, если собран — переход в состояние (final);
(hint) — временное отображение картинки;
(swap) — выделенная, или произвольная ячейка становится на свое место;
(final) — показ картинки в конце игры;
(close) — закрытие пазла по прозрачности;
(end) — конец игры, пазл недоступен;
(init) — повторная инициализация картинки, переход в состояние (beg).

Пример

Объект «Пазл» в редакторе выглядит так:

01.JPG


Картинку пазла можно задать, перетянув изображение из редактора ресурсов в поле «картинка»:

02.JPG


либо с помощью другого объекта (например кнопкой, или машиной):

6.2.JPG


Выбор сложности игры делается отдельным экраном, на котором есть кнопки которые меняют параметры пазла:

6.3.JPG


Выбор сложности на устройстве:

6.3.1.JPG


И, наконец, пазл на устройстве выглядит примерно так:

6.4.JPG

Пример

Download