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

Всем известна игра «Мафия». Наверняка многие играли в неё. От игроков требуется умение логически мыслить, наблюдательность, речевые навыки и много чего ещё. От ведущего требуется намного больше. Об этом и поговорим поподробнее.

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

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

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

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

Интерфейс выполнен в минимализме – ничего лишнего. Кнопкой «+» добавляем игроков, кнопкой «-» напротив игрока – убираем его. Маленькие кнопочки позволяют переместить игроков вверх или вниз по списку, если игроки за столом вдруг решили поменяться местами.

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

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

 

Начало

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

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

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

 

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

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

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

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

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

Правда, обычно такого не бывает.

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

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

 


Конец игры

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

 

Дополнение

По сути вся программа – это html-страничка и скрипты, которые меняют информацию. Поскольку у меня не всегда есть возможность подключиться к Интернет, то всё работает локально – достаточно открыть в браузере html-файл. Разумеется, нужные скрипты должны лежать в той же папке, что и html-файл.

 

Что в планах

Добавить ещё кучу разных ролей. Кому-то, например, не хватает вора, адвоката, шерифа. Добавить просчёта ситуации, чтобы облегчить работу ведущего, например, когда игра должна 100% закончиться. Добавить-таки регулируемую «защиту от дурака», например, исключить возможность дня без смертей.

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

Заинтересованные личности могут скачать скрипт тут. На текущий момент версия 1.2.

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

Версия 1.1:
Добавлены идеи и оформление от Meft'а: расположение кнопок, значки действий.
Интерфейс сделан более удобным — кнопки управления перенесены вверх, справочная информация размещена отдельно.
Добавлена возможность автоматического назначения ролей в зависимости от количества игроков.
Добавлена подсветка строчек мафии.

Версия 1.0:
Роли: Мафия, Босс мафии, Комиссар, Доктор, Смертник, Красотка (Любовница), Вор, Маньяк, Бессмертный.
Исправлены ошибки, появляющиеся после перемещения игроков и после нажатия кнопки «Заново».