Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hexapawn-SAMA: САмообучающаяся Машина с Адаптацией для игры в «Шесть пешек»

Скачать готовый комплект: https://github.com/askras/hexapawn-sama/releases/latest/download/hexapawn-sama.zip

Набор материалов для учебного мероприятия: участники строят самообучающуюся машину из карточек и конфет, которая учится играть в «шесть пешек» (Hexapawn) — настольную игру, придуманную Мартином Гарднером.

Что в комплекте

Файл Описание
rules.pdf Правила игры (3 стр.)
examples.pdf Примеры партий с разбором (4 стр.)
field.pdf Игровое поле 3×3 (1 стр.)
cards.pdf Каталог карточек: 71 страница, страница N = карточка N (71 стр.)
rating.pdf Таблица результатов (100 партий) и график обучения (2 стр.)
guide.pdf Методичка ведущего (4 стр.)

Структура репозитория

hexapawn/
├── README.md
├── LICENSE
├── Makefile               Сборка всех PDF
├── .gitignore
├── .editorconfig          Единые отступы и окончания строк
├── .gitattributes         В репозитории только LF
├── .github/workflows/     Сборка PDF в CI
└── src/                   Исходники (.tex)
    ├── board.tex            Общая реализация доски, подключается через \input
    ├── colors.tex           Общая палитра цветов, подключается через \input
    ├── colophon.tex         Общий колонтитул с лицензией, подключается через \input
    ├── rules.tex            Правила игры
    ├── examples.tex         Примеры партий с разбором
    ├── field.tex            Игровое поле 3×3
    ├── cards.tex            Карточки к игре, 70 штук, плюс начальная расстановка
    ├── rating.tex           Таблица результатов и график обучения
    └── guide.tex            Методичка ведущего

Рисование игрового поля вынесено в src/board.tex: там лежат сетка, пешки, подписи и все три варианта доски. Палитра вынесена отдельно в src/colors.tex, потому что её использует не только доска: таблица результатов (rating.tex) рисует оси и сетку графика теми же цветами и подключает палитру напрямую, минуя board.tex. Остальные документы подключают доску через \input{board.tex} и содержат только свой текст и вёрстку. Правки в геометрии доски достаточно внести в одном месте, а цвета — в colors.tex.

Колонтитул с указанием лицензии тоже общий: он лежит в src/colophon.tex и подключается всеми шестью документами через \input{colophon.tex}. Текст лицензии и ссылки меняются в одном файле. Там же выбирается, печатать ли номер страницы: у карточек, поля и таблицы результатов номер не нужен, у методички, правил и примеров нужен.

В репозиторий попадает только исходный код. Каталог build/ с готовыми PDF создаётся командой make, в git не входит, и при клонировании репозитория папки build/ не будет — она появится после первой сборки:

build/                     создаётся командой make
├── rules.pdf
├── examples.pdf
├── field.pdf
├── cards.pdf
├── rating.pdf
└── guide.pdf

Собранные PDF выкладываются в GitHub Releases.

Сборка из исходников

Требуется TeX Live с пакетами polyglossia, fontspec, tikz и кириллическими шрифтами (DejaVu или Liberation).

Сборка через make

make            # собрать все шесть PDF в build/
make clean      # удалить PDF и вспомогательные файлы

Makefile собирает каждый документ целиком: запускает xelatex дважды (нужно для перекрёстных ссылок), копирует готовый PDF из src/ в build/ и удаляет временные .aux, .log и .out. Пересобирается только то, что изменилось, — если править один документ, остальные останутся как есть.

Отдельный документ:

make build/cards.pdf

Целевые файлы: build/cards.pdf, build/guide.pdf, build/examples.pdf, build/field.pdf, build/rules.pdf, build/rating.pdf.

Сборка вручную

Каждый .tex компилируется отдельно:

cd src
xelatex cards.tex

Сборка cards.tex занимает около минуты, остальные документы — секунды. Файл cards.tex даёт 71 страницу, остальные — от 1 до 4 страниц.

Сборка без TeX Live

Локальный TeX Live не обязателен. В .github/workflows/build.yml настроена сборка на GitHub Actions: она запускается при каждом push, при pull request и вручную, а готовые PDF складываются в артефакты запуска.

У сборки в CI две задачи:

  • поймать сломанный исходник — висящий \input, незакрытую скобку, опечатку в имени макроса; без этого в релиз может попасть пустой или неполный PDF;
  • проверить число страниц в трёх документах, где оно задано конструкцией: cards.pdf (71 страница = 70 карточек плюс расстановка, между карточками стоит \newpage), field.pdf (1 страница, во всём документе 21 слово — подписи клеток) и rating.pdf (2 страницы: таблица, принудительный разрыв и график).

Гарнитура берётся из первой доступной в системе: Liberation Serif, затем DejaVu Serif, затем CMU Serif. Liberation стоит первым, потому что начертание ровнее, а DejaVu — шире и может добавить страницу: с ним методичка собирается в 5 страниц вместо 4. Шрифты Liberation в CI ставятся явно (fonts-liberation), иначе порядок не имел бы смысла: пакет не входит в стандартный набор TeX Live. Поэтому PDF, собранный на разных машинах, может отличаться начертанием. Для публикации берите PDF из артефактов CI или собирайте на одной и той же машине.

Выпуск релиза

Архив hexapawn-sama.zip, который лежит в Releases, собирает сам CI: отдельная задача release в .github/workflows/build.yml запускается только при пуше тега с префиксом v.

git tag v1.0
git push origin v1.0

