Перейти к содержанию

Шаблоны колоды

Генератор колоды.

Более высокоуровневый класс, для генерации колоды по выбранным правилам или по готовым шаблонам.

ALL_COLORS module-attribute

Python
ALL_COLORS = (RED, YELLOW, GREEN, CYAN)

CARD_PRESETS module-attribute

Python
CARD_PRESETS: dict[str, DeckPreset] = {
    "classic": DeckPreset(
        name="🎻 Классика",
        desc="Стандартная колода Уно",
        groups=(
            CardGroup(_ROTATE, 0, ALL_COLORS, 1),
            CardGroup(_NUMBER, 1, ALL_COLORS, 2),
            CardGroup(_TWIST, 2, ALL_COLORS, 2),
            CardGroup(_NUMBER, 3, ALL_COLORS, 2),
            CardGroup(_NUMBER, 4, ALL_COLORS, 2),
            CardGroup(_NUMBER, 5, ALL_COLORS, 2),
            CardGroup(_NUMBER, 6, ALL_COLORS, 2),
            CardGroup(_NUMBER, 7, ALL_COLORS, 2),
            CardGroup(_NUMBER, 8, ALL_COLORS, 2),
            CardGroup(_NUMBER, 9, ALL_COLORS, 2),
            CardGroup(_REVERSE, 1, ALL_COLORS, 2),
            CardGroup(_TURN, 1, ALL_COLORS, 2),
            CardGroup(_TAKE, 2, ALL_COLORS, 2),
            CardGroup(_TAKE_FOUR, 4, [BLACK], 4),
            CardGroup(_COLOR, 0, [BLACK], 4),
        ),
    ),
    "wild": DeckPreset(
        name="🐍 Дикие карты",
        desc="Меньше цифр, больше действий.",
        groups=(
            CardGroup(_ROTATE, 0, ALL_COLORS, 4),
            CardGroup(_NUMBER, 1, ALL_COLORS, 4),
            CardGroup(_TWIST, 2, ALL_COLORS, 4),
            CardGroup(_NUMBER, 3, ALL_COLORS, 4),
            CardGroup(_NUMBER, 4, ALL_COLORS, 4),
            CardGroup(_NUMBER, 5, ALL_COLORS, 4),
            CardGroup(_REVERSE, 1, ALL_COLORS, 4),
            CardGroup(_TURN, 1, ALL_COLORS, 4),
            CardGroup(_TAKE, 2, ALL_COLORS, 4),
            CardGroup(_TAKE_FOUR, 4, [BLACK], 6),
            CardGroup(_COLOR, 0, [BLACK], 6),
        ),
    ),
    "casino": DeckPreset(
        name="🎰 Казино",
        desc="Нет слов, одни эмоции.",
        groups=(
            CardGroup(_ROTATE, 0, ALL_COLORS, 4),
            CardGroup(_NUMBER, 1, ALL_COLORS, 4),
            CardGroup(_TWIST, 2, ALL_COLORS, 4),
            CardGroup(_NUMBER, 3, ALL_COLORS, 4),
            CardGroup(_NUMBER, 4, ALL_COLORS, 4),
            CardGroup(_NUMBER, 5, ALL_COLORS, 4),
            CardGroup(_REVERSE, 1, ALL_COLORS, 6),
            CardGroup(_TURN, 1, ALL_COLORS, 6),
            CardGroup(_TAKE, 2, ALL_COLORS, 6),
            CardGroup(_TAKE_FOUR, 4, [BLACK], 8),
            CardGroup(_COLOR, 0, [BLACK], 8),
        ),
    ),
    "single": DeckPreset(
        name="🗑️ Отладочные",
        desc="По одной карте для каждого типа.",
        groups=(
            CardGroup(_ROTATE, 0, ALL_COLORS, 1),
            CardGroup(_NUMBER, 1, ALL_COLORS, 1),
            CardGroup(_TWIST, 2, ALL_COLORS, 1),
            CardGroup(_NUMBER, 3, ALL_COLORS, 1),
            CardGroup(_NUMBER, 4, ALL_COLORS, 1),
            CardGroup(_NUMBER, 5, ALL_COLORS, 1),
            CardGroup(_NUMBER, 6, ALL_COLORS, 1),
            CardGroup(_NUMBER, 7, ALL_COLORS, 1),
            CardGroup(_NUMBER, 8, ALL_COLORS, 1),
            CardGroup(_NUMBER, 9, ALL_COLORS, 1),
            CardGroup(_REVERSE, 1, ALL_COLORS, 1),
            CardGroup(_TURN, 1, ALL_COLORS, 1),
            CardGroup(_TAKE, 2, ALL_COLORS, 1),
            CardGroup(_TAKE_FOUR, 4, [BLACK], 1),
            CardGroup(_COLOR, 0, [BLACK], 1),
        ),
    ),
}

CardGroup dataclass

Python
CardGroup(
    behavior: NumberBehavior,
    value: int,
    colors: Iterable[CardColor],
    count: int,
)

Группа карт.

Обобщённо описывает карты. которые должны быть. Тип карты, значение, цвета, и их количество в колоде.

К примеру: Числовые карты всех цветов по две на каждый цвет.

behavior instance-attribute

Python
behavior: NumberBehavior

colors instance-attribute

Python
colors: Iterable[CardColor]

count instance-attribute

Python
count: int

value instance-attribute

Python
value: int

cards

Python
cards() -> Iterator[MauCard]

Преобразует группу карт в итератор экземпляров карт.

Если было указано по 3 карты всех цветов, то он вернёт 12 карт.

DeckGenerator

Python
DeckGenerator(
    groups: list[CardGroup] | None = None,
    preset_name: str = "custom",
)

Генератор колоды.

Собирает колоду карт, используя группы карт. Позволяет редактировать правила сборки колоды.

deck property

Python
deck: Deck

Собирает новую колоду из правил.

groups instance-attribute

Python
groups: list[CardGroup] = groups or []

preset_name instance-attribute

Python
preset_name = preset_name

from_preset classmethod

Python
from_preset(preset_name: str) -> Self

Получает новый генератор колоды по названию шаблона.

DeckPreset dataclass

Python
DeckPreset(
    name: str, desc: str, groups: Iterable[CardGroup]
)

Шаблон колоды.

Содержит готовые правила формирования колоды, которые можно использовать в игре.

desc instance-attribute

Python
desc: str

groups instance-attribute

Python
groups: Iterable[CardGroup]

name instance-attribute

Python
name: str