Всем известна игра «Мафия». Наверняка многие из хабрасообщества играли в неё. От игроков требуется умение логически мыслить, наблюдательность, речевые навыки и много чего ещё. От ведущего требуется немного больше. Об этом и поговорим поподробнее.
Мой опыт игры и проведения «Мафии» не такой и большой – всего около двух лет. Однако, я даже не берусь подсчитать, сколько игр я провёл. Самое большое неудобство, с которым я сталкивался – не чем и не на чем писать. Поэтому мне пришла в голову мысль написать простенькую программку, чтобы проще было учитывать действия и не запариваться с рисованием линеек, кривым почерком и всём таким прочим.
Ключевым моментом в выборе на чём же, собственно, писать, была кроссплатформенность. В итоге родился скрипт для ведущего «Мафии» с применением JavaScript и JQuery. Я далеко не перфекционист, поэтому скрипт так же далёк от возможного совершенства, однако, я им пользуюсь и весьма успешно.
Набор игроков
Интерфейс выполнен в минимализме – ничего лишнего. Кнопкой «+» добавляем игроков, кнопкой «-» напротив игрока – убираем его. Маленькие кнопочки позволяют переместить игроков вверх или вниз по списку, если игроки за столом вдруг решили поменяться местами.
Поскольку поначалу я даже не собирался рассказывать об этом скрипте никому, то «защита от дурака» не предусмотрена практически нигде. Ведущий сам должен следить, чтобы в игре не было двух детективов или маньяков, например.
Игра может начаться только при наличии пяти игроков, для начала игры надо нажать кнопку «Начать игру».
Начало
Перед стартом все редактируемые поля автоматически превращаются в простой текст. Сделано это для того, чтобы впоследствии можно было просто сохранить страничку на диск, если вдруг захочется «сохранить протокол игры».
Всегда есть возможность вернуться к началу, например, если вдруг пришла ещё пара человек, а игра толком и не началась. При нажатии кнопки «Заново» вся информация об игровых действиях «забывается», остаются только имена и роли, которые можно снова изменить – игра возвращается в состояние до нажатия кнопки «Начать игру».
Затем наступает ночь, города засыпает и просыпается мафия…
При нажатии на кнопки они подсвечиваются, таким образом, ведущий видит, что он нажимает. Пока не наступил день (не нажата кнопка «День»), всё можно поменять.
Наступил день, ведущий сообщает печальные новости, затем происходят дневные события – обсуждение, выступление, голосование. И арест потенциального преступника. Или повешение – кому как больше нравится.
Как я уже говорил выше, «защиты от дурака» практически нет, программа почти никак не контролирует ведущего. Таким образом, может случиться день без смерти и ночь без убийств.
Правда, обычно такого не бывает.
Чтобы ведущему проще было ориентироваться в ситуации, если по соглашению между игроками выбывшие роли не объявляются, кнопки выбывших ролей блокируются, но не убираются совсем. В каждую ночь ведущий может видеть, какие роли он должен «пробудить», даже если они выбыли.
Конец игры
Для данного скрипта не существует понятия «конец игры». Он готов бесконечно обрабатывать нажатия кнопок «Ночь» и «День», тут снова всё на совести ведущего.
Дополнение
По сути вся программа – это html-страничка и скрипты, которые меняют информацию. Поскольку у меня не всегда есть возможность подключиться к Интернет, то всё работает локально – достаточно открыть в браузере html-файл. Разумеется, нужные скрипты должны лежать в той же папке, что и html-файл.
Что в планах
Добавить ещё кучу разных ролей. Кому-то, например, не хватает вора, адвоката, шерифа. Добавить просчёта ситуации, чтобы облегчить работу ведущего, например, когда игра должна 100% закончиться. Добавить-таки регулируемую «защиту от дурака», например, исключить возможность дня без смертей.
Жду ваших дополнений и комментариев.
На текущий момент версия 1.0, она знает такие роли: Мафия, Босс мафии (Крёстный отец), Детектив (Комиссар), Доктор, Смертник, Красотка (Любовница), Вор, Маньяк, Бессмертный.
Заинтересованные личности могут скачать скрипт тут.
Автор: avesnin
как называется сайт