42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from typing import List, Set, Dict, Tuple, Optional
|
|
import random
|
|
from cards import Card, get_starting_deck
|
|
|
|
class Deck:
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.cards: List[Card] = get_starting_deck()
|
|
random.shuffle(self.cards)
|
|
self.scrap_pile: List[Card] = []
|
|
print(f'Deck initialized with {len(self.cards)} cards')
|
|
|
|
def peek(self, n_cards: int) -> list:
|
|
return self.cards[:n_cards]
|
|
|
|
def peek_scrap_pile(self,) -> Card:
|
|
if len(self.scrap_pile) > 0:
|
|
return self.scrap_pile[-1]
|
|
else:
|
|
return None
|
|
|
|
def pick_and_scrap(self) -> Card:
|
|
card = self.cards.pop(0)
|
|
self.scrap_pile.append(card)
|
|
return card
|
|
|
|
def draw(self) -> Card:
|
|
card = self.cards.pop(0)
|
|
if len(self.cards) == 0:
|
|
self.cards = self.scrap_pile[:-1].copy()
|
|
random.shuffle(self.cards)
|
|
self.scrap_pile = self.scrap_pile[-1:]
|
|
return card
|
|
|
|
def draw_from_scrap_pile(self) -> Card:
|
|
if len(self.scrap_pile) > 0:
|
|
return self.scrap_pile.pop(0)
|
|
else:
|
|
return self.draw()
|
|
|
|
def scrap(self, card: Card):
|
|
self.scrap_pile.append(card) |