예제 #1
0
class Round:
    """ Each game has at least one round. During a round the dealer and player
    are dealt a hand and they take turns until a winner is found.
    """
    def __init__(self, game):
        self.game = game
        # Deal two cards to each player
        self.player = Hand(self)
        self.dealer = Hand(self)

    def show_hands(self):
        # Check if the player has had their turn
        if self.game.playing:
            # It's the players turn, so only show one of the dealers card
            print("\nDealer's hand is:\n", self.dealer.cards[0],
                  "\n  <HIDDEN>")
        else:
            # The player has had their turn, show the dealers cards
            print("\nDealer's total is", self.dealer.value, "and",
                  self.dealer.__str__())
        # Always show all of the player's cards
        print("\nPlayer's total is", self.player.value, "and",
              self.player.__str__())

    def get_the_winner(self):
        chips = self.game.chips
        # Compare the player and dealer's values to find the winner
        if self.player.value > 21:
            # Player busts, player loses bet
            print("--Player busts!--")
            chips.lose_bet()

        elif self.dealer.value > 21:
            # Dealer_busts, player wins bet
            chips.win_bet()
            print("--Dealer busts, Player wins--")

        elif self.dealer.value > self.player.value:
            # Dealer wins, player loses bet
            chips.lose_bet()
            print("--Dealer wins!--")

        elif self.dealer.value < self.player.value:
            # Player wins, player wins bet
            chips.win_bet()
            print("--Player wins!--")

        elif self.dealer.value == self.player.value:
            # There is a tie
            print("--There has been a tie--")

    def play_round(self):
        self.player.setup()
        self.dealer.setup()
        print("--------------------------- ROUND", self.game.game_round,
              "---------------------------")
        # Prompt the Player for their bet
        self.game.chips.take_bet()

        # Show cards (but keep one dealer card hidden)
        print("\n___STARTING HANDS!___")
        self.show_hands()

        # Player starts
        turn = 1
        while self.game.playing:
            # Continue player's turn until STAND or BUST
            print("\n___PLAYER'S TURN (", turn, ")___")
            # Prompt for Player to Hit or Stand
            self.player.hit_or_stand()
            turn += 1

            # Check if player has bust
            if self.player.value > 21:
                # Break out of the loop and go to 'game over'
                self.game.playing = False

        # If Player hasn't busted, it is Dealers turn
        if self.player.value < 21:
            # Play Dealer's hand until Dealer reaches 17
            while self.dealer.value < 17:
                self.dealer.hit()

        # The game is over(Player has bust or dealer has over 17/bust
        print("\n___RESULT___\n")
        # Announce the winner
        self.get_the_winner()
        # start with an empty string
        self.show_hands()

        # Inform Player of their chips total
        print("\n\nYour chip total is: ", self.game.chips.total)
예제 #2
0
Tests all the methods in class Hand.
"""
hand1 = Hand(13)
print(hand1)

print("***print for hand2.bjvalue***")
hand2 = Hand(7)
print(hand2.bjValue())

print("***print for hand3.hitme***")
hand3 = Hand(2)
hand3.hitMe()
print(hand3)

print("print for hand2 __str__method")
print(hand2.__str__())
"""
four of diamonds
two of diamonds
four of spades
Ace of diamonds
King of diamonds
eight of spades
nine of clubs
nine of diamonds
eight of spades
eight of spades
four of clubs
four of clubs
ten of hearts
***print for hand2.bjvalue***