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

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Пример)
(Пример)
Строка 76: Строка 76:
 
Поля ''questions_text'' и ''years_1'' (2, 3 и 4) не содержат текста непосредственно. Через них идет отображение текстовых ресурсов, передаваемых объекту ''Trivia''. Поля с индикаторами ответа (''indicate_answer1,2,3,4'') с помощью машин состояний определяют, как будет изменяться поле ответа, если он был верным или не верным. Здесь мы используем мигание зеленым для верного выбора и красным для ошибки.<br><br>
 
Поля ''questions_text'' и ''years_1'' (2, 3 и 4) не содержат текста непосредственно. Через них идет отображение текстовых ресурсов, передаваемых объекту ''Trivia''. Поля с индикаторами ответа (''indicate_answer1,2,3,4'') с помощью машин состояний определяют, как будет изменяться поле ответа, если он был верным или не верным. Здесь мы используем мигание зеленым для верного выбора и красным для ошибки.<br><br>
 
Если проверить несколько разных полей "индикатор для миллионера", то видно, что вопросы различаются по сложности и значению поля "монеты". Последними полями указаны "все отвечено" и "проигрыш". Здесь была использована одна небольшая машина состояний. Ее состояние ''win'' запускается в случае победы и активирует объект типа ''flyer'' (патикл, или летун), который создает эффект победного фейерверка. Состояние ''lose'' включится в случае неверного ответа. Откроем машину ''win_lose'' и посмотрим не ее состояния внимательно. Состояние ''lose'' изменяет состояние другой машины - ''side_panel'', которая управляет отображением прогресса. Через 4000 ms после поражения таблица с прогрессом и заработанными баллами становится красной.<br><br>
 
Если проверить несколько разных полей "индикатор для миллионера", то видно, что вопросы различаются по сложности и значению поля "монеты". Последними полями указаны "все отвечено" и "проигрыш". Здесь была использована одна небольшая машина состояний. Ее состояние ''win'' запускается в случае победы и активирует объект типа ''flyer'' (патикл, или летун), который создает эффект победного фейерверка. Состояние ''lose'' включится в случае неверного ответа. Откроем машину ''win_lose'' и посмотрим не ее состояния внимательно. Состояние ''lose'' изменяет состояние другой машины - ''side_panel'', которая управляет отображением прогресса. Через 4000 ms после поражения таблица с прогрессом и заработанными баллами становится красной.<br><br>
Возврат в состояние выбора категории и начала нового раунда происходит кнопкой ''reload''. На игровом экране она имеет вид красного крестика в правом верхнем углу.
+
Возврат в состояние выбора категории и начала нового раунда происходит кнопкой ''reload_btn'', запускающей машину ''reload''. На игровом экране она имеет вид красного крестика в правом верхнем углу.
  
  
 
[[Category:Game mechanic]]
 
[[Category:Game mechanic]]

Версия 08:03, 25 ноября 2015

Основные сведения

Trivia - объект, реализующий логику игр по типу "Кто хочет стать миллионером?".

Особенности

  • содержит поле для вопроса
  • содержит поля для 4-х ответов. Число этих полей изменять нельзя
  • может иметь связь с объектом типа economics
  • вопросам можно установить сложность


Параметры

Кроме стандартных параметров, свойственных всем объектам, Trivia имеет дополнительные поля для настройки.

Trivia pict.png
  • количество категорий (catNum) - указываем число категорий для вопросов. Примеры категорий: страны, животные, музыка.
  • вопрос (textQuest) - указываем текстовый объект , в котором будут отображаться вопросы.
  • ответ 1 текст (txtA1) - указываем текстовый объект для отображения ответа
  • ответ 2 текст, ответ 3 текст, ответ 4 текст (txtA2, txtA3, txtA4) - здесь размещены поля для текстовых объектов остальных ответов

Текстовые объекты для вопроса и ответов необходимы для визуализации подгружаемого текста. Сами они не содержат ссылок на текстовый редактор и текст в них для этих целей не прописывается (хотя можно внести вручную значения по умолчанию)

  • ответ 1 индикатор (objA1) - здесь указывается машина состояний для индикации верного или неверного ответа. Машина состояний отдельно создается в проекте, ей указывают состояния off, wrong, right (не обязательно называть их именно так, однако рекомендуется в целях унификации). Если сложность машины трудно уместить в эти состояния, то добавляются дополнительные. Здесь можно задать изменение цвета, прозрачности, масштаба для ответа, указать изменения других объектов.
  • ответ 2 индикатор, ответ 3 индикатор, ответ 4 индикатор (objA2, objA3, objA4) - аналогично для всех остальных ответов создаем и описываем собственные машины состояний
  • текущий вопрос (objCurrent) - машина состояний для индикации текущего вопроса
  • количество вопросов (qNum) - количество вопросов в раунде. Следует учитывать, что для каждого вопроса необходимо использовать "индикатор для миллионера", добавляемый правой кнопкой мыши в свойствах Trivia. Таким образом qNum не может превышать число "индикаторов для миллионера"
  • хранить последних (usedlistsize) - сколько последних заданных вопросов нужно хранить
  • current_question - номер последнего вопроса, записывается при выигрыше или проигрыше ( при проигрыше сбрасывается вниз до первой несгораемой суммы);
  • correct - номер правильного ответа для текущего вопроса ( начиная с 0);


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

Trivia pict2.png

+.png индикатор для миллионера (indicator) - используется для настройки свойств конкретного вопроса в дереве вопросов, имеет несколько настраиваемых параметров:

  • объект (obj) - здесь указывается машина с состояниями on и off, в которых настраиваются свойства отвеченных и не отвеченных вопросов
  • монеты (res1) - размер награды за правильный ответ
  • min сложность (min) - минимальная сложность вопроса
  • max сложность (max) - максимальная сложность вопроса

