# Python OOP implementation of blackjack. from random import choice class Card: def __init__(self): # Set colour as random between red and black self.colour = choice(["red", "black"]) # Set suit depending on colour since a suit has an allocated colour self.suit = choice(["hearts", "diamonds"]) if self.colour == "red" else choice(["clubs", "spades"]) # Set value self.value = choice(["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"]) # Set whether the value is a face card or not self.face = True if self.value in ["Jack", "Queen", "King"] else False class Player: def __init__(self, number=None): self.name = f"player-{number}" self.cards = [] # This is so each player can take cards until they are "done" # Then the dealer can take his cards self.done = False def show_cards(self, players): print(f"{self.name}'s cards:") for card in self.cards: print(f"> {card.value} of {card.suit}") print() class Dealer(Player): def __init__(self): super().__init__(self) self.name = "dealer" def show_cards(self, players): print(f"{self.name}'s cards:") for player in players[1:]: if player.done is False: print(f"> {self.cards[0].value} of {self.cards[0].suit}") for card in self.cards[1:]: print(f"> HIDDEN") print() return for card in self.cards: print(f"> {card.value} of {card.suit}") print() class Game: def __init__(self): self.players = [Dealer()] for player_num in range(1): self.players.append(Player(player_num+1)) self.deal_cards() for player in self.players: player.show_cards(self.players) def deal_cards(self): for player in self.players: for _ in range(2): player.cards.append(Card()) if __name__ == "__main__": game = Game()