
    Ii                     x    S r SSKJrJr  SSKJr   " S S\\5      r\ " S S5      5       r\ " S S	5      5       r	g
)z&
Card and state definitions for Coup.
    )	dataclassfield)Enumc                   (    \ rS rSrSrSrSrSrSrSr	g)		Character	   dukeassassincaptain
ambassadorcontessa N)
__name__
__module____qualname____firstlineno__DUKEASSASSINCAPTAIN
AMBASSADORCONTESSA__static_attributes__r       6c:\Users\dbart\PlayPalace11\server\games\coup\cards.pyr   r   	   s    DHGJHr   r   c                   2    \ rS rSr% Sr\\S'   Sr\\S'   Sr	g)Card   zA Coup character card.	characterFis_revealedr   N)
r   r   r   r   __doc__r   __annotations__r   boolr   r   r   r   r   r      s     Kr   r   c                   ~    \ rS rSr% Sr\" \S9r\\   \	S'   SS jr
SS jrS\S-  4S	 jrS
\SS4S jrS\4S jrSrg)Deck   zThe Coup deck.)default_factorycardsreturnNc                     / U l         [         H7  n[        S5       H%  nU R                   R                  [	        US95        M'     M9     g)z/Build a standard deck with 3 of each character.   )r   N)r'   r   rangeappendr   )selfchar_s      r   build_standard_deckDeck.build_standard_deck   s8    
D1X

!!$"67  r   c                 B    SSK nUR                  U R                  5        g)zShuffle the deck.r   N)randomshuffler'   )r-   r3   s     r   r4   Deck.shuffle&   s    tzz"r   c                 Z    U R                   (       d  gU R                   R                  5       $ )zDraw a card from the deck.N)r'   popr-   s    r   draw	Deck.draw,   s    zzzz~~r   cardc                 :    U R                   R                  U5        g)zReturn a card to the deck.N)r'   r,   )r-   r;   s     r   addDeck.add2   s    

$r   c                 2    [        U R                  5      S:H  $ )zCheck if the deck is empty.r   )lenr'   r8   s    r   is_emptyDeck.is_empty6   s    4::!##r   )r'   )r(   N)r   r   r   r   r    r   listr'   r   r!   r0   r4   r9   r=   r"   rA   r   r   r   r   r$   r$      sQ    d3E4:38# dTk       $$ $r   r$   N)
r    dataclassesr   r   enumr   strr   r   r$   r   r   r   <module>rG      sR    ) T     $ $ $r   