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"])
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"])
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")
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))
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)
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)
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))
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
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))
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
def test_value2(self): # One face card deck = ["Q", "7"] self.assertEqual(bs.value(deck), 17)
def test_value1(self): # Two number cards deck = ["5", "7"] self.assertEqual(bs.value(deck), 12)
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)
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)
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))
def test_value6(self): # Three cards, hard ace deck = ["7", "a", "9"] self.assertEqual(bs.value(deck), 17)
def test_value5(self): # Two Ace cards deck = ["A", "a"] self.assertEqual(bs.value(deck), 12)
def test_value4(self): # One Ace and one face card deck = ["A", "J"] self.assertEqual(bs.value(deck), 21)
def test_value3(self): # Two face cards deck = ["K", "J"] self.assertEqual(bs.value(deck), 20)