Сборник настольных и карточных игр для терминала
Find a file
2026-07-04 13:51:04 +03:00
.gitignore First version. 2026-07-04 13:51:04 +03:00
bankruptcy_test.go First version. 2026-07-04 13:51:04 +03:00
banner.go First version. 2026-07-04 13:51:04 +03:00
blackjack_bot.go First version. 2026-07-04 13:51:04 +03:00
blackjack_game.go First version. 2026-07-04 13:51:04 +03:00
blackjack_game_test.go First version. 2026-07-04 13:51:04 +03:00
blackjack_tui.go First version. 2026-07-04 13:51:04 +03:00
blackjack_tui_test.go First version. 2026-07-04 13:51:04 +03:00
bot.go First version. 2026-07-04 13:51:04 +03:00
bot_heuristics.go First version. 2026-07-04 13:51:04 +03:00
bot_naming_test.go First version. 2026-07-04 13:51:04 +03:00
card.go First version. 2026-07-04 13:51:04 +03:00
checkers_bot.go First version. 2026-07-04 13:51:04 +03:00
checkers_bot_test.go First version. 2026-07-04 13:51:04 +03:00
checkers_game.go First version. 2026-07-04 13:51:04 +03:00
checkers_game_test.go First version. 2026-07-04 13:51:04 +03:00
checkers_tui.go First version. 2026-07-04 13:51:04 +03:00
checkers_tui_test.go First version. 2026-07-04 13:51:04 +03:00
deck.go First version. 2026-07-04 13:51:04 +03:00
durak_bot.go First version. 2026-07-04 13:51:04 +03:00
durak_bot_test.go First version. 2026-07-04 13:51:04 +03:00
durak_deck.go First version. 2026-07-04 13:51:04 +03:00
durak_game.go First version. 2026-07-04 13:51:04 +03:00
durak_game_test.go First version. 2026-07-04 13:51:04 +03:00
durak_tui.go First version. 2026-07-04 13:51:04 +03:00
durak_tui_test.go First version. 2026-07-04 13:51:04 +03:00
game.go First version. 2026-07-04 13:51:04 +03:00
game_test.go First version. 2026-07-04 13:51:04 +03:00
go.mod First version. 2026-07-04 13:51:04 +03:00
go.sum First version. 2026-07-04 13:51:04 +03:00
klondike_bot_test.go First version. 2026-07-04 13:51:04 +03:00
klondike_game.go First version. 2026-07-04 13:51:04 +03:00
klondike_game_test.go First version. 2026-07-04 13:51:04 +03:00
klondike_tui.go First version. 2026-07-04 13:51:04 +03:00
klondike_tui_test.go First version. 2026-07-04 13:51:04 +03:00
LICENSE Initial commit 2026-07-04 10:03:24 +00:00
main.go First version. 2026-07-04 13:51:04 +03:00
meld.go First version. 2026-07-04 13:51:04 +03:00
meld_test.go First version. 2026-07-04 13:51:04 +03:00
menu.go First version. 2026-07-04 13:51:04 +03:00
menu_test.go First version. 2026-07-04 13:51:04 +03:00
oneohone_bot.go First version. 2026-07-04 13:51:04 +03:00
oneohone_bot_test.go First version. 2026-07-04 13:51:04 +03:00
oneohone_game.go First version. 2026-07-04 13:51:04 +03:00
oneohone_game_test.go First version. 2026-07-04 13:51:04 +03:00
oneohone_tui.go First version. 2026-07-04 13:51:04 +03:00
oneohone_tui_test.go First version. 2026-07-04 13:51:04 +03:00
player.go First version. 2026-07-04 13:51:04 +03:00
README.md First version. 2026-07-04 13:51:04 +03:00
rules.go First version. 2026-07-04 13:51:04 +03:00
thousand_bot.go First version. 2026-07-04 13:51:04 +03:00
thousand_bot_test.go First version. 2026-07-04 13:51:04 +03:00
thousand_game.go First version. 2026-07-04 13:51:04 +03:00
thousand_game_test.go First version. 2026-07-04 13:51:04 +03:00
thousand_tui.go First version. 2026-07-04 13:51:04 +03:00
thousand_tui_test.go First version. 2026-07-04 13:51:04 +03:00
tui.go First version. 2026-07-04 13:51:04 +03:00
tui_test.go First version. 2026-07-04 13:51:04 +03:00

Go Games Collection

Коллекция консольных карточных игр и настольных игр на Go с текстовым интерфейсом (TUI) на Bubble Tea. Играете против ботов (кроме пасьянса — он на одного) прямо в терминале.

  ____  ___     ____    _    __  __ _____ ____
 / ___|/ _ \   / ___|  / \  |  \/  | ____/ ___|
| |  _| | | | | |  _  / _ \ | |\/| |  _| \___ \
| |_| | |_| | | |_| |/ ___ \| |  | | |___ ___) |
 \____|\___/   \____/_/   \_\_|  |_|_____|____/
  ____ ___  _     _     _____ ____ _____ ___ ___  _   _
 / ___/ _ \| |   | |   | ____/ ___|_   _|_ _/ _ \| \ | |
