Made Blackjack functions more specific
This commit is contained in:
65
BlackJack.py
65
BlackJack.py
@@ -27,21 +27,13 @@ def convertNumberToCard(cardNumber):
|
|||||||
|
|
||||||
return "{value}{suit} ".format(value=str(cardNumber), suit=cardSuit)
|
return "{value}{suit} ".format(value=str(cardNumber), suit=cardSuit)
|
||||||
|
|
||||||
|
|
||||||
def generateDeck():
|
def generateDeck():
|
||||||
deck = []
|
return [x for x in range(0, 51)]
|
||||||
while len(deck) < 52:
|
|
||||||
newCard = random.randint(0, 51)
|
|
||||||
if deck.count(newCard) == 0:
|
|
||||||
deck.append(newCard)
|
|
||||||
return deck
|
|
||||||
|
|
||||||
|
|
||||||
def addCardToHand(hand, deck):
|
def addCardToHand(hand, deck):
|
||||||
card = deck.pop(0)
|
card = deck.pop(0)
|
||||||
hand.append(card)
|
hand.append(card)
|
||||||
|
|
||||||
|
|
||||||
def generateHand(hand, deck, handSize = 2):
|
def generateHand(hand, deck, handSize = 2):
|
||||||
i = 0
|
i = 0
|
||||||
while i < handSize:
|
while i < handSize:
|
||||||
@@ -67,35 +59,35 @@ def getHandTotal(hand):
|
|||||||
return i
|
return i
|
||||||
|
|
||||||
class BlackJack:
|
class BlackJack:
|
||||||
def __init__(self, recv, send):
|
def __init__(self):
|
||||||
self.playerTurn = True
|
self.playerTurn = True
|
||||||
|
|
||||||
self.deck = generateDeck()
|
self.deck = generateDeck()
|
||||||
|
random.shuffle(self.deck)
|
||||||
|
self.discard = []
|
||||||
self.playerHand = []
|
self.playerHand = []
|
||||||
generateHand(self.playerHand, self.deck)
|
|
||||||
self.dealerHand = []
|
self.dealerHand = []
|
||||||
generateHand(self.dealerHand, self.deck)
|
|
||||||
|
|
||||||
self.recv = recv
|
|
||||||
self.send = send
|
|
||||||
|
|
||||||
self.ledger = Ledger.Ledger()
|
self.ledger = Ledger.Ledger()
|
||||||
|
|
||||||
def getPH(self):
|
def getPH(self):
|
||||||
return self.playerHand
|
return self.playerHand
|
||||||
|
|
||||||
def returnCards(self):
|
def getDH(self):
|
||||||
self.playerHand.clear()
|
return self.dealerHand
|
||||||
self.dealerHand.clear()
|
|
||||||
|
|
||||||
def shuffle(self):
|
def returnCards(self):
|
||||||
self.returnCards()
|
self.discard.extend(self.playerHand)
|
||||||
self.deck = generateDeck()
|
self.playerHand.clear()
|
||||||
|
self.discard.extend(self.dealerHand)
|
||||||
|
self.playerHand.clear()
|
||||||
|
|
||||||
|
def deal(self):
|
||||||
generateHand(self.playerHand, self.deck)
|
generateHand(self.playerHand, self.deck)
|
||||||
generateHand(self.dealerHand, self.deck)
|
generateHand(self.dealerHand, self.deck)
|
||||||
|
|
||||||
def getDH(self):
|
def shuffle(self):
|
||||||
return self.dealerHand
|
self.deck.extend(self.discard)
|
||||||
|
self.discard.clear()
|
||||||
|
random.shuffle(self.deck)
|
||||||
|
|
||||||
def stand(self):
|
def stand(self):
|
||||||
if self.playerTurn:
|
if self.playerTurn:
|
||||||
@@ -136,7 +128,7 @@ class BlackJack:
|
|||||||
gameOver = True
|
gameOver = True
|
||||||
return gameOver
|
return gameOver
|
||||||
|
|
||||||
async def play_game(self, ID, bet):
|
async def play_game(self, ID, bet, recv, send):
|
||||||
validInput = False
|
validInput = False
|
||||||
gameOver = False
|
gameOver = False
|
||||||
playerStood = False
|
playerStood = False
|
||||||
@@ -146,15 +138,16 @@ class BlackJack:
|
|||||||
playerStats = self.ledger.readLedger
|
playerStats = self.ledger.readLedger
|
||||||
|
|
||||||
while not gameOver:
|
while not gameOver:
|
||||||
|
self.deal()
|
||||||
playerWinState = self.checkHandState(self.playerHand)
|
playerWinState = self.checkHandState(self.playerHand)
|
||||||
dealerWinState = self.checkHandState(self.dealerHand)
|
dealerWinState = self.checkHandState(self.dealerHand)
|
||||||
gameOver = self.checkGameOver(playerWinState) or self.checkGameOver(dealerWinState)
|
gameOver = self.checkGameOver(playerWinState) or self.checkGameOver(dealerWinState)
|
||||||
if gameOver:
|
if gameOver:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
await self.send("Players hand = " + str(getHandTotal(self.playerHand)) + ": " + handNumbersToCards(
|
await send("Players hand = " + str(getHandTotal(self.playerHand)) + ": " + handNumbersToCards(
|
||||||
self.playerHand) + "\n" + "Dealers hand = ??: " + convertNumberToCard(self.dealerHand[0]) + "??")
|
self.playerHand) + "\n" + "Dealers hand = ??: " + convertNumberToCard(self.dealerHand[0]) + "??")
|
||||||
play = await self.recv("Hit or Stand? (h/s)")
|
play = await recv("Hit or Stand? (h/s)")
|
||||||
while not validInput:
|
while not validInput:
|
||||||
if play == "h":
|
if play == "h":
|
||||||
self.hit()
|
self.hit()
|
||||||
@@ -184,21 +177,27 @@ class BlackJack:
|
|||||||
if self.checkGameOver(dealerWinState):
|
if self.checkGameOver(dealerWinState):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
await self.send("Players hand = " + str(getHandTotal(self.playerHand)) + ": " + handNumbersToCards(self.playerHand) +
|
await send("Players hand = " + str(getHandTotal(self.playerHand)) + ": " + handNumbersToCards(self.playerHand) +
|
||||||
"\n" + "Dealers hand = " + str(getHandTotal(self.dealerHand)) + ": " + handNumbersToCards(self.dealerHand))
|
"\n" + "Dealers hand = " + str(getHandTotal(self.dealerHand)) + ": " + handNumbersToCards(self.dealerHand))
|
||||||
if playerWinState == "w":
|
if playerWinState == "w":
|
||||||
await self.send("You won!")
|
await send("You won!")
|
||||||
win = (2*bet, 1, 0, ID)
|
win = (2*bet, 1, 0, ID)
|
||||||
self.ledger.updateLedger(playerStats, win)
|
self.ledger.updateLedger(playerStats, win)
|
||||||
elif playerWinState == "l":
|
elif playerWinState == "l":
|
||||||
await self.send("You busted!")
|
await send("You busted!")
|
||||||
loss = (-bet, 0, 1, ID)
|
loss = (-bet, 0, 1, ID)
|
||||||
self.ledger.updateLedger(playerStats, loss)
|
self.ledger.updateLedger(playerStats, loss)
|
||||||
elif dealerWinState == "w":
|
elif dealerWinState == "w":
|
||||||
await self.send("The Dealer reached 21 before you!")
|
await send("The Dealer reached 21 before you!")
|
||||||
loss = (-bet, 0, 1, ID)
|
loss = (-bet, 0, 1, ID)
|
||||||
self.ledger.updateLedger(playerStats, loss)
|
self.ledger.updateLedger(playerStats, loss)
|
||||||
elif dealerWinState == "l":
|
elif dealerWinState == "l":
|
||||||
await self.send("The Dealer busted before you!")
|
await send("The Dealer busted before you!")
|
||||||
win = (2*bet, 1, 0, ID)
|
win = (2*bet, 1, 0, ID)
|
||||||
self.ledger.updateLedger(playerStats, win)
|
self.ledger.updateLedger(playerStats, win)
|
||||||
|
|
||||||
|
if len(self.deck) < 0.25 * 52:
|
||||||
|
await send("Shuffling Deck")
|
||||||
|
self.returnCards()
|
||||||
|
self.shuffle()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user