Портативный пульт и экран зала: таблица счёта по турам для интеллектуальных игр. Зал — обычная адаптивная страница: она заполняет любой монитор и проектор, а размеры текста считаются от реальной высоты окна.
В репозитории нет личных данных: ни названий команд, ни счетов, ни фонов, ни
сохранённых турниров. Приложение стартует с пустого состояния, а всё, что вы
вводите, живёт только в вашем браузере (localStorage) и в памяти локального
сервера. В репозиторий эти данные не попадают.
Исключение в другую сторону: загруженные вами фоны зала складываются в папку
bg/ и намеренно исключены из git, чтобы случайно не уехать в репозиторий.
- Таблица команд с турами и суммой; Промежуточные, Вся таблица, Итоги — показ нужного среза зала.
- Анимация появления строк, подсветка середины таблицы и предпоследнего места.
- Призёры выделяются рамками: 1 место — золото, 2 — серебро, 3 — бронза.
- Оформление зала: фон, логотип слева и его размер, заголовки, шрифт таблицы, цифры, размер шрифта таблицы зала.
- «Проверка» — предпросмотр оформления: зал при этом не меняется.
- «Картинка 1:1» — экспорт итогового кадра в PNG: готовый пост для соцсетей.
- Обмен комплектами оформления: «Комплект» / «Открыть…» — файл
.gamescore.jsonс фоном и настройками. Свой фон кладётся в папкуbg/. Готовых фонов в репозитории нет. - Импорт/экспорт Excel:
POST /api/export.xlsxотдаёт готовый.xlsxс результатами. - Сброс счёта одной кнопкой.
Зал открывается отдельным окном браузера на другом мониторе в режиме приложения
(--app) со своим профилем. F11 — полный экран на зале. Зал — адаптивная
страница без фиксированного кадра: он заполняет окно любого разрешения
(проверено от 1024×768 до 3840×2160), а размеры заголовков и таблицы считаются
от реальной высоты окна. Ползунок «Шрифт таблицы зала» на пульте подстраивает
кегль под конкретную площадку; если таблица перестаёт помещаться, шрифт
дополнительно уменьшается, чтобы ничего не вылезло за края.
Портативно (без установки Python). Скопировать папку целиком, включая
runtime\python\, и дважды щёлкнуть !ЗАПУСК.vbs. Откроется пульт оператора;
окно консоли скрыто. Запасной запуск — GameScorePad.bat (консоль видна; её
закрытие останавливает сервер).
Из исходников. Нужен Python 3.10+ (проверено на 3.12):
python serve.pyПорт по умолчанию — 3878, переопределяется переменной окружения PORT.
Браузер: Edge или Chrome (для зала используется режим приложения --app).
Система: Windows 10/11 64-bit.
Приложение работает на embeddable CPython 3.12, который лежит в runtime\python\.
Раньше папка копировалась вместе с проектом — в репозитории её нет: это 22 МБ
бинарников, которые бессмысленно держать в git.
Восстановить runtime одной командой из корня проекта:
powershell -ExecutionPolicy Bypass -File scripts\get-runtime.ps1Скрипт скачивает официальный python-3.12.10-embed-amd64.zip с python.org и
распаковывает его в runtime\python. Ничего не ставится в систему, права
администратора не нужны. Если runtime\python\python.exe уже есть — скрипт
ничего не делает.
Никаких внешних зависимостей: serve.py использует только стандартную
библиотеку Python.
GameScorePad/
!ЗАПУСК.vbs запуск без окна консоли
GameScorePad.bat запуск (портативно)
serve.py локальный HTTP-сервер, только stdlib
index.html пульт оператора
display.html экран зала (адаптивный, без фиксированного кадра)
bg/ ваши фоны зала и комплекты оформления
js/operator.js логика пульта
js/display.js отрисовка зала
js/poster.js экспорт PNG «Картинка 1:1»
js/bus.js шина между окнами
logo.svg, app.ico
scripts/get-runtime.ps1 восстановление runtime\python
Локальный сервер слушает 127.0.0.1:3878 и отдаёт состояние залу через
обычные JSON-эндпоинты (интеграции и автоматизация):
| Метод | Путь | Назначение |
|---|---|---|
GET |
/api/state |
текущее состояние турнира |
POST |
/api/state |
записать состояние турнира |
GET |
/api/status |
статус сервера, мониторы, браузер |
GET |
/api/open-display |
открыть экран зала |
GET |
/api/cycle-display |
переключить монитор зала |
GET |
/api/reload-display |
перезагрузить окно зала |
GET |
/api/bg |
список доступных фонов |
POST |
/api/bg |
загрузить новый фон |
POST |
/api/export.xlsx |
скачать результаты в Excel |
MIT — см. LICENSE.