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

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Пример)
(Пример)
Строка 80: Строка 80:
 
[[Файл:Trivia pict db1.png|left|300px]]Возникает вопрос. От куда же Trivia берет содержимое новых вопросов и ответов на них. Для этого еще раз заглянем в папку с нашим проектом. Обратим внимание на файл с названием viewer и расширением .db (data base). Для просмотра его содержимого можно установить DB Browser for SQLite или любую похожую программу. С помощью этой же программы можно будет создавать свой вариант вопросов и ответов для игры "Кто хочет стать миллионером?".<br><br>
 
[[Файл:Trivia pict db1.png|left|300px]]Возникает вопрос. От куда же Trivia берет содержимое новых вопросов и ответов на них. Для этого еще раз заглянем в папку с нашим проектом. Обратим внимание на файл с названием viewer и расширением .db (data base). Для просмотра его содержимого можно установить DB Browser for SQLite или любую похожую программу. С помощью этой же программы можно будет создавать свой вариант вопросов и ответов для игры "Кто хочет стать миллионером?".<br><br>
 
Создадим свою базу данных с вопросами и ответами. Зайдем в DB Browser for SQLite откроем Файл -> Новая база данных или просто нажимаем Ctrl+N. В поле "Имя файла" указываем viewer.db. Жмем на кнопку "Создать таблицу", название у нее будет "GTrivia_Category". Эта таблица содержит два поля с ID категорий и уникальными названиями конкретных категорий. Подробнее можно видеть на рисунке.<br><br>
 
Создадим свою базу данных с вопросами и ответами. Зайдем в DB Browser for SQLite откроем Файл -> Новая база данных или просто нажимаем Ctrl+N. В поле "Имя файла" указываем viewer.db. Жмем на кнопку "Создать таблицу", название у нее будет "GTrivia_Category". Эта таблица содержит два поля с ID категорий и уникальными названиями конкретных категорий. Подробнее можно видеть на рисунке.<br><br>
[[Файл:Trivia pict db2.png|left|300px]]Обратите внимание на содержание полей таблицы.
+
[[Файл:Trivia pict db2.png|left|300px]]Обратите внимание на содержимое полей таблицы. Используйте те же названия, ту же последовательность полей. Следует учитывать типы данных (INT, TEXT). Для избегания ошибок заполнения лучше отметить необходимые поля, как UNIQUE, UTOINCREMENT, PRIMARY KEY. Это обеспечит автоматическое увеличение значений, где это необходимо и позволит не ошибиться в уникальности введенных параметров.
  
 
[[Category:Game mechanic]]
 
[[Category:Game mechanic]]

Версия 08:39, 26 ноября 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 - сбросить лайк на текущий вопрос, отправляется на сервер;

Пример

Trivia pict3.png

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

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

Trivia pict4.png

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

В случае верного ответа появляется кнопка next, нажав на которую попадаем в следующий вопрос. Она аналогична кнопке up, нажатой один раз. Кнопка cheat включает отображение варианта с верным ответом. При смене вопроса кнопками next, replace или up поле отобразит актуальный верный вариант.

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

Внизу экрана располагается два поля с информацией о заработанных на данный момент монетах и номере последнего правильно отвеченного вопроса. Данные поля актуальны и при использовании кнопкой up.

Рассмотрим подробнее связь между элементами проекта. Откроем свойства объекта 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) с помощью машин состояний определяют, как будет изменяться поле ответа, если он был верным или не верным. Здесь мы используем мигание зеленым для верного выбора и красным для ошибки.

Trivia pict5.png

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

Trivia pict db1.png

Возникает вопрос. От куда же Trivia берет содержимое новых вопросов и ответов на них. Для этого еще раз заглянем в папку с нашим проектом. Обратим внимание на файл с названием viewer и расширением .db (data base). Для просмотра его содержимого можно установить DB Browser for SQLite или любую похожую программу. С помощью этой же программы можно будет создавать свой вариант вопросов и ответов для игры "Кто хочет стать миллионером?".

Создадим свою базу данных с вопросами и ответами. Зайдем в DB Browser for SQLite откроем Файл -> Новая база данных или просто нажимаем Ctrl+N. В поле "Имя файла" указываем viewer.db. Жмем на кнопку "Создать таблицу", название у нее будет "GTrivia_Category". Эта таблица содержит два поля с ID категорий и уникальными названиями конкретных категорий. Подробнее можно видеть на рисунке.

Trivia pict db2.png

Обратите внимание на содержимое полей таблицы. Используйте те же названия, ту же последовательность полей. Следует учитывать типы данных (INT, TEXT). Для избегания ошибок заполнения лучше отметить необходимые поля, как UNIQUE, UTOINCREMENT, PRIMARY KEY. Это обеспечит автоматическое увеличение значений, где это необходимо и позволит не ошибиться в уникальности введенных параметров.