diff --git a/Acronymbot.py b/Acronymbot.py index d160a58..cb789b6 100644 --- a/Acronymbot.py +++ b/Acronymbot.py @@ -85,8 +85,7 @@ async def bj(interaction: discord.Interaction): discinput = lambda m: discordInput(interaction, m) discoutput = lambda m: discordOutput(interaction, m) await interaction.response.send_message("Let's play Black Jack!") - await blackJack.play_game(discinput, discoutput) - # await blackJack.play_game(interaction.user.id, 100, discinput, discoutput) + await blackJack.play_game(interaction.user.id, 100, discinput, discoutput) async def discordInput(interaction: discord.Interaction, message:str): response = HitOrStand() @@ -107,7 +106,6 @@ async def bal(interaction: discord.Interaction): """ #### Calculator #### """ - @tree.command(description="Do Meth") async def calculator(interaction: discord.Interaction): await interaction.response.defer() diff --git a/BlackJack.py b/BlackJack.py index c0b65c0..e6f8258 100644 --- a/BlackJack.py +++ b/BlackJack.py @@ -1,6 +1,12 @@ import random from Ledger import Ledger +#TODO Kill Benson +#TODO Starting a game with 21 fucks with hidden cards +#TODO Look into 5card jack thingo that Tim mentioned +#TODO Insurance - If dealer starts with 21, you can bet against it and win your money back +#TODO Make each game session more distinct (Embeds?) + # Game States INIT = 0 PLAYERTURN = 1 @@ -112,8 +118,11 @@ class Hand(): def sortHand(self): self.hand.sort() - def add_to_hand(self, card): - self.hand.append(card) + def add_to_hand(self, card, index = None): + if index is None: + self.hand.append(card) + else: + self.hand.insert(index, card) def remove_from_hand(self, index): return self.hand.pop(index) @@ -121,7 +130,7 @@ class Hand(): def hide_card(self, index): card = self.remove_from_hand(index) card.turn_card() - self.add_to_hand(card) + self.add_to_hand(card, index) def __len__(self): return len(self.hand) @@ -132,7 +141,7 @@ class Hand(): string += str(card) string += " " return string - + def __repr__(self) -> str: value = 0 aces = 0 @@ -146,14 +155,15 @@ class Hand(): value += card.value # Dynamically add ace value based on ideal rules - card = 11 - for _ in range(aces): - - if value <= 10: - card = 11 - if value > 10: - card = 1 - value += card + maxAceValue = aces * 11 + tempValue = value + maxAceValue + if tempValue < 21: + return str(tempValue) + while (tempValue > 21) and aces > 0: + tempValue = tempValue - 10 + aces = aces - 1 + + value = tempValue return str(value) @@ -198,12 +208,15 @@ class BlackJack: await send(string) - async def play_game(self, recv, send): + async def play_game(self, ID, bet, recv, send): gameState = INIT while gameState != OVER: if gameState == INIT: - # TODO: Load player statistics + playerStats = self.ledger.read(ID) + if playerStats is None: + self.ledger.write(ID) + playerStats = self.ledger.read(ID) self.game_setup() gameState = PLAYERTURN @@ -214,6 +227,7 @@ class BlackJack: if playerHit: self.deal_card(self.playerHand) else: + #TODO Rename hide_card function self.dealerHand.hide_card(1) gameState = DEALERTURN @@ -224,6 +238,9 @@ class BlackJack: if gameState == DEALERTURN: + if int(repr(self.dealerHand)) > int(repr(self.playerHand)): + gameState = FINISHED + continue self.deal_card(self.dealerHand) if int(repr(self.dealerHand)) >= 17: gameState = FINISHED @@ -263,31 +280,43 @@ class BlackJack: await send("You tied") elif playerBlackJack: await send("You reached BlackJack!") + win = (2*bet, 1, 0, ID) + self.ledger.update(ID, win) elif dealerBlackJack: await send("The dealer reached BlackJack!") + loss = (-bet, 0, 1, ID) + self.ledger.update(ID, loss) elif playerBust: await send("You busted!") + loss = (-bet, 0, 1, ID) + self.ledger.update(ID, loss) elif dealerBust: await send("The dealer busted!") + win = (2*bet, 1, 0, ID) + self.ledger.update(ID, win) elif playerHigher: await send("You won!") + win = (2*bet, 1, 0, ID) + self.ledger.update(ID, win) elif dealerHigher: await send("You lost!") + loss = (-bet, 0, 1, ID) + self.ledger.update(ID, loss) else: await send("Report this game to my creator!") - if len(self.deck) < 0.25 * 51: self.deck.return_all_from_discard() self.deck.shuffle() await send("Everyday I'm shuffling") gameState = OVER - def main(): game = BlackJack() trueFalseInput = lambda x: input(x) == "h" game.play_game(recv=trueFalseInput, send=print) + pass + if __name__ == "__main__": main() diff --git a/__pycache__/BlackJack.cpython-310.pyc b/__pycache__/BlackJack.cpython-310.pyc index 5a665c5..d5d9e8c 100644 Binary files a/__pycache__/BlackJack.cpython-310.pyc and b/__pycache__/BlackJack.cpython-310.pyc differ diff --git a/ledger.db b/ledger.db index 552732d..3b89f7e 100644 Binary files a/ledger.db and b/ledger.db differ