""" blackjack_again.py $ python blackjack_again.py ----- blackjack --- Playing ... we have a . A hand of 2 cards is . A hand of 3 cards is . ----- again ---- Playing ... we have a . A hand of 2 cards is . A hand of 3 cards is . Jim Mahoney | Nov 2018 | cs.marlboro.college | MIT License """ import random suits= ['Diamonds', 'Hearts', 'Spades', 'Clubs'] ranks= ['Ace', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King'] class Card: """ a playing card has a rank and suit """ def __init__(self, rank, suit): self.rank = rank self.suit = suit def value(self): if self.rank == 'Ace': return 1 if self.rank == 'Two': return 2 if self.rank == 'Three': return 3 if self.rank == 'Four': return 4 if self.rank == 'Five': return 5 if self.rank == 'Six': return 6 if self.rank == 'Seven': return 7 if self.rank == 'Eight': return 8 if self.rank == 'Nine': return 9 else: return 10 def __str__(self): return "{} of {}".format(self.rank, self.suit) class Deck: """ a deck of cards can be created, shuffled, dealt from """ def __init__(self): self.cards = [] for suit in suits: for rank in ranks: card = Card(rank, suit) self.cards.append(card) def shuffle(self): return random.shuffle(self.cards) def deal_card(self): card = self.cards.pop(0) return card def cards_left(self): return len(self.cards) def __str__(self): return "".format(self.cards_left()) class Hand: """ A blackjack hand """ def __init__(self, deck, n_cards): self.cards= [] for i in range(n_cards): self.cards.append(deck.deal_card()) def value(self): result = 0 for card in self.cards: result = result + card.value() return result def __str__(self): result = "".format(self.value()) class Game: """ Do some blackjack stuff """ def __init__(self): self.deck = Deck() self.deck.shuffle() def play(self): """ deal two hands ; print some stuff """ print("Playing ... we have a {}.".format(self.deck)) for n in (2,3): hand = Hand(self.deck, n) print("A hand of {} cards is {}.".format(n, hand)) def main(): game = Game() print('----- blackjack ---') game.play() print('----- again ----') game.play() main()