+.png все отвечено (nst_end)

  • объект (obj) - машина состояний, запускаемая в случае победы
  • состояние (st) - состояние, назначаемое машине

+.png проигрыш (nst_lose)

  • объект (obj) - машина состояний, запускаемая в случае поражения
  • состояние (st) - состояние, назначаемое машине



Состояния

Основные состояния:

choose_category - генерируем категорию ( объект _категория_ (catMachine) должна иметь состояния cat0,cat1 ...);
start_single - начать игру, передавать после выбора категории;
answer_1 - передаём при нажатии на первый ответ;
answer_2 - передаём при нажатии на второй ответ;
answer_3 - передаём при нажатии на третий ответ;
answer_4 - передаём при нажатии на четвёртый ответ;
replace - заменить один вопрос;
fiftyfifty - убрать два неправильных ответа ( у 'кнопок' должно быть состояние hide );
load - загрузить игру с последней несгораемой суммы;
question - сгенерить следующий вопрос ( после ответа на предыдущий);

Обратная связь ( важно - отправлять только перед переходом на новый вопрос или выходе из игры - не отправлять статистику по нажатию на кнопку, пользователь может раз 5-6 кликать like и dislike):

like - лайкнуть текущий вопрос, отправляется на сервер;
dislike - дизлайкнуть текущий вопрос, отправляется на сервер;
resetlike - сбросить лайк на текущий вопрос, отправляется на сервер;

Пример

Загрузим проект и откроем с помощью нашего редактора файл с именем project и типом документа seproj. Проект содержит всего лишь две сцены, одна из которых не имеет визуального представления и хранит объект типа options с настройками. Все взаимодействие с пользователем происходит через сцену Main_stg. Запустим ее и убедимся, что проект работает. Появилось колесо, предлагающее выбор категории. От выбранной категории будет зависеть тематика задаваемых вопросов.

Нажмем кнопку choose_category. После вращения колеса случайным образом выберется категория, ее название появится внизу. Вместе с надписью появится также кнопка play_category, которая отобразит номер предстоящей категории. Соглашаемся с выбором системы и нажимаем на кнопку. Открывается знакомый экран "кто хочет стать миллионером?" с вопросом и 4-мя ответами, слева показан прогресс игрока и заработанные монеты. Желтым определены обычные вопросы, а белым цветом выделены 3 вопроса, ответ на которые устанавливает несгораемую сумму.

Логика игры достаточно известна. Задается вопрос и предлагается выбрать лишь один из 4-х возможных ответов. Каждому вопросу соответствует своя стоимость - количество монет, которые можно получить за правильный ответ. Для простоты число подсказок ограничено. Есть подсказка 50/50, убирающая два неверных ответа. Дополнительно установлены кнопки с новым вопросом для той же стоимости или новым вопросом на шаг выше для отладки приложения. В реальной игре можно их убрать, либо наоборот - расширить за их счет функционал игры. Давая правильные ответы, игрок увеличивает свой заработок. Если же он делает ошибку, то остается ни с чем (если отвечал на вопросы от 1 до 5) или остается с последней заработанной несгораемой суммой.

Прогресс с информацией о том, сколько игрок заработал и на каком вопросе он сейчас находится, располагается в левой части экрана. Основой является таблица шириной в одну и высотой в 15 ячеек в соответствии с 15-ю вопросами. Вопросы, на которые еще не дан ответ, имеют более тусклый оттенок. По мере правильных ответов они становятся ярко окрашенными. Поскольку поле "текущий вопрос" в объекте Trivia мы оставили пустым, то в левой панели он не имеет индикации. Но можно добавить в это поле дополнительную машину состояний, чтобы различать будущие вопросы, пройденные и текущий.

Рассмотрим подробнее связь между элементами проекта. Откроем свойства объекта Trivia. В разделе "категории" используется машина category_set. Посмотрим на ее состояния. В начальном состоянии эта машина делает невидимой кнопку start_single, запускающую игру после выбора категории. Как только категория выбрана - запускается одно из 16-ти состояний category_set. Состояния похожи между собой. Они блокируют кнопку choose_category, присваивая ее видимости нулевое значение vis=0. Поскольку в Trivia указаны только 7 категорий, а на колесе их 16, то возможны повторы.

Поля questions_text и years_1 (2, 3 и 4) не содержат текста непосредственно. Через них идет отображение текстовых ресурсов, передаваемых объекту Trivia. Поля с индикаторами ответа (indicate_answer1,2,3,4) с помощью машин состояний определяют, как будет изменяться поле ответа, если он был верным или не верным. Здесь мы используем мигание зеленым для верного выбора и красным для ошибки.

Если проверить несколько разных полей "индикатор для миллионера", то видно, что вопросы различаются по сложности и значению поля "монеты". Последними полями указаны "все отвечено" и "проигрыш". Здесь была использована одна небольшая машина состояний. Ее состояние win запускается в случае победы и активирует объект типа flyer (патикл, или летун), который создает эффект победного фейерверка. Состояние lose включится в случае неверного ответа. Откроем машину win_lose и посмотрим не ее состояния внимательно. Состояние lose изменяет состояние другой машины - side_panel, которая управляет отображением прогресса. Через 4000 ms после поражения таблица с прогрессом и заработанными баллами становится красной.

Возврат в состояние выбора категории и начала нового раунда происходит кнопкой reload_btn, запускающей машину reload. На игровом экране она имеет вид красного крестика в правом верхнем углу.