В Помощь Ведущему «Мафии»

Всем известна игра «Мафия».

Наверняка многие из хабра-сообщества в нее играли.

От игроков требуется умение логически мыслить, наблюдательность, владение речью и многое другое.

От ведущего требуется немного больше.

Давайте поговорим об этом более подробно.

Мой опыт игры и ведения «Мафии» не так уж велик – всего около двух лет. Однако я даже не могу сосчитать, сколько игр я сыграл.

Самым большим неудобством, с которым я столкнулся, было то, что мне не на чем было писать.

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

Ключевым моментом при выборе того, на чём собственно писать, была кроссплатформенность.

В результате родился скрипт для ведущего «Мафии» с использованием JavaScript и JQuery. Я далеко не перфекционист, поэтому сценарий тоже далек от совершенства, однако использую его вполне успешно.



Набор игроков



В помощь ведущему «Мафии»

Интерфейс выполнен в минимализме – ничего лишнего.

Используйте кнопку «+», чтобы добавить игроков, и кнопку «-», напротив игрока, чтобы удалить его.

Маленькие кнопки позволяют перемещать игроков вверх или вниз по списку, если игроки за столом вдруг решат поменяться местами.

Поскольку поначалу я даже не собирался никому рассказывать об этом скрипте, то «защита от дурака» практически нигде не предусмотрена.

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

Игра может начаться только в том случае, если в ней участвуют пять игроков; для запуска игры необходимо нажать кнопку «Начать игру».



Начинать



В помощь ведущему «Мафии»

Перед началом все редактируемые поля автоматически преобразуются в обычный текст. Это сделано для того, чтобы потом можно было просто сохранить страницу на диск, если вдруг захочется «сохранить протокол игры».

Всегда есть возможность вернуться в начало, например, если вдруг пришло еще пару человек, но игра толком не запустилась.

При нажатии кнопки «Перезапустить» вся информация об игровых действиях «забывается», остаются только имена и роли, которые можно снова изменить – игра возвращается в состояние до нажатия кнопки «Начать игру».



Потом наступает ночь, город засыпает и просыпается мафия.



В помощь ведущему «Мафии»

При нажатии на кнопки они загораются, поэтому ведущий может видеть, что он нажимает. Пока не наступит день (кнопка «День» не нажата), все можно изменить.

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

И арест потенциального преступника.

Или подвесить – как вам больше нравится.

Как я уже говорил выше, «защиты от дурака» практически нет; программа почти не имеет контроля над ведущим.

Таким образом, может случиться день без смерти и ночь без убийств.

Правда, обычно этого не происходит.

В помощь ведущему «Мафии»

Чтобы ведущему было легче ориентироваться в ситуации, если по договоренности между игроками выбывшие роли не объявлены, кнопки выбывших ролей блокируются, но не удаляются полностью.

В любую ночь ведущий может увидеть, какие роли ему следует «разбудить», даже если они исключены.



Конец игры

В этом сценарии нет понятия «игра окончена».

Он готов бесконечно обрабатывать нажатия кнопок «Ночь» и «День», и здесь все снова на совести ведущего.



Добавление

По сути, вся программа представляет собой html-страницу и скрипты, меняющие информацию.

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

Разумеется, необходимые скрипты должны находиться в той же папке, что и html-файл.



Что в планах

Добавьте еще кучу разных ролей.

Некоторым людям, например, не хватает адвоката или шерифа.

Добавьте в ситуацию расчеты, чтобы облегчить работу ведущего, например, когда игра должна быть завершена на 100%.

Добавьте настраиваемую «защиту от дурака», например, исключающую возможность дня без смертей.

Жду ваших дополнений и комментариев.



P.S.

Желающие могут скачать скрипт здесь .

На данный момент версия 1.2. Версия 1.2: Добавлена вкладка «Настройки», где можно загрузить другой стиль отображения элементов.

Строки конфигурации вынесены в отдельный файл config.js, поэтому их легче найти, если кто-то захочет что-то изменить… Файлы разложены по папкам - скрипты в js, стили - в css. Добавлена переменная $Debug, включающая режим отладки, и функция showDebugInfo, отображающая информацию в слое dDebug. Исправлена ошибка, возникавшая при изменении количества игроков.

Добавлена кнопка с таймером.

По умолчанию таймер установлен на три минуты.

Версия 1.1: Добавлены идеи и дизайн от Мефт'а : расположение кнопок, значки действий.

Интерфейс стал удобнее – кнопки управления перенесены вверх, а справочная информация вынесена отдельно.

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

Добавлена подсветка мафиозных линий.

Версия 1.0: Роли: Мафия, Босс мафии, Комиссар, Доктор, Бомбист, Красавица (Хозяйка), Вор, Маньяк, Бессмертный.

Теги: #игры #jQuery #JavaScript #программирование

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.