package main // thousandRules — текст правил игры 1000 (базовый вариант строго // на троих), используется и в TUI-экране "Правила", и при выводе // через --help. const thousandRules = `1000 (ТЫСЯЧА) — правила (строго на троих игроков) У "Тысячи" огромное количество договорённостей и вариантов (бочка, золотой кон, самосвал, тузовый марьяж, игра втёмную, "расписать игру" и т.д.). Реализован базовый, самый распространённый вариант ИМЕННО НА ТРОИХ игроков — у игры вдвоём/вчетвером заметно другая механика прикупа и сдающего, она не реализована. КОЛОДА И СТАРШИНСТВО 24 карты: 9, В, Д, К, 10, Т в каждой масти. Старшинство карт: 9 < В < Д < К < 10 < Т — да, десятка сильнее короля, но слабее туза, это особенность именно этой игры. ОЧКИ КАРТ Туз - 11, десятка - 10, король - 4, дама - 3, валет - 2, девятка - 0. РАЗДАЧА И ТОРГИ Каждому раздаётся по 7 карт, 3 карты уходят в прикуп. Игрок слева от сдающего обязан назвать ставку не менее 100 (это то количество очков, которое он берётся набрать за раздачу). Далее по кругу каждый либо поднимает ставку минимум на 5, либо пасует — спасовавший больше не участвует в этих торгах. Максимальная ставка — 120, либо 120 плюс стоимость марьяжа, если он есть на руке. Торги заканчиваются, когда остаётся один игрок — он берёт прикуп и становится объявившим торг ("играющим"). СНОС Объявивший торг берёт прикуп (10 карт на руке) и отдаёт по одной карте каждому из двух соперников — после этого у всех троих становится по 8 карт. Играющий ходит первым. ВЗЯТКИ Обязательно ходить в масть; если её нет на руке — козырем (если он уже объявлен в этой раздаче); если и козыря нет — любой картой. Взятку забирает старшая карта хода, либо старший козырь, если он был подложен. МАРЬЯЖ Если у игрока, который сейчас ходит первым в новой взятке (кроме самой первой взятки раздачи), есть на руке король и дама одной масти — он может объявить марьяж, походив одной из этих карт. Эта масть становится (или меняется на) козырь до конца раздачи, а стоимость марьяжа сразу добавляется к очкам игрока за раздачу. Стоимость: пики 40, трефы 60, бубны 80, червы 100. ПОДСЧЁТ ОЧКОВ Если объявивший торг набрал (взятками и марьяжами) не меньше своей ставки — ему засчитывается ставка целиком. Если меньше — ставка вычитается из его счёта. Остальные добавляют себе ровно то, что заработали, без штрафов. ОКОНЧАНИЕ ПАРТИИ Игра идёт до 1000 очков — первый, кто их наберёт, побеждает. УПРАВЛЕНИЕ В ЭТОЙ ВЕРСИИ В торгах: ↑→/kl или ↓←/hj изменить предлагаемую ставку на ±5 enter назвать текущую ставку p пасовать При сносе и в розыгрыше взяток: ←→/hl выбор карты в руке enter сыграть/отдать выбранную карту (король/дама одной масти при своём первом ходе взятки = объявить марьяж) В любой момент: q выход в меню После завершения раздачи: n новая раздача (если партия ещё не окончена) q выход в меню ` // klondikeRules — текст правил пасьянса Косынка (Клондайк), // используется и в TUI-экране "Правила", и при выводе через --help. const klondikeRules = `КОСЫНКА (KLONDIKE) — классический пасьянс на одного игрока Реализован классический "Клондайк" с добором по одной карте за раз и неограниченным числом пересдач колоды из отбоя. ЦЕЛЬ Собрать все 52 карты на четырёх фундаментах — по одному на масть, от туза до короля по возрастанию. ПОЛЕ 7 колонн (по 1-7 карт, в каждой открыта только самая нижняя из выложенных карт), колода добора и отбой, 4 фундамента (по одному на масть). ХОДЫ - В колонну можно положить открытую карту на 1 меньше по рангу и противоположного цвета масти (чёрная на красную или наоборот). В пустую колонну можно положить только короля. - На фундамент можно положить только следующую по рангу карту той же масти, начиная с туза. - Можно перекладывать между колоннами целиком собранную (по убыванию, с чередованием цвета) последовательность карт — не только одну карту сверху. "Разрезать" такую цепочку и взять только часть нельзя. - Когда карта под перемещённой цепочкой открывается — она автоматически переворачивается лицом вверх. - Из колоды добора карты берутся по одной в отбой; когда колода добора заканчивается — весь отбой переворачивается обратно в колоду для новой пересдачи (без ограничения числа пересдач). - Возврат карт с фундамента обратно в игру не реализован. УПРАВЛЕНИЕ В ЭТОЙ ВЕРСИИ Ход состоит из двух шагов: сначала выбор источника, потом — куда переложить. 1-7 выбрать колонну (или переложить выбранное в неё) 0 выбрать отбой (только как источник) f переложить выбранную карту на фундамент esc отменить текущий выбор d взять карту из колоды добора (пересдаст, если она пуста) u отменить последний ход n новая партия (перетасовать заново) q выход в меню ` // checkersRules — текст правил русских шашек, используется и в // TUI-экране "Правила", и при выводе через --help. const checkersRules = `ШАШКИ (RUSSIAN CHECKERS) — против бота Реализованы русские шашки (не международные и не английские) на доске 8х8. Вы всегда играете белыми и ходите первым; бот играет чёрными (минимакс с альфа-бета отсечением). Перед началом партии можно выбрать уровень сложности — "Простой" или "Сильный" (разница только в глубине просчёта ходов бота). ЦЕЛЬ Взять все шашки соперника либо оставить его без единого возможного хода. ХОДЫ Простая шашка ходит по диагонали на одну клетку только вперёд. Дамка (шашка, дошедшая до последней горизонтали) ходит по диагонали на любое расстояние в любом из четырёх направлений. ВЗЯТИЕ Простая шашка бьёт через одну соседнюю клетку в ЛЮБОМ из четырёх диагональных направлений, включая назад — не только вперёд. Дамка бьёт "летающим" ходом: может перепрыгнуть через вражескую шашку с любого расстояния (если путь до неё свободен) и приземлиться на любую свободную клетку сразу за ней (тоже с выбором расстояния). Взятие ОБЯЗАТЕЛЬНО: если у вас есть хоть одно доступное взятие где-либо на доске, простой ход запрещён. В отличие от международных шашек, правило "бить максимально возможное число шашек" не действует — подходит любое доступное взятие. Если после взятия та же шашка может продолжить бить — она обязана продолжить (ход не переходит сопернику, пока серия взятий не закончится). Шашка, ставшая дамкой в середине серии взятий (дойдя до последней горизонтали при ударе), продолжает эту же серию уже как дамка. ОКОНЧАНИЕ ПАРТИИ Побеждает тот, у кого остались ходы, когда у соперника их не осталось (нет шашек или все заблокированы). Если долго (60 полуходов) не происходит ни одного взятия — партия принудительно объявляется ничьей (упрощение официальных правил ничьей). УПРАВЛЕНИЕ ↑↓←→ / hjkl передвижение курсора по доске enter/space выбрать шашку (или переместить выбранную в клетку под курсором) esc отменить текущий выбор q выход в меню После завершения партии: n новая партия q выход в меню ` // blackjackRules — текст правил Блэкджека, используется и в // TUI-экране "Правила", и при выводе через --help. const blackjackRules = `БЛЭКДЖЕК — правила для 1-6 игроков Каждый игрок играет только против дилера — не друг против друга. Можно играть даже в одиночку: тогда за столом только вы и дилер. ЦЕЛЬ Набрать сумму очков ближе к 21, чем у дилера, не превысив 21. ОЧКИ КАРТ Туз — 11 или 1 (автоматически считается как 1, если 11 привело бы к перебору). Картинки (валет/дама/король) — 10. Остальные — по номиналу. ПОДГОТОВКА И СТАВКА В начале раунда каждый игрок делает фиксированную ставку. Игрокам и дилеру раздаётся по 2 карты; у дилера одна карта открыта, вторая скрыта до конца раунда. Блэкджек с раздачи — это туз и карта на 10 очков в первых двух картах (сумма 21 ровно двумя картами). ХОД ИГРОКА Каждый игрок по очереди решает: - взять карту (hit) — можно повторять, пока не остановитесь или не переберёте (сумма больше 21 — мгновенный проигрыш ставки); - остановиться (stand) — зафиксировать текущую сумму; - удвоить ставку (double down) — доступно только на первых двух картах: ставка удваивается, берётся ровно одна карта, и ход сразу заканчивается (переберёте вы или нет). Сплиты (разделение пары карт на две руки) не поддерживаются. ХОД ДИЛЕРА После того как все игроки закончили ходы, дилер открывает вторую карту и берёт карты, пока сумма меньше 17. Дилер останавливается на любых 17 и больше, включая "мягкие" 17 с тузом — так проще и предсказуемее для игры через терминал. ВЫПЛАТЫ - Блэкджек с раздачи (и у дилера его нет) — выигрыш 3:2. - Блэкджек и у игрока, и у дилера — ничья, ставка возвращается. - Перебор у игрока — проигрыш ставки, независимо от того, что случится дальше у дилера. - Дилер перебрал, а игрок нет — выигрыш 1:1. - Сумма игрока больше суммы дилера (оба не перебрали) — выигрыш 1:1. - Суммы равны — ничья, ставка возвращается. - Сумма дилера больше — проигрыш ставки. УПРАВЛЕНИЕ В ЭТОЙ ВЕРСИИ h взять карту s остановиться d удвоить ставку (только на первых двух картах) q выход в меню После завершения раунда: n новый раунд с тем же капиталом и ставкой q выход в меню ` // oneOhOneRules — текст правил игры 101, используется и в // TUI-экране "Правила", и при выводе через --help. const oneOhOneRules = `101 — правила для 2-6 игроков У игры "101" существует много вариантов, расходящихся в деталях. Реализован следующий, наиболее часто встречающийся набор правил. ЦЕЛЬ Как можно быстрее избавиться от всех карт на руке. Тот, кто первым это сделал — выигрывает раунд; остальные получают штрафные очки за карты, оставшиеся на руках. Партия идёт до тех пор, пока не останется один игрок — набравшие 101 очко и более выбывают. ПОДГОТОВКА Колода 36 карт (от шестёрки до туза), как и в Дураке. Сдающий раздаёт по 5 карт каждому игроку, кроме себя — себе оставляет 4, а пятую (лишнюю) кладёт в центр стола лицом вверх — это стартовая карта сброса. Первым ходит игрок слева от сдающего. ХОД Нужно положить карту той же масти или того же ранга, что и верхняя карта сброса. Если подходящей карты нет — нужно брать карты из колоды добора по одной, пока не найдётся подходящая (тогда она сразу же играется) либо пока колода не закончится (тогда ход просто переходит дальше). СПЕЦИАЛЬНЫЕ КАРТЫ Туз — пропускает ход следующего игрока. Шестёрка — следующий игрок берёт 1 карту и пропускает ход. Семёрка — следующий игрок берёт 2 карты и пропускает ход. Пиковый король — следующий игрок берёт 4 карты и пропускает ход. Остальные короли и карты — обычные, без эффекта. ОЧКИ КАРТ (штраф за карты, оставшиеся на руках) Туз - 11, десятка - 10, девятка - 0, восьмёрка - 8, семёрка - 7, шестёрка - 6, король - 4, дама - 3, валет - 2. ОКОНЧАНИЕ РАУНДА Победитель раунда получает 0 штрафных очков — а если его последней сыгранной картой была дама, то бонус -20 очков (-40, если дама червовая) вместо обычных 0. Остальные складывают очковую стоимость карт, оставшихся у них на руках, и добавляют этот раунд к своему общему счёту. ВЫБЫВАНИЕ И ОКОНЧАНИЕ ПАРТИИ Набравший 101 очко и более выбывает из партии — если только это не ровно 101, тогда счёт обнуляется (можно отыграться). Сдающим следующего раунда становится победитель предыдущего. Партия продолжается, пока не останется один игрок — он побеждает. УПРАВЛЕНИЕ В ЭТОЙ ВЕРСИИ ←→ / hl выбор карты в руке enter сыграть выбранную карту d взять карту из колоды (доступно только если нет подходящей) q выход в меню После завершения раунда: n новый раунд (если партия ещё не окончена) q выход в меню ` // durakRules — текст правил Дурака (классический "подкидной" // вариант в полном виде), используется и в TUI-экране "Правила", и // при выводе через --help. const durakRules = `ДУРАК — правила для 2-6 игроков Реализован классический "подкидной" Дурак в полном виде: подкидывать дополнительные карты в раунде может любой игрок за столом, кроме самого защищающегося — не только тот, кто открыл раунд. Отбивается всегда только защищающийся, забрать стол может тоже только он. ПОДГОТОВКА Колода 36 карт (от шестёрки до туза, без карт 2-5). Каждому раздаётся по 6 карт. При 6 игроках колода не делится ровно — кому- то может достаться на одну карту меньше, это нормально и по правилам. Последняя карта колоды вскрывается — это козырь; она остаётся в самом низу колоды добора и берётся последней. Первым ходит игрок с самым младшим козырем на руке. ХОД Атакующий обязательно открывает раунд, подкинув одну карту. Защищающийся должен отбить её картой той же масти старше по рангу, либо любым козырем (козырь бьёт некозырную карту любого ранга, но козырь козырю нужно бить только старшим козырем). Как только очередная карта отбита, право подкинуть ещё одну карту (того же ранга, что уже есть среди карт на столе) по очереди получает каждый из остальных игроков, кроме защищающегося — начиная с атакующего и по кругу. Каждый в свою очередь либо подкидывает подходящую карту (тогда защищающийся должен снова отбиться или забрать стол), либо пасует. Как только все подряд отказались подкидывать — или лимит атаки исчерпан (не больше 6 карт на столе и не больше числа карт на руке защищающегося на начало раунда) — объявляется "бито": все карты со стола уходят в отбой навсегда. Если защищающийся не может (или не хочет) отбить карту — он забирает весь стол себе в руку. Это не проигрыш, а обычный игровой момент. СМЕНА РОЛЕЙ После "бито" атакующим становится следующий по кругу после защищающегося. После взятия стола атакующим становится следующий по кругу после того, кто как раз забрал карты (он на этот раз пропускает роль атакующего). ДОБОР КАРТ После каждого раунда игроки добирают карты из колоды до 6 (если в колоде столько есть), начиная с атакующего того раунда и по кругу, защищающийся добирает последним. Если стол забрали — забравший вообще не добирает в этот раз (у него и так теперь много карт). ОКОНЧАНИЕ ПАРТИИ Как только у игрока не осталось карт на руке и в колоде добора тоже пусто — он выходит из игры "в безопасности". Игра продолжается для остальных. Последний, у кого остались карты на руках, когда все остальные уже вышли — "дурак", он проигрывает. Если сразу несколько игроков одновременно избавляются от последних карт — считается ничья, дурака нет. УПРАВЛЕНИЕ В ЭТОЙ ВЕРСИИ Когда вы открываете раунд (обязательный первый ход): ←→ / hl выбор карты в руке enter подкинуть выбранную карту Когда вы защищающийся: ←→ / hl выбор карты в руке enter отбить выбранной картой последнюю неотбитую карту t забрать весь стол себе в руку Когда очередь подкидывать дошла до вас (стол уже отбит): ←→ / hl выбор карты в руке enter подкинуть ещё одну карту p пасовать (отказаться подкидывать) В любой момент: q выход в меню После завершения партии: n новая партия с тем же числом игроков q выход в меню ` // вариант), используется и в TUI-экране "Правила", и при выводе // через --help. const tonkRules = `ТОНК (TONK) — правила для 3-4 игроков ПОДГОТОВКА Колода 52 карты без джокеров. Каждому раздаётся по 5 карт. Оставшиеся карты — колода добора. Верхняя карта сразу вскрывается рубашкой вниз рядом — так начинается стопка сброса. ХОД ИГРОКА 1. Взять карту — либо верхнюю из колоды добора, либо верхнюю из стопки сброса. 2. Можно выложить на стол готовые комбинации: - сет: 3+ карты одного ранга, разных мастей - сиквенс: 3+ карты одной масти подряд по рангу Туз может быть как младшей картой (A-2-3), так и старшей (Q-K-A), но не одновременно ("закольцевать" через край нельзя). 3. Можно подкладывать карты к уже выложенным комбинациям — своим или чужим. 4. В конце хода нужно сбросить одну карту (кроме случая, когда последняя карта руки ушла в комбинацию — тогда раунд заканчивается победой без отдельного сброса). ОЧКИ КАРТ Туз = 1, валет/дама/король = 10, остальные — по номиналу. ОБЪЯВЛЕНИЕ "ТОНК" В любой момент сразу после взятия карты (до выкладывания комбинаций) игрок может объявить Тонк, если сумма очков карт на руке не превышает порог (по умолчанию 5). Раунд немедленно заканчивается победой объявившего — денежные детали см. в разделе "ДЕНЬГИ" ниже. ЗАВЕРШЕНИЕ РАУНДА - Игрок избавился от всех карт -> он забирает банк раунда целиком. - Объявлен Тонк -> объявивший забирает банк, умноженный на множитель Тонка (см. ниже); недостающую разницу сверх банка поровну доплачивают остальные игроки. - Колода добора и стопка сброса исчерпаны, и никто не может ни выиграть, ни объявить Тонк -> раунд "мёртвый", банк возвращается игрокам поровну (каждому — его ставка назад). ДЕНЬГИ: СТАВКА И БАНК В начале каждого раунда каждый игрок вносит фиксированную ставку (анте) в общий банк. Обычная победа (опустошением руки) забирает банк как есть. Победа через объявление Тонка забирает банк, умноженный на 2: недостающую сумму сверх банка поровну доплачивают остальные игроки — то есть Тонк выгоднее для победителя, но дороже обходится проигравшим, чем обычное поражение. При "мёртвом" раунде деньги никто не выигрывает и не теряет — ставки просто возвращаются. Капитал каждого игрока переносится из раунда в раунд, пока идёт партия; в этой версии капитал может уйти в минус, если ставки превышают остаток средств — отдельного правила банкротства пока нет. УПРАВЛЕНИЕ В ЭТОЙ ВЕРСИИ Фаза взятия карты: d взять из колоды добора p взять из сброса Фаза действия (после взятия карты): ←→ / hl выбор карты в руке space отметить/снять отметку карты для новой комбинации m выложить отмеченные карты как комбинацию (сет/сиквенс) 1-9 подложить выбранную карту к комбинации №N на столе t объявить Тонк (доступно, если вес руки не выше порога) enter сбросить выбранную карту и завершить ход В любой момент: q выход После завершения раунда: n новый раунд (счёт сохраняется) q выход `