Как стать автором
Обновить

Комментарии 17

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

P.S. Хотя на Хабре обычно рассказывают не о результате, а о процессе создания и о трудностях, с которыми столкнулись.
Как раз трудностей почти и не возникло. Главное — правильно построить алгоритм.
Решил рассказать исключительно из-за того, что никакого подобного инструмента на Хабре не нашёл.
Честно говоря, не понял главного — чем эта «программка» так хороша и чем она облегчает процесс игры для ведущего? сколько раз не играл в мафию, проблем с запоминанием кого убили не возьникало. Правда, тут преведено несколько ролей с которыми я не знаком. Можно ссылочку на правила такой игры, пожалуйста?
Я тоже много раз вёл игру «по памяти», тоже не возникало особых проблем с запоминанием. Однако, у людей довольно часто бывает внезапное желание сыграть в «Мафию» в самых неожиданных местах.

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

На счёт ролей можно посмотреть тут. Там вообще куча их описана.
После того, как поиграл в Мафию онлайн (sc2mafia, форумная мафия), играть в реале немного скучно.
Некоторые роли, доступные только в онлайне (Mass Murderer, Arsonist, Judge...) вносят дополнительные элементы в игру.
Некоторые роли, в реале обычно не используемые (Jester, Executioner, ...) вообще шикарны в плане усложнения игры городу.
Думаю, с помощью такого ПО можно было бы упростить проведение игры с большим набором ролей, хотя некоторые все равно не удастся реализовать.
К сожалению, вики на этом сайте не функционирует или просто надо быть залогиненым, чтобы её нормально читать.
Хотелось бы почитать про указанные роли — что они делают?
Вики там давно мертва. Это custom game для StarCraft II (использует его движок)

Суть указанных ролей:
Jester — его цель (при выполнении которой он побеждает независимо от дальнейших событий) — чтобы его линчевал город. Если город его линчует, то один из голосовавших «guilty» (виновен) последующей ночью умирает (случайный).
Executioner — его цель — дожить до момента, когда его цель линчуют. Выживать после выполнения цели ему не обязательно. Если его цель убивают ночью — он превращается в Jester. Для провокации линча своей цели может делать все что угодно (утверждать, что он шериф и т.п.)
Mass Murderer — вариация Serial Killer (маньяка). Он выбирает ночью целью не игрока, а его дом. Все, кто посещают этот дом ночью, умирают от его руки. Игрок, никого ночью не посещающий, считается посещающим свой собственный дом. Пример — к игроку пришли доктор и мафиози. Сам игрок был шерифом и ушел проверять другого игрока. В этом случае умрут и мафиози и доктор, а шериф выживет. Одна из тактик игры за него — выбирать целью свой собственный дом. Т.к. ночью у MM иммунитет от убийств, он убивает только посетителей.
Цель игры — убить всех, кроме себя.
Arsonist — вариация Serial Killer (маньяка). Ночью может на выбор — либо облить бензином любого игрока, либо поджечь всех, кого облил ранее, либо переждать ночь — в этом случае с него самого снимается факт облития бензином (может быть полезно в комбинации с некоторыми ролями в игре). Одновременно ночью выбрать более одного варианта он не может. Таким образом, до факта поджигания другие игроки не знают, что он есть в игре. Кроме того, его ночные цели не умирают (в ночь, когда они умирают, он ни к кому не ходит), что усложняет его выявление investigative ролями, которые не дают прямого ответа о цели (например, роли, которые определяют ночные цели игроков). Опционально (в зависимости от параметров игры) облитые бензином цели могут знать о том, что их облили.
Цель игры — убить всех, кроме себя.
Judge — особая нейтральная роль. Вот она точно только в онлайне возможна :)
Ночью может говорить со всем городом анонимно. Днем может созвать «court» — на котором все голосуют и разговаривают анонимно. Если во время Court набрано достаточное число голосов за линч игрока — он линчуется и день заканчивается.
Цель игры для Judge — выжить и при этом наблюдать проигрыш города (мафия и нейтральные убийцы выигрывают при живом Judge).

На самом деле, ролей там намного больше. И они всерьез разнообразят игру. Игроков с ролью, которая вообще НИЧЕГО не может делать ни днем ни ночью — практически нет в игре.
Спасибо!
Постараюсь учесть!
А Judge — действительно, исключительно онлайновая роль. Хотя обеспечить анонимное голосование в «живой» игре возможно.
Безусловно, но досттаочно сложно реализовать.
А в чем интерес этих игроков?
Или легкая победа за счет легкой цели игры, или усиленные возможности (почти читерские «выбирать целью свой собственный дом»)

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

А если так, то проще использовать систему рейтингов: доктор удачно вылечил жертву, мафия ночью удачно убила комиссара и прочее, комиссар выжил и мирные победили, лучшие игрок по мнению ведущего. Очки присуждаются только в случае победы данной стороны.
Систему можно придумать абсолютно любой.
По факту выйдет тоже самое.
В случае MM — выигрывает он один.
В случае Jester/Executioner — выигрывает как он, так и город/мафия.
В случае с судьей — он выигрывает вместе с мафией.
Доброго времени суток! Благодарю за полезный скрипт. Однако прошу поправить несколько моментов.

Во первых поправьте заголовок ибо он не соответствует стандарту вообще, должно быть, примерно так:

<!DOCTYPE html>
<html lang="ru-RU" class="no-js">
<head>
<meta charset="UTF-8" />
<meta name=viewport content="width=device-width, initial-scale=1">
<script type='text/javascript' src='js/jquery-1.4.2.min.js'></script>
<script type='text/javascript' src='js/config.js'></script>
<script type='text/javascript' src='js/fnc.js'></script>
<link id="lcss" rel='stylesheet' href='css/style_big.css' type='text/css' media='all' />
<title>В помощь ведущему «Мафии»</title>
</head>

т. е. добавьте DOCTYPE в начало документа и в голову добавьте title. На будущее рекомендую проверять код валидатором.

Также, по возможности избавьтесь от двух css и сделайте адаптацию под мобильные платформы и вообще масштабирование, проверить это моменты можно с помощью сервиса от Google.

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

<meta name=viewport content="width=device-width, initial-scale=1">

Ещё раз благодарю за скрипт!
Упс, ну или почти всё хорошо :) всё таки часть разметки поехала, я не заметил сразу.
Маленький баг нашёл: если не создать участников и нажать "Раздать роли", то скрипт виснет. Тоже поправьте, пожалуйста, по возможности.
Спасибо за отзыв!
В ближайшее время займусь и этим вопросом. И отпишусь здесь.
Вообще, давно надо было переделать его по-нормальному.

Ну как прогресс? )

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации