Викторина “Угадай флаг”

Создадим игру-викторину в которой игроку нужно правильно выбрать флаг загаданной страны. Варианты ответа выбираются случайным образом.

Начало работы

Открой заготовку проекта: угадай-флаг-шаблон.sb2. В файле уже есть спрайт Флаги с набором костюмов, каждый из которых представляет из себя флаг какой-либо страны. Также в проекте есть список флаги и заготовка скрипта, который заполняет список названиями стран. Обрати внимание на то, что номер страны в списке соответствует номеру костюма с её флагом. Так например, флаг Японии - первый костюм. В списке флаги Япония также будет располагаться на позиции с номером 1.

Выбери спрайт Флаги и перейди в закладку костюмы. В конце списка есть два костюма - Твой флаг 1 и Твой флаг 2. Вместо этих костюмов дорисуй ещё два флага стран на твой выбор и дай костюмам соответствующие имена.

Обрати внимание на скрипт который уже есть у спрайта Флаги. Сейчас после нажатия на флажок в список добавляются только восемь стран. Добавь ещё два блока, чтобы добавить к списку названия стран, флаги которых ты нарисовал.

Теперь создадим свой блок создать список флагов и перенесём туда все блоки. Готовый блок должен выглядеть так:

Вместо этих блоков по нажатию флажка должен срабатывать созданный нами блок создать список флагов:

Выбираем случайные флаги

Для каждого раунда викторины нам нужно выбрать 6 случайных флагов.

Создай список выбранные флаги:

Создай переменную номер флага:

Создай свой блок выбрать случайный флаг:

Добавь к созданному блоку скрипт который будет в задавать переменной номер флага случайное значение от одного до длины списка флаги. Для решения тебе понадобятся следующие блоки.

Добавь к блоку выбрать случайный флаг ещё один блок, с помощью которого в список выбранные флаги добавится название страны соответствующее случайно выбранному номеру:

В список выбранные флаги нам необходимо добавить 6 случайно выбранных стран. Измени главную программу, чтобы она выглядела следующим образом:

Нажми на флажок несколько раз, и проверь, заполняются ли список выбранные флаги названиями стран. Обрати внимание, что некоторые названия стран в этом списке повторяются, чего быть не должно.

К блоку выбрать случайный блок добавим ещё один блок, который будет удалять из списка флаги элемент который мы уже выбрали.

Нажми несколько раз на флажок, и убедись в том, что список выбранные флаги содержит только уникальные имена.

Теперь списки можно скрыть. Перейди в раздел Данные и убери галочки напротив имён списков.

Выбор правильного ответа

Теперь когда у нас есть список из вариантов ответа, необходимо выбрать из них тот, который будет правильным.

Создай переменную правильный ответ:

Теперь в эту переменную нужно записать случайное название страны из списка выбранные флаги. Измени главный скрипт, добавив к нему один блок:

Показ флагов

Участник викторины должен видеть варианты ответа. Для этого создадим свой блок клонировать флаги.

Покажем спрайт Флаги и переместим его в координаты (-170, 120):

После этого добавь цикл, который выполнялся бы 6 раз. Внутри цикла добавь блок который меняет костюм спрайта на последний элемент из списка выбранные флаги. Затем создаём клон этого спрайта. После этого добавь блок, который бы удалял последний элемент из списка выбранные флаги. Затем добавь блок, который изменит координату x на 110, чтобы перейти к позиции следующего флага.

Для решения тебе понадобятся следующие блоки:

Добавь блок клонировать флаги в конец основного скрипта:

Нажми на флажок, чтобы протестировать скрипт.

Обрати внимание, что флаги выходят за край экрана.

Исправим блок клонировать флаги. Внутрь цикла повторить добавь условие при котором, если в списке выбранные флаги осталось 3 элемента, то мы поменяем не только координату x но и координату y. После цикла добавь блок спрятаться.

Задаём вопрос

Составим скрипт, с помощью которого игроку будет задан вопрос.

В конце главного скрипта добавим блок который отправит сообщение задать вопрос:

Добавь на сцену новый спрайт, который будет ведущим твоей викторины:

Выбери этот спрайт и добавь к нему скрипт, который при получении сообщения задать вопрос заставит спрайт произнести в течении 2 секунд содержимое переменной правильный ответ.

Тебе понадобятся следующие блоки:

Проверяем ответ

После нажатия на один из флагов, необходимо определить был ли он правильным ответом на вопрос. Для проверки правильности ответа добавь этот скрипт к спрайту Флаги:

Теперь при выборе флага, спрайт будет сообщать о правильности выбора ответа.

Ведение счёта

Будет сохранять количество правильных ответов в переменную.

Создай переменную счёт:

Добавь к спрайту Флаги следующий скрипт:

В скрипт который начинается блоком когда спрайт нажат добавь блок, который будет увеличивать счёт на 1 если ответ был правильным:

Старт нового раунда

На данный момент викторина заканчивается после первого вопроса. Исправим это.

Добавь отправку сообщения начать раунд к одному из скриптов:

Теперь во втором скрипте, который начинается блоком Когда щелкнут по флажку замени этот блок на Когда я получу начать раунд:

Чтобы начать новый раунд, добавим в конец скрипта который отвечает за проверку ответа отправку сообщения начать раунд:

Нажми на зелёный флажок и ответь на один вопрос. В начале следующего раунда флаги располагаются неправильно:

Ошибка возникает потому что перед началом следующего раунда необходимо удалить клоны флага.

Добавь к скрипту который изменял последним отправку сообщения новый вопрос:

После этого добавь следующий скрипт:

Скрипт будет удалять клоны спрайта Флаги.

Игра готова. Протестируй её работу.

Идеи по улучшению игры

Вот как можно улучшить игру:

  1. Сделай количество вопросов конечным (например 10). После последнего вопросы покажи, на сколько вопросов был дан правильный ответ.
  2. Сохраняй наилучший результат в отдельную переменную.
  3. Добавь больше флагов, чтобы разнообразить игру.