예제 #1
0
    def test_split(self):
        hand = Hand(1)
        hand.addCard(Card(0, 1))
        hand.addCard(Card(1, 1))
        deck = HandTest.FakeDeck()
        self.assertTrue(hand.canSplit())
        self.assertFalse(hand.isSplit())
        splitHands = hand.split(deck)
        self.assertEqual(1, splitHands[0].getBet())
        self.assertEqual(1, splitHands[1].getBet())
        self.assertTrue(splitHands[0].isSplit())
        self.assertTrue(splitHands[1].isSplit())
        self.assertFalse(splitHands[0].canSplit())
        self.assertFalse(splitHands[1].canSplit())
        self.assertEqual(hand.getCards()[0], splitHands[0].getCards()[0])
        self.assertEqual(Card(3, 0), splitHands[0].getCards()[1])
        self.assertEqual(hand.getCards()[1], splitHands[1].getCards()[0])
        self.assertEqual(Card(3, 1), splitHands[1].getCards()[1])

        hand = Hand(1)
        hand.addCard(Card(0, 1))
        hand.addCard(Card(1, 1))
        hand.addCard(Card(2, 1))
        self.assertFalse(hand.canSplit())
예제 #2
0
def deal():
    """ Returns void

    Deals cards, and checks for splitting
    """

    while True:
        try:
            wager = int(input("Place wager: "))
            if 1 <= wager <= balance:
                break
            else:
                print(
                    "!! Invalid Choice!! Please pick a number between 1 and %d"
                    % balance)
        except ValueError:
            print("!! Invalid Choice!! Please pick a number between 1 and %d" %
                  balance)

    deck = Deck()
    player = Hand()
    dealer = Hand()

    # deal two cards each for player and dealer
    for i in range(2):
        player.addCard(deck.dealCard())
        dealer.addCard(deck.dealCard())

    card_1 = player.getCard(0)
    card_2 = player.getCard(1)
    upcard = dealer.getCard(0)
    utils.printStatus(upcard, player)

    # check for splitting
    if player.canSplit():
        while True:
            choice = input("Would you like to Split (Y / N): ").upper()
            if choice == "Y":
                if balance < wager * 2:
                    print("Inadequate balance :(")
                else:
                    print("Splitting into two hands. \nHand #1")
                    player = Hand()
                    player.addCard(card_1)
                    player.addCard(deck.dealCard())
                    utils.printStatus(upcard, player)
                    engine(player, dealer, deck, wager)

                    # checks for adequate balance
                    if balance >= wager:
                        print("Hand #2")
                        player = Hand()
                        dealer = Hand()
                        player.addCard(card_2)
                        player.addCard(deck.dealCard())

                        for i in range(2):
                            dealer.addCard(deck.dealCard())

                        upcard = dealer.getCard(0)
                        utils.printStatus(upcard, player)
                        engine(player, dealer, deck, wager)
                    else:
                        print("Inadequate balance. Unable to play Hand #2 :(")
                    break
            elif choice == "N":
                engine(player, dealer, deck, wager)
                break
            else:
                print("!! Invalid Choice !! Please choose one of (Y / N)")
    else:
        engine(player, dealer, deck, wager)