Files
shenzhen-solitaire/board.py
2019-04-08 17:48:20 +02:00

53 lines
1.2 KiB
Python

"""Contains board class"""
import enum
from typing import Union, Tuple, List
from dataclasses import dataclass
class SpecialCard(enum.Enum):
"""Different types of special cards"""
Zhong = enum.auto()
Bai = enum.auto()
Fa = enum.auto()
Hua = enum.auto()
@dataclass(frozen=True)
class NumberCard:
"""Different number cards"""
class Suit(enum.Enum):
"""Different colors number cards can have"""
Red = enum.auto()
Green = enum.auto()
Black = enum.auto()
suit: Suit
number: int
Card = Union[NumberCard, SpecialCard]
class Position(enum.Enum):
"""Possible Board positions"""
Field = enum.auto()
Bunker = enum.auto()
Goal = enum.auto()
class BunkerStatus(enum.Enum):
"""States a bunker can be in, if it not holding a card"""
Empty = enum.auto()
Dragon = enum.auto()
@dataclass
class Board:
"""Solitaire board"""
field: List[List[Card]] = []
bunker: Tuple[Union[BunkerStatus, Card],
Union[BunkerStatus, Card],
Union[BunkerStatus, Card]] = (BunkerStatus.Empty,
BunkerStatus.Empty, BunkerStatus.Empty,)
goal: List[Tuple[NumberCard.Suit, int]] = []
flowerGone: bool = False