Шаблоны колоды
Генератор колоды.
Более высокоуровневый класс, для генерации колоды по выбранным правилам или по готовым шаблонам.
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
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",
)
Генератор колоды.
Собирает колоду карт, используя группы карт. Позволяет редактировать правила сборки колоды.
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
name
instance-attribute
Python
name: str