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

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

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

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

ALL_COLORS module-attribute

ALL_COLORS = (RED, YELLOW, GREEN, CYAN)

CARD_PRESETS module-attribute

CARD_PRESETS: dict[str, DeckPreset] = {'classic': DeckPreset(name='🎻 Классика', desc='Стандартная колода Уно', groups=(CardGroup(_NUMBER, 0, ALL_COLORS, 1), CardGroup(_NUMBER, 1, ALL_COLORS, 2), CardGroup(_NUMBER, 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(_NUMBER, 0, ALL_COLORS, 4), CardGroup(_NUMBER, 1, ALL_COLORS, 4), CardGroup(_NUMBER, 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(_NUMBER, 0, ALL_COLORS, 4), CardGroup(_NUMBER, 1, ALL_COLORS, 4), CardGroup(_NUMBER, 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(_NUMBER, 0, ALL_COLORS, 1), CardGroup(_NUMBER, 1, ALL_COLORS, 1), CardGroup(_NUMBER, 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

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

Группа карт.

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

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

behavior instance-attribute

behavior: NumberBehavior

colors instance-attribute

colors: Iterable[CardColor]

count instance-attribute

count: int

value instance-attribute

value: int

cards

cards() -> Iterator[MauCard]

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

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

DeckGenerator

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

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

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

deck property

deck: Deck

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

groups instance-attribute

groups: list[CardGroup] = groups or []

preset_name instance-attribute

preset_name = preset_name

from_preset classmethod

from_preset(preset_name: str) -> Self

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

DeckPreset dataclass

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

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

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

desc instance-attribute

desc: str

groups instance-attribute

groups: Iterable[CardGroup]

name instance-attribute

name: str