Exemplo n.º 1
0
    def test_checkAce_notLower(self):  # Does not lower the value of Ace card
        deck = ["9", "A"]
        self.assertEqual(bs.value(deck), 20)

        deck = bs.checkAce(deck)
        self.assertEqual(bs.value(deck), 20)
        self.assertEqual(deck, ["9", "A"])
Exemplo n.º 2
0
    def test_checkAce_lower(self):  # Lowers the value of Ace card
        deck = ["10", "8", "A"]
        self.assertEqual(bs.value(deck), 29)

        deck = bs.checkAce(deck)
        self.assertEqual(bs.value(deck), 19)
        self.assertEqual(deck, ["10", "8", "a"])
Exemplo n.º 3
0
def dealerAfter(deck):
    sleep(1.5)
    print("Dealer:", end=' ')
    for card in deck:
        print(card, end=' ')
    print("")
    print("Value:", bjs.value(deck), "\n")
    sleep(1.5)
    while bjs.value(deck) < 17:
        drawCard(deck)
        print("Dealer drew", deck[-1])
        print("Value:", bjs.value(deck), "\n")
Exemplo n.º 4
0
    def test_checkBlackjack_False(
            self
    ):  # Ace and non-10-value card should NOT result in a blackjack
        deck = ["A", "9"]
        self.assertEqual(bs.value(deck), 20)

        self.assertFalse(bs.checkBlackjack(deck))
Exemplo n.º 5
0
def makeDecision(individual, pDeck, dDeck):
    pValue = bjs.value(pDeck)
    dValue = cardValues[dDeck[0]]

    rowCount = -1

    #  If the player gets a deck with two of the same cards.
    if len(pDeck) == 2 and (pDeck[0] == pDeck[1] or
                            ((pDeck[0] == 'a' and pDeck[1] == 'A') or
                             (pDeck[0] == 'A' and pDeck[1] == 'a'))):
        for pValueGuess in range(22, 3, -2):
            rowCount += 1
            columnCount = -1
            for dValueGuess in range(2, 12):
                columnCount += 1
                if dValue == dValueGuess and pValue == pValueGuess:
                    # print(individual[2])
                    return individual[2].item(rowCount, columnCount)

    #  If the player gets a soft deck
    elif 'A' in pDeck:
        for pValueGuess in range(20, 12, -1):
            rowCount += 1
            columnCount = -1
            for dValueGuess in range(2, 12):
                columnCount += 1
                if dValue == dValueGuess and pValue == pValueGuess:
                    # print(individual[1])
                    return individual[1].item(rowCount, columnCount)

    #  If the player gets a hard deck
    elif pDeck[0] != pDeck[1] or len(pDeck) > 2:
        for pValueGuess in range(20, 4, -1):
            rowCount += 1
            columnCount = -1
            for dValueGuess in range(2, 12):
                columnCount += 1
                if dValue == dValueGuess and pValue == pValueGuess:
                    # print(individual[0])
                    return individual[0].item(rowCount, columnCount)
Exemplo n.º 6
0
    def test_value7(self):  # Five cards, multiple of the same card, face card
        deck = ["K", "2", "3", "2", "2"]

        self.assertEqual(bs.value(deck), 19)
Exemplo n.º 7
0
    def test_bust_False(
            self):  # Value lower than 22 should NOT result in a bust
        deck = ["10", "7", "4"]
        self.assertEqual(bs.value(deck), 21)

        self.assertFalse(bs.bust(deck))
Exemplo n.º 8
0
def player(bet, dDeck):
    print("====================================================")
    print("Dealer:", dDeck[0], "\n")

    pDeck = []
    pDecision = "hit"
    drawCard(pDeck)

    #  While decision is to hit.
    while pDecision == "hit":
        drawCard(pDeck)

        #  Check for aces
        pDeck = bjs.checkAce(pDeck)

        if bjs.checkBlackjack(pDeck):
            bet *= 3
            return pDeck, bet

        print("You:", end=' ')
        for card in pDeck:
            print(card, end=' ')
        print("")
        print("Value:", bjs.value(pDeck), "\n")

        pDecision = getDecision(pDeck)

        if pDecision == "double down":
            bet *= 2
            drawCard(pDeck)

            print("You:", end=' ')
            for card in pDeck:
                print(card, end=' ')
            print("")
            print("Value:", bjs.value(pDeck), "\n")

            pDecision = "stand"

        if pDecision == "stand" or bjs.bust(pDeck):

            print("You:", end=' ')
            for card in pDeck:
                print(card, end=' ')
            print("")
            print("Value:", bjs.value(pDeck), "\n")

            return pDeck, bet

        elif pDecision == "split":
            bet *= 2

            pDeck1 = [pDeck[0]]
            pDeck2 = [pDeck[1]]
            pDecks = [pDeck1, pDeck2]

            deckCounter = -1
            for deck in pDecks:
                deckCounter += 1

                pDecision = "hit"

                while pDecision == "hit":
                    drawCard(deck)

                    deck = bjs.checkAce(deck)

                    print("You:", end=' ')
                    for card in deck:
                        print(card, end=' ')
                    print("")
                    print("Value:", bjs.value(deck))

                    pDecision = getDecision(deck)

                    if pDecision == "double down":
                        bet *= 2
                        drawCard(pDeck)
                        pDecision = "stand"

                    if pDecision == "stand" or bjs.bust(pDeck):
                        break
            return pDecks, bet
