diff --git a/Acronymbot.py b/Acronymbot.py index e77ad1b..13006c5 100644 --- a/Acronymbot.py +++ b/Acronymbot.py @@ -1,7 +1,9 @@ import discord +import sqlite3 from discord import app_commands from BlackJack import BlackJack + botIntents = discord.Intents.all() client = discord.Client(intents=botIntents) @@ -75,7 +77,7 @@ async def bj(interaction: discord.Interaction): discoutput = lambda m: discordOutput(interaction, m) blackJack = BlackJack(discinput, discoutput) await interaction.response.send_message("Let's play Black Jack!") - await blackJack.play_game(interaction.user, 100) + await blackJack.play_game(interaction.user.id, 100) async def discordInput(interaction: discord.Interaction, message:str): response = HitOrStand() @@ -86,6 +88,14 @@ async def discordInput(interaction: discord.Interaction, message:str): async def discordOutput(interaction: discord.Interaction, message): await interaction.followup.send(message) +@tree.command(description="Find your Balance") +async def bal(interaction: discord.Interaction): + conn = sqlite3.connect("ledger.db") + cur = conn.cursor() + ID = interaction.user.id + data = cur.execute("SELECT * FROM ledger WHERE USERID = ?", (ID,)) + await interaction.response.send_message(data) + """ #### Fin #### """ diff --git a/BlackJack.py b/BlackJack.py index 160c2da..94ebf8a 100644 --- a/BlackJack.py +++ b/BlackJack.py @@ -48,7 +48,10 @@ def generateHand(hand, deck, handSize = 2): addCardToHand(hand, deck) i += 1 -def handNumbersToCards(hand): return [convertNumberToCard(a) for a in hand] +def handNumbersToCards(hand): + cards = "" + for card in hand: + cards += convertNumberToCard(card) def getHandTotal(hand): cardValue = lambda c: min(c % 13 + 1, 10) @@ -60,23 +63,7 @@ def getHandTotal(hand): if (i + card) > 21: card = 1 i += card - return i - -class BlackJackLedger(Ledger): - def __init__(self) -> None: - super().__init__() - - def updateLedger(self, data, oldData): - ID, money, wins, losses = oldData - _, newMoney, newWins, newLosses = data - - wins += newWins - losses += newLosses - money += newMoney - data = [ID, money, wins, losses] - return data - - + return i class BlackJack: def __init__(self, recv, send): @@ -91,7 +78,7 @@ class BlackJack: self.recv = recv self.send = send - ledger = BlackJackLedger() + self.ledger = Ledger.Ledger() def getPH(self): return self.playerHand @@ -152,9 +139,10 @@ class BlackJack: validInput = False gameOver = False playerStood = False - playerStats = self.readLedger(ID) + playerStats = self.ledger.readLedger(ID) if playerStats is None: - playerStats = (ID, 100, 0, 0) + self.ledger.writeLedger(ID) + playerStats = self.ledger.readLedger while not gameOver: playerWinState = self.checkHandState(self.playerHand) @@ -199,13 +187,17 @@ class BlackJack: "\n" + "Dealers hand = " + str(getHandTotal(self.dealerHand)) + ": " + handNumbersToCards(self.dealerHand)) if playerWinState == "w": await self.send("You won!") - # self.writeLedger(ID, 2*bet, True) + win = (2*bet, 1, 0, ID) + self.ledger.updateLedger(playerStats, win) elif playerWinState == "l": await self.send("You busted!") - # self.writeLedger(ID, -bet, False) + loss = (-bet, 0, 1, ID) + self.ledger.updateLedger(playerStats, loss) elif dealerWinState == "w": await self.send("The Dealer reached 21 before you!") - # self.writeLedger(ID, -bet, False) + loss = (-bet, 0, 1, ID) + self.ledger.updateLedger(playerStats, loss) elif dealerWinState == "l": await self.send("The Dealer busted before you!") - # self.writeLedger(ID, 2*bet, True) + win = (2*bet, 1, 0, ID) + self.ledger.updateLedger(playerStats, win) diff --git a/Ledger.py b/Ledger.py index fd1ccb9..fc0fe72 100644 --- a/Ledger.py +++ b/Ledger.py @@ -2,39 +2,50 @@ import sqlite3 class Ledger(): def __init__(self) -> None: - self.data = [] - self.indexes = {} # ID: Index + self.db = sqlite3.connect("ledger.db") + self.data = self.db.cursor() + self.data.execute(""" CREATE TABLE IF NOT EXISTS ledger ( + ID integer PRIMARY KEY, + USERID integer, + MONEY integer DEFAULT 100, + WINS integer DEFAULT 0, + LOSSES integer DEFAULT 0 + ); """) def readLedger(self, ID): - data = None - index = self.indexes.get(ID, None) - if index is not None: - data = self.data[index] + self.data.execute("""SELECT USERID, MONEY, WINS, LOSSES FROM ledger WHERE USERID = ?""", (ID,)) + data = self.data.fetchone() return data - def writeLedger(self, ID, data): - oldData = self.readLedger(ID) - if oldData is not None: - data = self.updateLedger(data, oldData) - index = self.indexes[ID] - self.data[index] = data - else: - self.data.append(data) - index = len(self.data) - 1 - self.indexes.update({ID: index}) - - self.saveLedger() + def writeLedger(self, ID): + query = """ INSERT INTO ledger(USERID) + VALUES(?) """ + self.data.execute(query, (ID,)) + self.db.commit() def updateLedger(self, data, newData): - return data + query = """ UPDATE ledger + SET MONEY = ?, + WINS = ?, + LOSSES = ?, + WHERE USERID = ?""" + data = [data[i] + newData[i] for i in range(len(data))] + self.data.execute(query, data) def main(): - conn = sqlite3.connect("ledger.db") - cur = conn.cursor() - table = """ CREATE TABLE IF NOT EXISTS + ledger = Ledger() + ledger.writeLedger(10121) + ID = 10121 + data = ledger.readLedger(ID) - """ - cur.execute(table) + ID = 2 + playerStats = ledger.readLedger(ID) + if playerStats is None: + print("Not real") + ledger.writeLedger(ID) + playerStats = ledger.readLedger(ID) + + print(playerStats) if __name__ == "__main__": main() \ No newline at end of file diff --git a/__pycache__/BlackJack.cpython-310.pyc b/__pycache__/BlackJack.cpython-310.pyc index fbb709f..e1858c4 100644 Binary files a/__pycache__/BlackJack.cpython-310.pyc and b/__pycache__/BlackJack.cpython-310.pyc differ diff --git a/__pycache__/Ledger.cpython-310.pyc b/__pycache__/Ledger.cpython-310.pyc new file mode 100644 index 0000000..eb199f5 Binary files /dev/null and b/__pycache__/Ledger.cpython-310.pyc differ diff --git a/ledger.db b/ledger.db new file mode 100644 index 0000000..64d1303 Binary files /dev/null and b/ledger.db differ