Files
shortdeck/shortdeck_arena/card.py
2025-10-09 15:28:34 +08:00

55 lines
1.1 KiB
Python

"""ShortDeck card model (6-A, 36 cards)."""
from __future__ import annotations
from enum import IntEnum
from typing import List
class Suit(IntEnum):
S = 0
H = 1
D = 2
C = 3
def __str__(self) -> str:
return "shdc"[self.value]
class Rank(IntEnum):
R6 = 6
R7 = 7
R8 = 8
R9 = 9
RT = 10
RJ = 11
RQ = 12
RK = 13
RA = 14
def __str__(self):
if self.value <= 9:
return str(self.value)
return {10: "T", 11: "J", 12: "Q", 13: "K", 14: "A"}[self.value]
class Card:
def __init__(self, rank: Rank, suit: Suit):
self.rank = rank
self.suit = suit
def __repr__(self) -> str:
return f"{str(self.rank)}{str(self.suit)}"
def __str__(self) -> str:
return self.__repr__()
@classmethod
def all_short(cls) -> List["Card"]:
cards: List[Card] = []
for r in [Rank.R6, Rank.R7, Rank.R8, Rank.R9, Rank.RT, Rank.RJ, Rank.RQ, Rank.RK, Rank.RA]:
for s in Suit:
cards.append(Card(r, s))
return cards