Exemplo n.º 9
0
    def test_checkBlackjack_True(
            self):  # Ace and 10-value card should result in a blackjack
        deck = ["A", "J"]
        self.assertEqual(bs.value(deck), 21)

        self.assertTrue(bs.checkBlackjack(deck))
Exemplo n.º 10
0
def botPlay(botStrat, dDeck):
    print("====================================================")
    print("Dealer:", dDeck[0], "\n")

    botChoice = "hit"
    bDeck = []
    drawCard(bDeck)

    # While bot decides to hit
    while botChoice == "hit":
        drawCard(bDeck)

        bDeck = bjs.checkAce(bDeck)

        if bjs.checkBlackjack(bDeck):
            return bDeck

        print("Bot:", end=' ')
        for card in bDeck:
            print(card, end=' ')
        print("")
        print("Value:", bjs.value(bDeck), "\n")

        botDecision = ga.makeDecision(botStrat, bDeck, dDeck)

        if botDecision == 0:
            botChoice = "stand"
            print("Bot stands\n")

        elif botDecision == 1:
            botChoice = "hit"
            print("Bot hits\n")

        elif botDecision == 2:
            botChoice = "double down"
            print("Bot doubles down\n")

        elif botDecision == 3:
            botChoice = "split"
            print("Bot splits\n")

        if botChoice == "double down":
            drawCard(bDeck)
            botChoice = "stand"

            print("Bot:", end=' ')
            for card in bDeck:
                print(card, end=' ')
            print("")
            print("Value:", bjs.value(bDeck), "\n")

        if botChoice == "stand" or bjs.bust(bDeck):

            print("Bot:", end=' ')
            for card in bDeck:
                print(card, end=' ')
            print("")
            print("Value:", bjs.value(bDeck), "\n")

            return bDeck

        elif botChoice == "split":
            bDeck1 = [bDeck[0]]
            bDeck2 = [bDeck[1]]
            bDecks = [bDeck1, bDeck2]

            deckCounter = -1
            for deck in bDecks:
                deckCounter += 1

                botChoice = "hit"

                while botChoice == "hit":
                    drawCard(deck)

                    deck = bjs.checkAce(deck)

                    print("Bot:", end=' ')
                    for card in deck:
                        print(card, end=' ')
                    print("")
                    print("Value:", bjs.value(deck), "\n")

                    botDecision = ga.makeDecision(botStrat, deck, dDeck)

                    if botDecision == 0:
                        botChoice = "stand"
                        print("Bot stands\n")

                    elif botDecision == 1:
                        botChoice = "hit"
                        print("Bot hits\n")

                    elif botDecision == 2:
                        botChoice = "double down"
                        print("Bot doubles down\n")

                    elif botDecision == 3:
                        botChoice = "split"
                        print("Bot splits\n")

                    if botChoice == "double down":
                        drawCard(bDeck)
                        botChoice = "stand"

                    if botChoice == "stand" or bjs.bust(bDeck):
                        break
            return bDecks
Exemplo n.º 11
0
    def test_value2(self):  # One face card
        deck = ["Q", "7"]

        self.assertEqual(bs.value(deck), 17)
Exemplo n.º 12
0
    def test_value1(self):  # Two number cards
        deck = ["5", "7"]

        self.assertEqual(bs.value(deck), 12)
Exemplo n.º 13
0
    def test_dealerAfterDraw(self):  # Dealer should draw one card
        dDeck = ["6", "10"]
        self.assertEqual(bs.value(dDeck), 16)

        bs.dealerAfter(dDeck)
        self.assertTrue(len(dDeck) == 3)
Exemplo n.º 14
0
    def test_dealerAfterNoDraw(self):  # Dealer should NOT draw any cards
        dDeck = ["7", "10"]
        self.assertEqual(bs.value(dDeck), 17)

        bs.dealerAfter(dDeck)
        self.assertTrue(len(dDeck) == 2)
Exemplo n.º 15
0
    def test_bust_True(self):  # Value higher than 21 should result in a bust
        deck = ["10", "7", "5"]
        self.assertEqual(bs.value(deck), 22)

        self.assertTrue(bs.bust(deck))
Exemplo n.º 16
0
    def test_value6(self):  # Three cards, hard ace
        deck = ["7", "a", "9"]

        self.assertEqual(bs.value(deck), 17)
Exemplo n.º 17
0
    def test_value5(self):  # Two Ace cards
        deck = ["A", "a"]

        self.assertEqual(bs.value(deck), 12)
Exemplo n.º 18
0
    def test_value4(self):  # One Ace and one face card
        deck = ["A", "J"]

        self.assertEqual(bs.value(deck), 21)
Exemplo n.º 19
0
    def test_value3(self):  # Two face cards
        deck = ["K", "J"]

        self.assertEqual(bs.value(deck), 20)