10 янв. 2012 г.

Программа для создания карточек настольной игры "Алиас"

Недавно, мне подарили настольную игру под названием "Алиас", суть которой заключается в угадывании слов и всяких "известных персонажей" по словесному описанию от партнера по команде.
Именно с угадыванием известных персонажей и возникли проблемы у компании из двух программистов и одного филолога. Если с такими людьми как Арнольд Шварценеггер или Уилл Смит не возникало никаких проблем, то попытки описать Колин Фарелл или Род Стюарта наталкивались на препятствие вида "эээ, а кто все эти люди?".
Тогда же, одному из двух программистов пришла в голову светлая идея - заменить всех этих "звезд эстрады и шоубизнеса" на таких привычных и понятных программистскому уху именах и фамилиях как: Линус Торвальдс, Ричард Столлман, Деннис Ритчи и так далее.
Естественно, рисовать карточки от руки было, что называется "не с руки", поэтому мною была написана простенькая программка, рисующая карточки автоматически.

Естественно, не стоит ждать от нее каких-то красивостей и прочего. Программа просто берет слова (для карточек со словами) и имена людей из файлов words.txt и people.txt соответственно и генерирует из них pdf с табличкой, ячейки которой и представляют собой искомые карточки. Размер таблицы - 3x3, а с учетом того, что в карточке должно быть 8 слов, нам необходимо иметь как минимум 72 слова в каждом из исходных TXT-файлов. Если слов меньше - таблички просто не будет. Если слов больше и их число кратно 72 - будет несколько страниц с таблицами 3x3.

Основную работу выполняет программа на Clojure, которая парсит TXT-файлы и выдает "на гора" соответствующим образом составленный LaTeX-овский исходник. Эта программа вызывается скриптом make-cards.sh, который сначала проверяет, чтобы в TXT-файлах было достаточно слов, затем запускает программу на Clojure, а после натравливает на получившийся TeX-файл pdflatex.

В итоге получается вот такая таблица. Таблицы с именами и фамилиями не будет, потому что в составленном мною файле people.txt недостаточно имен.

Репозиторий программы: https://github.com/h0rr0rrdrag0n/cs-alias-clj

7 комментариев:

  1. Жень, спасибо! Я нашёл этот пост с гугла - искал базы для мобильной версии алиаса. Даже не пришло в голову что можно самому напарсить из файлов :)

    ОтветитьУдалить
  2. Блондинка7 мар. 2013 г., 0:11:00

    Евгений, умираю. Ник меня сейчас полностью оправдывает.
    Расскажите популярно, что мне следует сделать, дабы в итоге получить новые карточки? Программу надо скачивать, если да - как?
    Глупые-глупые вопросы :)

    ОтветитьУдалить
  3. Эээх, думаю в вашем случае куда как проще будет нарисовать табличку в ворде или экселе, куда можно будет вбить нужные для игры слова, а затем распечатать получившийся лист и разрезать его на карточки.


    В случае использования мое, вам придется разбираться с git'ом, лиспом или отдельно clojure, системой сборки для последнего и еще LaTeX'ом в придачу.

    ОтветитьУдалить
  4. Блондинка8 мар. 2013 г., 3:44:00

    Склоняюсь к тому же. Времени, правда, потрачено будет не в пример больше :)

    ОтветитьУдалить
  5. h0rr0rr_drag0n программа ГАВНО !!! куча приседаний чтобы ее запустить !!!
    оторвал бы руки таким программистам

    ОтветитьУдалить
  6. Бггг, как будто программа писалась мною для того, чтобы ею пользовались по назначению другие люди (о чем, впрочем, можно и так понять, прочитав мой комментарий десятимесячной давности, выше).

    ОтветитьУдалить