Skip to content

About

Портативный пульт и таблица счёта для зала: туры, итоги, оформление, экспорт PNG и Excel

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

GameScorePad

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

Чистый старт

В репозитории нет личных данных: ни названий команд, ни счетов, ни фонов, ни сохранённых турниров. Приложение стартует с пустого состояния, а всё, что вы вводите, живёт только в вашем браузере (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.

Портативный runtime

Приложение работает на 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

HTTP API

Локальный сервер слушает 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.

About

Портативный пульт и таблица счёта для зала: туры, итоги, оформление, экспорт PNG и Excel

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages