<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.appsalutecreator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rprotsenko</id>
	<title>wiki.appsalutecreator.com - Вклад участника [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.appsalutecreator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rprotsenko"/>
	<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Rprotsenko"/>
	<updated>2026-10-17T05:35:13Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.31.15</generator>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10149</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10149"/>
		<updated>2023-10-13T14:49:12Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы комбо */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10148</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10148"/>
		<updated>2023-10-13T14:48:28Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы комбо */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10147</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10147"/>
		<updated>2023-10-13T14:47:58Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы комбо */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10146</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10146"/>
		<updated>2023-10-13T14:47:23Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы комбо */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10145</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10145"/>
		<updated>2023-10-13T14:46:58Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка отображения окна при победе/поражении */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10144</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10144"/>
		<updated>2023-10-13T14:43:19Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка отображения окна при победе/поражении */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10143</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10143"/>
		<updated>2023-10-13T14:42:45Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка отображения окна при победе/поражении */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10142</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10142"/>
		<updated>2023-10-13T14:42:02Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка отображения окна при победе/поражении */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10141</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10141"/>
		<updated>2023-10-13T14:41:27Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка звёзд */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game возможно нужно будет дописать p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Star_accuracy.png&amp;diff=10140</id>
		<title>Файл:Star accuracy.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Star_accuracy.png&amp;diff=10140"/>
		<updated>2023-10-13T14:40:25Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Star accuracy.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Star_accuracy.png&amp;diff=10139</id>
		<title>Файл:Star accuracy.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Star_accuracy.png&amp;diff=10139"/>
		<updated>2023-10-13T14:40:05Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Star accuracy.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Star_accuracy.png&amp;diff=10138</id>
		<title>Файл:Star accuracy.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Star_accuracy.png&amp;diff=10138"/>
		<updated>2023-10-13T14:39:28Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Star accuracy.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10137</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10137"/>
		<updated>2023-10-13T14:38:52Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка звёзд */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно. Обратите внимание, что при вызове полей счетчиков мы перед last_game пишем p0, потому-что у нас очки сохраняются локально, и p0 - это имя пользователя. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10136</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10136"/>
		<updated>2023-10-13T14:17:29Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы подсчета очков */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
     [[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10135</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10135"/>
		<updated>2023-10-13T14:16:44Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы подсчета очков */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]][[Файл:Lesson7_timer_params_.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_timer_params_.png&amp;diff=10134</id>
		<title>Файл:Lesson7 timer params .png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_timer_params_.png&amp;diff=10134"/>
		<updated>2023-10-13T14:16:38Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Lesson7 timer params .png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params_.png&amp;diff=10133</id>
		<title>Файл:Lesson7 hiddenlist params .png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params_.png&amp;diff=10133"/>
		<updated>2023-10-13T14:14:25Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Lesson7 hiddenlist params .png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10132</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10132"/>
		<updated>2023-10-13T14:11:24Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка HiddenList */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10131</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10131"/>
		<updated>2023-10-13T14:11:06Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка HiddenList */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [Файл:Lesson7_hiddenlist_params_.png|260px|right]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10130</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10130"/>
		<updated>2023-10-13T14:09:27Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка HiddenList */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params_.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_timer_params_.png&amp;diff=10129</id>
		<title>Файл:Lesson7 timer params .png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_timer_params_.png&amp;diff=10129"/>
		<updated>2023-10-13T14:08:34Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params_.png&amp;diff=10128</id>
		<title>Файл:Lesson7 hiddenlist params .png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params_.png&amp;diff=10128"/>
		<updated>2023-10-13T14:08:03Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10127</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10127"/>
		<updated>2023-10-13T13:55:14Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы комбо */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Важно указать в нем тип линейный для коректной работы. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10126</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10126"/>
		<updated>2023-10-13T13:54:05Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы подсчета очков */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;Настройки таймера:&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;[[Файл:Lesson7_timer_params.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10125</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10125"/>
		<updated>2023-10-13T13:52:58Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы подсчета очков */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Настройки таймера:&lt;br /&gt;
Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&lt;br /&gt;
[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10124</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10124"/>
		<updated>2023-10-13T13:52:19Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка системы подсчета очков */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Настройки таймера:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
Важно! Для правильного отображения таймера нужно правильно указать ресурсы, как и на изображении, которые будут &lt;br /&gt;
отрисовываться. Также на таймере будем выводить и количество минут, для лучшей асоциации с часами.&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10123</id>
		<title>Файл:Lesson7 hiddenlist params.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10123"/>
		<updated>2023-10-13T13:50:29Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Lesson7 hiddenlist params.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10122</id>
		<title>Файл:Lesson7 hiddenlist params.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10122"/>
		<updated>2023-10-13T13:49:52Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Lesson7 hiddenlist params.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10121</id>
		<title>Файл:Lesson7 hiddenlist params.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10121"/>
		<updated>2023-10-13T13:48:39Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Lesson7 hiddenlist params.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10120</id>
		<title>Файл:Lesson7 hiddenlist params.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10120"/>
		<updated>2023-10-13T13:47:02Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Lesson7 hiddenlist params.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10119</id>
		<title>Файл:Lesson7 hiddenlist params.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Lesson7_hiddenlist_params.png&amp;diff=10119"/>
		<updated>2023-10-13T13:45:16Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: Rprotsenko загрузил новую версию Файл:Lesson7 hiddenlist params.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10118</id>
		<title>Создание игры «Hidden Object Game»</title>
		<link rel="alternate" type="text/html" href="https://wiki.appsalutecreator.com/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B_%C2%ABHidden_Object_Game%C2%BB&amp;diff=10118"/>
		<updated>2023-10-13T13:38:27Z</updated>

		<summary type="html">&lt;p&gt;Rprotsenko: /* Настройка HiddenList */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
'''Цель:''' &lt;br /&gt;
* Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.&lt;br /&gt;
 &lt;br /&gt;
'''Задачи:''' &lt;br /&gt;
* Создать уровень игры содержащей 15 поисковых объектов. &lt;br /&gt;
* Обеспечить размещение 5 объектов для поиска.&lt;br /&gt;
*  Создать окно, информирующее о победе или поражении, с указанием очков полученных и звёзд.&lt;br /&gt;
&lt;br /&gt;
== Создание экрана и сцены в игровом проекте ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Как и в предыдущих уроках первым делом создадим новый [[Screen|экран]] Lesson_7 для создаваемой игры и игровую [[Scene|сцену]] stg_main.&lt;br /&gt;
На созданной сцене добавим из редактора ресурсов фон (файл bg), 10 изображений из папки hiddenobj на выбор, которые спрячем в «подходящих» местах и изменим тип с [[Image]] на '''Game mechanic''' – [[HiddenObject]].&lt;br /&gt;
Для того, чтобы при перемещении фона позиции «спрятанных» объектов не менялись их можно добавить внутрь объекта.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_bg_with_hiddens.png|400px]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_hidden_objects.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Если вы добавляете в ресурсы изображение с прозрачностью вокруг объекта, то в редакторе оно будет обрезано, но, при размещении объекта на сцене, прозрачность будет учитываться. Благодаря этому есть возможность размещения объектов на сцене обычным перетаскиванием, если художник позаботился о нас (''подготовил изображения для того, чтобы они располагались в местах для «прятанья»'').&lt;br /&gt;
[[Файл:Lesson7_resize_template.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
После добавления хидденов необходимо подготовить для них текстовое описание. Это делается в текстовом редакторе ([[Интерфейс_TextEditor|TextEditor]]).&lt;br /&gt;
Создадим в нём папку Lesson_7 и по одной записи для каждого объекта. Также добавим для каждого объекта графическое отображение. Для этого нажмём кнопку Start [[Интерфейс_ResourceEditor|Res Editor]], перетащим соответствующее изображение в поле Image viewer и установим тип иконки Icon 1 (''правой кнопкой мыши на изображение'').&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_text_editor.png|350px|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Реализация механики HOG ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для базовой реализации механики HOG необходимо использовать комбинацию из компонентов [[HiddenObject]], [[HiddenList]] и [[Table]].&lt;br /&gt;
[[HiddenObject]] у нас уже есть – это наши «спрятанные» хиддены, а вот [[HiddenList]] и Table создадим с помощью контекстного меню (Создать объект после текущего...).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenList ===&lt;br /&gt;
[[HiddenList]] – это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.&lt;br /&gt;
Каждый поисковый объект на сцене связывают со списком. Объектов в списке может быть больше, чем будет показано в данной игровой сессии (поле &amp;quot;объектов&amp;quot;). В таком случае они будут выбраны случайным образом. Запоминаются те из них, по которым произошёл клик (''увеличивается счетчик их кликов''). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле &amp;quot;количество&amp;quot;.&lt;br /&gt;
[[HiddenList]] определяет основные параметры для настройки [[HiddenObject]] (''например, скорость полета''). В дальнейшем, при необходимости, эти же параметры можно добавить в [[HiddenObject]], чтобы для данного объекта они &amp;quot;перебивали&amp;quot; общие значения для всех.&lt;br /&gt;
Зададим основные параметры, такие как: &lt;br /&gt;
* num (поле «объектов») – максимальное количество объектов, участвующие в поиске.&lt;br /&gt;
* table (поле «таблица») – идентификатор объекта [[Table]]. Необходим для вывода списка объектов для поиска.&lt;br /&gt;
* counter (поле «счетчик») - счетчик, который записывает количество найденных объектов.&lt;br /&gt;
* timer (поле «таймер (осталось)») - таймер, который показывает, сколько времени осталось.&lt;br /&gt;
&lt;br /&gt;
Также для коректной работы необходимо настроить параметры распределения. Для этого включим равномерное распределение, и выключим итерацеонное. Также необходимо включить новейшую адаптивность для того, чтобы всьо заработало.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenlist_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Настройка Table ===&lt;br /&gt;
Объект [[Table]] предназначен для вывода данных в табличном виде. [[HiddenList]] использует его для вывода списка хидденов, которые необходимо найти. Настроим таблицу для вывода элементов в формате 3 на 3, указав в графе «таблица» параметры подходящие параметры, а также зададим ширину, высоту (''объект с нулевыми размерами не отображается'') и позицию таблицы. Учитывайте, что таблица может перекрывать искомые объекты, тем самым создавая трудности для игрока.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_table_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
=== Настройка HiddenObject ===&lt;br /&gt;
Как было сказано ранее, [[HiddenObject]] это наш «спрятанный» объект, который, возможно, предстоит найти. Для его настройки укажем следующие параметры:&lt;br /&gt;
* txtID (поле «текстID») – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора; &lt;br /&gt;
* list (поле «list») – ссылка на [[HiddenList]], к которому будет подключен объект, для обеспечения связи между ними; &lt;br /&gt;
Параметр list можно задать выделив несколько [[HiddenObject]].&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
    [[Файл:Lesson7_hiddenobj_params.png|260px|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
'''Внимание!''' [[HiddenList]] не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система – id игры). &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавить 5 новых «спрятанных» объекта.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Установить для поиска 7 объектов вместо 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3. Сделайте так чтобы объекты быстро улетали(исчезали) со сцены.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4. Создайте аналогичный экран Lesson_7_1, на котором установите время игры в 20 секунд, паузу 2 секунды и переход на экран Lesson_7.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка системы подсчета очков ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для начала настройки системы подсчёта очков создадим новую сцену stg_interface, на которой будет отображаться интерфейс пользователя.&lt;br /&gt;
Первым делом перетащим подложку для таблицы из редактора ресурсов (файл down) и внутрь него поместим объект [[Table]], после чего добавим два объекта типа [[Counter]] (счётчик) и один [[Timer]] (таймер).&lt;br /&gt;
Счётчик score отвечает за вывод информации о очках игрока, count – о количестве найденных объектов, а таймер – за оставшееся время игры.&lt;br /&gt;
Обратим внимание что ни таймер ни счётчики ничего не показывают. Это связано с тем, что для них не настроен ни графический ресурс, ни шрифты (''настраивается в поле «шрифт» и работает если не указан графический ресурс'').&lt;br /&gt;
Создайте в редакторе ресурсов анимацию и укажите её в поле res («графика – цифры нормальные» для таймера) каждого из созданных объектов. Для анимации скачайте изображения ниже, либо найдите в интернете. Кроме этого для значений счётчика можно установить минимальное (поле «min») и максимальное (поле «max») значения.&lt;br /&gt;
[[Файл:Lesson7_timer_counter.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 ‎[[Файл:Count 0.png]] ‎[[Файл:Count 1.png]] [[Файл:Count 2.png]] [[Файл:Count 3.png]] ‎[[Файл:Count 4.png]] [[Файл:Count 5.png]] ‎[[Файл:Count 6.png]] ‎[[Файл:Count 7.png]] ‎‎[[Файл:Count 8.png]] ‎[[Файл:Count 9.png]] ‎[[‎Файл:Coun (5).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После указания ресурса и размещения объектов на сцене свяжем их с [[HiddenList]]. Не забудем указать количество очков за найденный объект в поле «очковая система – очки», а также, обязательно, id игры (''например, hidden'').&lt;br /&gt;
Кроме этого установим у таймера в поле «значение» тоже число что и у [[HiddenList]] в поле «время – игры» так как данные объекты считают время независимо, что может привести к случаям когда игра закончилась раньше или позже чем показал таймер.&lt;br /&gt;
&lt;br /&gt;
Настройки хидденлиста: &lt;br /&gt;
&lt;br /&gt;
[[Файл:hiddenlist1.png]]&lt;br /&gt;
[[Файл:hiddenlist2.png]]&lt;br /&gt;
[[Файл:hiddenlist3.png]]&lt;br /&gt;
[[Файл:hiddenlist4.png]]&lt;br /&gt;
[[Файл:hiddenlist5.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Настройки таймера:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_timer_params.png]]&lt;br /&gt;
&lt;br /&gt;
== Настройка системы комбо ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для работы системы комбо нам понадобится объект [[Progress]]. Создадим его и настроим следующим образом (''не забываем указать размер объекта''):&lt;br /&gt;
&lt;br /&gt;
[[Файл:progress_params.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для графики (заполнитель) можно использовать следующее изображение:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[Файл:666.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Созданный [[Progress]] необходимо связать с объектом [[HiddenList]]. Так как система комбо связана с системой очков, то и искать соответствующие поля мы будем в «очковой системе» и, неожиданно, в «звёздах». &lt;br /&gt;
В поле очки 3.0 выбираем аналогичное значение. Данное поле необходимо для работы системы комбо.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_progress_score_1.png|right]]&lt;br /&gt;
[[Файл:Lesson7_progress_score_2.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Кроме поощрения игрока дополнительными очками существует также и способ «наказать» его за ошибочные клики (звёзды – лимит ложных кликов), после которых игровая сцена должна блокироваться. Для этого существует так называемая машина-блокатор.&lt;br /&gt;
Создадим её и настроим следующим образом:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_err_click_blocker.png]]&lt;br /&gt;
&lt;br /&gt;
а для того, чтобы машина именно блокировала сцену создадим внутри неё объект типа [[Rectangle]] закрывающий всю игровую сцену как маска (''высота и ширина объекта должна быть равна размерам сцены'').&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Машина-блокатор указывается в «очковой системе» объекта [[HiddenList]].&lt;br /&gt;
[[Файл:Lesson7_sel_blocker.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание окна с результатами игры ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для создания окна вывода результатов создадим новую сцену stg_win_lose, на которой создадим [[Machine|машину состояний]] win.&lt;br /&gt;
Данная машина состояний будет управлять инициализацией данных окна, а также его отображение и закрытием.&lt;br /&gt;
Внутри машины создадим объекты с примерно следующей структурой:&lt;br /&gt;
* lock – [[rectangle]]-маска для блокировки сцены игры. Должен иметь размер больший или равный сцене.&lt;br /&gt;
* window – [[rectangle]] для фона окна.&lt;br /&gt;
* *_points – [[Counter|счётчики]] для очков.&lt;br /&gt;
* *_pts_lbl – [[Text|текстовое описание]] для счётчиков.&lt;br /&gt;
* Star1 – [[Machine|машина состояний]] для звезды.&lt;br /&gt;
* close_btn – [[Button|кнопка]] закрытия окна.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_result_wnd_struct.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для всех счётчиков установим в качестве графического ресурса анимацию чисел созданную ранее, а для окна window и кнопки закрытия добавим новые. Можно использовать ресурсы представленные ниже:&lt;br /&gt;
[[Файл:Lesson7_result_rect_params.png|right]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ‎[[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]]&lt;br /&gt;
 [[Файл:Lesson7_close_btn.png]][[Файл:00010.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда у нас есть видимое окно для вывода сообщения, расположим текст и счётчики таким образом, чтобы они соответствовали друг другу, а также установим одну звезду. Внешний вид текстовых полей и счётчиков красиво настроим самостоятельно:) (''попробуйте изменить значения в полях и посмотрите на что они влияют'')&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_result_wnd_template.png|450px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка счётчиков ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Теперь, когда всё на своих местах, настроим счётчики и текстовые поля. Объект [[HiddenList]] сохраняет в объект [[Options]] некоторые данные о игре. Для того чтобы счётчик мог воспользоваться ими (''и не только счётчик'') необходимо в поле “Уровень” каждого счётчика указать строку вида [game.]level.param&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для нас важны следующие строки:&lt;br /&gt;
* last_game.score30_total – Игровые очки. (счётчик game_points)&lt;br /&gt;
* last_game.score30_time -  Бонус за время. (time_points)&lt;br /&gt;
* last_game.score30_accuracy -  Бонус за аккуратность (accuracy_points)&lt;br /&gt;
* last_game.ecmbRowMax -  Бонус за комбо (combo_points)&lt;br /&gt;
* last_game.score30_level -  Очки за уровень (game_points)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Укажите данные строки в соответствующих полях, а также описание (''игровые очки и т.д.'') в текстовых полях.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка звёзд ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Создадим в имеющейся звезде два состояния init и check, а затем скопируем её чтобы получилось ещё две звезды, каждую из которых настроим отдельно.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Star1 (''Показать в любом случае'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:Lesson7_star1.png]]&lt;br /&gt;
&lt;br /&gt;
Star2 (''Если очки за аккуратность не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_accuracy.png]]&lt;br /&gt;
&lt;br /&gt;
Star3 (''Если очки за время не равны 0'')&lt;br /&gt;
&lt;br /&gt;
[[Файл:star_time.png]]&lt;br /&gt;
&lt;br /&gt;
=== Настройка машины win ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Как было сказано ранее машина win отвечает за открытие/закрытие окна, а также за инициализацию всех данных. Благодаря тому что все компоненты окна расположены внутри машины для отображения/скрытия его достаточно изменить прозрачность(al) машины.&lt;br /&gt;
Настроим машину следующим образом:&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex;&amp;quot;&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_mch_states.png|700px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Для того, чтобы машина закрывалась добавим у кнопки close_btn свойство «изменить состояние объекта» с значениями: объект – win, состояние – close.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Настройка отображения окна при победе/поражении ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
Для настройки отображения окна первым делом стоит подумать какие условия победы/поражения, а затем установить что: победа – игрок нашёл все объекты, поражение – истёк таймер.&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div&amp;gt;&lt;br /&gt;
[[Файл:Lesson7_win_state.png|right]]&lt;br /&gt;
[[Файл:Lesson7_lose_state.png|right]]&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; text-align: justify;&amp;quot;&amp;gt;&lt;br /&gt;
Настройка вывода окна при победе настраивается в [[HiddenList]] путём добавления «разбор: изменить состояние объекта», а  окна поражения в [[Timer]] – «время истекло: изменить состояние объекта».&lt;br /&gt;
Проверяем на работоспособность игру.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:final_result.png]]&lt;br /&gt;
&lt;br /&gt;
== Упражнения ==&lt;br /&gt;
&amp;lt;p&amp;gt;1. Добавьте на сцену победы/поражения текстовое поле, которое будет сообщать «Вы победили!» или «Вы проиграли!» для каждого из игровых исходов.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2. Сделайте так, чтобы при закрытии окна победы/поражения игра начиналась заново.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;  &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot;|[[Редактор текстовых ресурсов|Урок 6]] &amp;lt;&amp;lt; &lt;br /&gt;
 ! width=&amp;quot;20%&amp;quot;|[[Learning|Оглавление]] &lt;br /&gt;
 | width=&amp;quot;40%&amp;quot; align=&amp;quot;right&amp;quot;| &amp;gt;&amp;gt; [[Настройка миниигр|Урок 8]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Learning]]&lt;/div&gt;</summary>
		<author><name>Rprotsenko</name></author>
		
	</entry>
</feed>