Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Escape the Sheet - это небольшая игра в формате Excel, которую я собрал несколько лет назад, чтобы научить группу коллег более продвинутым навыкам работы с Excel, одновременно немного развлекаясь с викторинами и логическими головоломками, двумя вещами, которые я люблю!
Эта игра представляет собой комбинацию формул Excel, условного форматирования как для текущей ячейки, так и для значений, основанных на другой ячейке, и некоторых макросов VBA, чтобы немного усложнить код.
Шаг 1: концепция игры
Для написания игры вам действительно не нужен большой опыт программирования или дорогостоящее программное обеспечение, вот то, что вы можете сделать в excel.
Игра представляет собой небольшую 2-партерную игру, первый уровень представляет собой викторину.
В системе есть банк из 50 вопросов, хотя, если вы захотите, их может быть больше.
Чтобы устранить любую возможную двусмысленность с орфографией или соответствием регистра, на все вопросы есть числовые ответы.
Система случайным образом представит игроку 5 из этих вопросов, игрок может запросить новый набор вопросов.
Как только на 5 вопросов будут даны ответы, система сообщит игроку, что они не увенчались успехом, и попытается повторить попытку или откроет комнату 2.
Комната 2 - это логическая головоломка, в которой последовательность цветов также генерируется случайным образом, и игрок может восстановить ее в любое время. Каждый из цветов связан с числом 1-10, игрок должен использовать метод проб и ошибок / памяти, чтобы найти числа, которые соответствуют, и воспроизвести последовательность.
Шаг 2: установка
Первоначально я установил рабочую тетрадь с 4 пустыми листами.
Начиная с листа 3, я создал таблицу с заголовком «Вопрос» и «Ответ».
В столбце A с использованием автозаполнения вводятся номера 1-50, важно, чтобы вопросы были пронумерованы для процесса отбора.
Затем я просматриваю в Интернете 50 вопросов с числовыми ответами.
Теперь нам нужен способ импортировать эти вопросы на экран Комнаты 1 на листе 1.
Это делается с помощью функции ВПР, это позволяет нам использовать число в начале строки вопроса. Однако, если бы мы просто использовали 1–5 из листа «Комната 1», мы бы получили только первые 5 вопросов и в том же порядке. Здесь появляется лист 2, здесь 2 строки формул, первая использует функцию RANDBETWEEN, это позволяет пользователю ввести диапазон, между которым будет сгенерирована случайная запись. Проблема в том, что с таким маленьким диапазоном, как этот, высока вероятность того, что будут дубликаты, и это не сделает очень сложной викторину. Чтобы преодолеть это, есть второй столбец, который продвигает этот шаг дальше и удаляет дубликаты с помощью функций RANK. EQ и COUNTIF, они ранжируют значение по сравнению с остальной частью списка и подсчитывают, есть ли повтор значения в Полный список, эти значения складываются вместе, и это дает случайное и уникальное значение. Мы можем подтвердить это, скопировав список, затем вставив значения и отсортируя от наименьшего к наибольшему, это покажет все уникальные значения от 1 до 50.
Вернувшись в комнату 1, мы можем затем использовать ВПР, чтобы взять 1-е, 2-е, 3-е и т. Д. Значение из списка и найти его в листе вопросов как для вопроса, так и для ответа. Каждый раз, когда случайные числа регенерируются, на экране «Комната 1» появляется новый набор вопросов.
Excel настроен на автоматический расчет, это вызывает проблему с функцией СЛУЧАЙНА, потому что каждый раз, когда загружается страница, выполняется расчет и меняет порядок вопросов. Это можно настроить на покупку вручную, перейдя к формулам на ленте, затем к параметрам расчета и настройке вручную, мы позаботимся о расчетах позже.
Прежде чем мы закончим с этой страницей, мы скрываем столбец C (фактические ответы).
Шаг 3. Проверка ответов
Проверка ответов на самом деле довольно проста. Значения всех ожидаемых ответов суммируются в ячейке внизу столбца C в комнате 1, ответы игроков загружаются в столбец D и суммируются.
Сценарий VBA запрограммирован в виде кнопки для запуска вычислений и проверки ответов.
Чтобы добавить кнопку, перейдите к разработчику на ленте, добавьте кнопку с помощью Insert -> Button
Как только вы нарисуете кнопку, появится возможность добавить новый макрос. В данном случае я назвал это проверкой ответов
Все, что это делает, это запускает расчет (только для этого листа) и проверяет, совпадает ли сумма ожидаемых ответов с суммой ответов игроков. Если числа не совпадают, появляется окно сообщения, в котором предлагается повторить попытку, если они успешны, мы отображаем лист для комнаты 2.
Также есть условный формат, помещенный в ячейку B28 со стрелкой, предлагающей пользователю переместить вкладки.
Шаг 4. Получите разные вопросы
Чтобы получить новые вопросы для игрока, нам просто нужно повторно запустить вычисления как на листе 2 (лист случайных чисел), так и на листе комнаты 1, это заставляет VLOOKUP ссылаться на новый набор чисел, а также извлекать новые связанные вопросы. Этот фрагмент кода также очищает раздел ответов игроков.
Шаг 5: Комната 2
Комната 2 - это головоломка с логикой и памятью, пользователю представлена последовательность из 6 случайно сгенерированных цветов, здесь снова используется функция RANDBETWEEN с диапазоном от 1 до 10.
Существуют правила условного форматирования, которые в зависимости от числа в ячейке, цвет заливки и шрифта меняются в зависимости от значения.
Игрок должен ввести эти числа по порядку, а затем ввести проверку, нет никаких подсказок, какого цвета какое число, поэтому, когда они проверяют, они должны помнить, какой результат они получили для каждой записи.
Снова суммируются значения в ячейках ответов, также суммируются ответы игрока, и макрос запускает вычисление, заполняет цвета и проверяет результат. Это либо побуждает игрока попробовать еще раз, либо поздравляет его с победой.
Также есть новая кнопка последовательности, позволяющая игроку получать новые цвета, она запускает вычисление, но только для ячеек в строке 10, и очищает ответы игрока в строке 12.
Я попытался загрузить игру, но, поскольку это файл.xlsm, это запрещено, поэтому не стесняйтесь загружать копию отсюда, если у вас есть какие-либо вопросы, напишите мне сообщение.