Что при этом происходит:

  1. Задача pdf собирает шесть PDF и проверяет число страниц. Если проверка не прошла, релиз не создаётся — это защита от выкладки сломанной вёрстки.
  2. Задача release забирает PDF из артефактов, упаковывает их в hexapawn-sama.zip и создаёт релиз с этим архивом. Имя архива не содержит версии, поэтому ссылка в начале этого файла остаётся рабочей при выпуске v2.0 и дальше — править её не нужно.

Имя файла зашито в двух местах: в ссылке «Скачать готовый комплект» выше и в команде zip в workflow. Если переименуете архив, поправьте оба.

Если релиз с таким тегом уже существует, повторный пуш того же тега ничего не сделает: git push origin v1.0 ответит «Everything up-to-date», а gh release create упадёт, потому что тег занят. Чтобы перевыпустить версию после правок, удалите старый релиз и локальный тег, затем пушните его заново:

gh release delete v1.0
git tag -d v1.0 && git push --force origin v1.0

Это перезаписывает опубликованную версию, так что повторяйте только если в правках есть настоящая ошибка, а не опечатка в описании.

Печать

  • cards.pdf — распечатать целиком и разрезать по страницам. Страница N = карточка N, внизу каждой страницы стоит сквозной номер вида 45/71.
  • Белые карточки (страницы 1–33) — информационные: по ним гроссмейстер проверяет свои ходы. Для игры нужны только чёрные (страницы 34–70).
  • Остальные документы — печатать как есть.

Нумерация карточек

Внизу каждой карточки стоят две дроби:

  • Слева — сквозной номер: белые занимают 1–33, чёрные 34–70.
  • Справа — номер среди карточек своей стороны: 12/37.

Именно левая дробь сортирует: сложите все карточки сквозной стороной вверх и отсортируйте по ней — должен получиться сплошной ряд 1/71 … 71/71. Любой пропуск означает потерю, и по номеру сразу понятно, какую именно карточку надо допечатать. Правая дробь позволяет проверить каждую колоду отдельно: 1/33 … 33/33 и 1/37 … 37/37.

Всего стрелок: 72 на карточках белых и 90 на карточках чёрных, вместе 162. Для игры необходимы только карточки чёрных — 90 стрелок.

Цвет Белые Чёрные Всего
зелёный 18 22 40
фиолетовый 18 22 40
красный 18 23 41
жёлтый 18 23 41
Всего 72 90 162

Стрелок на карточках чёрных: 22 зелёных, 22 фиолетовых, 23 красных и 23 жёлтых. Каждой цветной стрелке в игре будет соответствовать конфета соответствующего цвета.

Цвета стрелок

Цвета задаются одним блоком в src/colors.tex:

\definecolor{arrow1}{HTML}{00B050}   % зелёный
\definecolor{arrow2}{HTML}{7030A0}   % фиолетовый
\definecolor{arrow3}{HTML}{FF0000}   % красный
\definecolor{arrow4}{HTML}{FFFF00}   % жёлтый

Имена arrow1…arrow4 условные — это номера, а не названия цветов. При необходимости смерить цвета стрелок, меняйте только значения HEX.

Для чего нужны конфеты и как они связаны со стрелками, описано в методичке ведущего guide.pdf.

Лицензия

Методические материалы, тексты, оформление и исходный код этого комплекта распространяются по лицензии Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) — https://creativecommons.org/licenses/by-sa/4.0/. Полный текст лицензии — в файле LICENSE.

Обратите внимание: пояснения ниже — это только удобное изложение, чтобы понять суть лицензии, а не юридический документ. Юридическую силу имеет только оригинальный текст лицензии на английском языке — файл LICENSE.

Что можно делать

  • Копировать и распространять — передавать материал другим людям в любых форматах и на любых носителях.
  • Перерабатывать и адаптировать — создавать новые материалы на основе оригинала: ремиксы, переводы, адаптации.
  • Использовать в коммерческих целях — продавать или применять изменённые либо оригинальные работы в бизнес-проектах.

Что нужно обязательно соблюдать (условия)

  • Указывать авторство (Attribution) — дать ссылку на автора, на саму лицензию и отметить, если вы вносили изменения в оригинал.
  • Сохранять условия (ShareAlike) — если вы переделали материал, вы обязаны распространять свою новую (производную) работу под точно такой же лицензией CC BY-SA 4.0 или совместимой с ней.

Что нельзя делать

  • Запрещать использование другим — нельзя накладывать дополнительные юридические ограничения или технологические меры (например, DRM-защиту), которые мешают другим пользоваться материалом в рамках лицензии.
  • Скрывать авторство — нельзя удалять информацию об авторе и об оригинальном тексте или материале.
  • Менять лицензию для производных работ — нельзя переводить переделанную вами работу в статус закрытого контента или применять другие несовместимые лицензии.

Автор и исключения

Автор комплекта: Александр (askras) Красников, 2026 г.

Имя автора в самих PDF не печатается. В колонтитуле каждой страницы стоит обозначение лицензии со ссылками — этого достаточно, чтобы выполнялось требование CC BY-SA 4.0 указать лицензию и дать ссылку на неё. Авторство остаётся здесь, в README, и на странице релизов.

Колонтитул с лицензией общий для всех документов и лежит в src/colophon.tex.

Что не покрыто лицензией: описание самой игры «шесть пешек» (Hexapawn) придумано Мартином Гарднером и опубликовано в 1962 году, поэтому оно находится в общественном достоянии и лицензией не ограничено.

Атрибуция

  • Hexapawn — Мартин Гарднер, 1962, общественное достояние.
  • Материал статьи Wikipedia распространяется по лицензии CC BY-SA. https://en.wikipedia.org/wiki/Hexapawn (дата обращения: 29 сентября 2026 г.).

About

Комплект материалов для учебного мероприятия: участники строят самообучающуюся машину из карточек и конфет, которая играет в «шесть пешек» (Hexapawn). Сборка — XeLaTeX/TikZ.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages