Локальный пульт и экран зала для турнира в духе «Кодовых имён». Интернет не нужен. Телефоны игрокам не нужны.
Ключ виден только на пульте. Зал показывает слова, чей ход, подсказку и сколько попыток осталось.
В репозитории нет чужих списков слов, сохранённых турниров и портативного Python. Свои .txt кладите в папку words/ рядом с программой: слова через запятую или по строкам. Эта папка в git не входит.
Встроенный набор «Площадка» — свой, не карточки из коробки.
Дважды щёлкните !ЗАПУСК.vbs или CodenamesPad.bat.
Пульт: http://127.0.0.1:3866/
На другом компьютере без Python сначала запустите scripts/get-runtime.ps1. Он скачает портативный Python в runtime\python\. Ничего в систему не ставится.
- Впишите команды, выберите формат и набор слов, нажмите Сформировать турнир.
- Экран зала открывает зал на другом мониторе. На проекторе F11. Ещё раз — другой монитор.
- Начать — новый ключ. Красные начинают и ищут 9 слов, синие — 8. Ещё 7 мирных и 1 убийца.
- Капитан говорит слово и число. Ведущий вводит их и жмёт На зал. Если подсказка сомнительная, программа спросит, а не штрафует сама.
- Клик по слову на ключе открывает его на зале. Свой — ход продолжается. Мирный или чужой — ход кончается. Убийца — поражение.
- Хватит передаёт ход после хотя бы одной попытки. Пас без попытки — сразу.
- Неверная подсказка сжигает ход. Соперник может открыть своего агента. Без штрафа — отказ от этого.
- Новый турнир внизу правой колонки сбрасывает таблицу. Наборы слов остаются. Отменить стирает только последний шаг.
До 6 команд удобнее круговая. Дальше — швейцарская: в туре играют близкие по счёту. Ведущий может назначить дополнительный бой.
Счёт = победы × 10 + запас. Запас — сколько агентов проигравшего осталось закрытыми. Пропуск тура = победа с запасом 4.
Галочка Таймер на ход. Один будильник на весь ход. Первое число — обычный ход, второе — добавка только к первому ходу боя. Ноль на часах ход не обрывает.
Команда, которая ходит, окрашена своим цветом. Название, подсказка и попытки стоят в одну строку по центру. От края есть запас, чтобы проектор не срезал картинку.
| Файл | Зачем |
|---|---|
!ЗАПУСК.vbs |
Запуск без чёрного окна |
CodenamesPad.bat |
Запуск с окном консоли |
serve.py |
Локальный сервер |
index.html |
Пульт |
display.html |
Зал |
app.ico |
Иконка папки |
words/ |
Свои списки, не в git |
Всё только на 127.0.0.1:3866.
| Метод | Путь | Зачем |
|---|---|---|
| GET | /api/status |
Жив ли зал и какие мониторы |
| GET | /api/hall |
Открыть зал или переключить монитор |
| GET | /api/open-display |
Открыть зал |
| GET | /api/cycle-display |
Следующий монитор |
| GET | /api/word-packs |
Списки из папки words/ |
| GET | /api/state |
Состояние для зала, без закрытого ключа |
| POST | /api/state |
Пульт записывает состояние |