| |  | | | | |   | |   |  _|| |     | |  | | | | |  \| |
| |__| |_| | |___| |___| |__| |___  | |  | | |_| | |\  |
 \____\___/|_____|_____|_____\____| |_| |___\___/|_| \_|

Игры в коллекции

Игра Игроков Особенности
Тонк (Tonk) 1 человек + 3 бота Денежная система: капитал, ставка, банкротство и замена бота
Дурак (Durak) 26 Полноценное подкидывание любым игроком (не только атакующим)
Блэкджек (Blackjack) 16 (можно соло) Каждый играет против дилера отдельно, hit/stand/double
101 26 Избавься от карт первым; выбывание по достижении 101 очка
1000 (Тысяча) строго 3 Торги, прикуп, взятки и марьяжи с динамическим козырем
Косынка (Klondike) 1 (без ботов) Классический пасьянс с отменой хода
Шашки (Checkers) 1 человек + бот Русские шашки, бот на минимаксе с 2 уровнями сложности

Каждая игра — со своим набором специально подобранных упрощений там, где у оригинала слишком много вариантов правил (например, «1000» реализована только на троих, а Дурак — без «тузового марьяжа» и бочки). Полный список правил и упрощений — в разделе «Правила» самого приложения или через --help.

Запуск

Требуется Go 1.22+.

go run .                 # открыть меню коллекции
go run . --help          # показать правила всех игр, не заходя в TUI
go run . -sim            # headless-симуляция ботов Тонка (для проверки баланса)
go run . -sim-durak      # то же для Дурака
go run . -sim-blackjack  # то же для Блэкджека
go run . -sim-101        # то же для 101
go run . -sim-1000       # то же для Тысячи

Или собрать бинарник:

go build -o games .
./games

Общее управление в меню

  • ↑↓ / k j — навигация по пунктам меню
  • enter — выбрать / подтвердить
  • esc / q — назад
  • Внутри игры q всегда возвращает в меню (не закрывает программу); ctrl+c закрывает приложение целиком

У части игр перед стартом есть экран настроек: ставка и капитал (Тонк), число игроков (Дурак, 101), число игроков + ставка (Блэкджек), уровень сложности бота (Шашки).

Управление в конкретной игре не дублируется здесь — оно всегда показано внизу экрана самой игры, а также доступно целиком через пункт «Правила» в меню или --help.

Структура проекта

Каждая игра — самостоятельный набор из 3 файлов (движок / бот / TUI) плюс тесты; общая для всех инфраструктура (меню, карты, колода) вынесена отдельно.

card.go, deck.go        — общие типы карт и стандартная колода на 52 карты
menu.go, banner.go      — главное меню, ASCII-баннер, экраны настроек игр
rules.go                — тексты правил всех игр (для TUI и --help)
main.go                 — точка входа, флаги -sim-*, --help

game.go, bot.go,        — Тонк: движок, боты трёх уровней сложности,
bot_heuristics.go,         банкротство и замена бота, TUI
tui.go, player.go,
meld.go

durak_*.go              — Дурак: движок с полным подкидыванием, бот, TUI

blackjack_*.go          — Блэкджек: движок дилера, бот, TUI

oneohone_*.go           — 101: движок, бот, TUI

thousand_*.go           — 1000: движок торгов/взяток/марьяжей, бот, TUI

klondike_*.go           — Косынка: движок пасьянса с отменой хода, TUI
                           (ботов нет — играть некому, кроме человека)

checkers_*.go           — Шашки: движок русских шашек, бот на минимаксе, TUI

*_test.go                — тесты (юнит-тесты правил + стресс-симуляции
                            полных партий ботами)

Тестирование

go test ./...           # весь пакет
go test ./... -v        # подробный вывод по каждому тесту

В пакете 215 тестов: юнит-тесты игровой логики (раздача, ходы, подсчёт очков, крайние случаи вроде взятия дамкой или марьяжа на первой взятке) и отдельные стресс-тесты, прогоняющие сотни-тысячи симулированных партий ботами подряд — они специально написаны, чтобы ловить редкие зависания, потерю/дублирование карт и прочие тонкие баги, которые не всегда видны в единичном ручном тесте.

Известные упрощения

У традиционных карточных игр обычно много региональных вариантов правил. Там, где выбор был сделан осознанно (а не по ошибке), это явно прокомментировано в соответствующем *_game.go и продублировано в тексте правил игры. Коротко:

  • Дурак — полные правила (подкидывать может любой игрок, не только атакующий).
  • 101 — туз пропускает ход, 6/7/пиковый король дают штрафные карты; десятка не меняет направление хода.
  • 1000 — только на 3 игроков; нет бочки, золотого кона, самосвала, тузового марьяжа и игры втёмную.
  • Косынка — добор по одной карте, неограниченные пересдачи; возврата карт с фундамента в игру нет.
  • Шашки — русские правила (взятие в любом направлении простой шашкой, «летающая» дамка), без официальных 15/30-ходовых правил ничьей — вместо них простой лимит в 60 полуходов без взятий.