From 762841fb202c36b5764c229952c337a53c040051 Mon Sep 17 00:00:00 2001 From: BigGamerGary Date: Mon, 12 Jun 2023 20:30:53 +1000 Subject: [PATCH] Calculator - Equals is broken --- Calculator.py | 274 +++++++++++++++++++++++++------------------------- Gamepicker.py | 16 +-- 2 files changed, 136 insertions(+), 154 deletions(-) diff --git a/Calculator.py b/Calculator.py index fb9d45f..bfabc35 100644 --- a/Calculator.py +++ b/Calculator.py @@ -1,155 +1,151 @@ import discord +addition = lambda x, y: x + y +subtraction = lambda x, y: x - y +multiplication = lambda x, y: x * y +division = lambda x, y: x / y +exponent = lambda x, y: x ** y + +funckyDict = { + addition: "+", + subtraction: "-", + multiplication: "*", + division: "/", + exponent: "^" +} + + +async def number(self, interaction: discord.Interaction, number): + if self.output is not None: + self.inputOne = 0 + self.output = None + self.inputOne = self.inputOne * 10 + number + self.numDigs = self.numDigs + 1 + await interaction.response.edit_message( + content=self.display(), + view=self) + +async def operator(self, interaction: discord.Interaction, operation): + self.output = None + self.inputTwo = self.inputOne + self.inputOne = 0 + self.expression = operation + await interaction.response.edit_message( + content=self.display(), + view=self) + + +class NumberButton(discord.ui.Button): + + def __init__(self, number: int, row) -> None: + super().__init__() + self.number = number + self.row = row + self.style = discord.ButtonStyle.blurple + self.label = str(number) + + async def callback(self, interaction: discord.Interaction): + await number(self.view, interaction, self.number) + +class OperatorButton(discord.ui.Button): + + def __init__(self, function, row) -> None: + super().__init__() + self.function = function + self.row = row + self.style = discord.ButtonStyle.red + self.label = funckyDict[function] + + async def callback(self, interaction: discord.Interaction): + await operator(self.view, interaction, self.function) + class Calculator(discord.ui.View): - def __init__(self, *, timeout=180): - super().__init__(timeout=timeout) - self.numDigs = 0 - self.MAXIMUMBARSIZE = 30 - m = 0 - self.inputOne = 0 - self.inputTwo = None - self.expression = None - self.output = None - self.digit = 1 - self.addition = lambda x, y: x + y - self.subtraction = lambda x, y: x - y - self.multiplication = lambda x, y: x * y - self.division = lambda x, y: x / y - self.exponent = lambda x, y: x ** y - self.funckyDict = { - self.addition: "+", - self.subtraction: "-", - self.multiplication: "*", - self.division: "/", - self.exponent: "^" - } - self.clearRequirement = 0 + def __init__(self, *, timeout=180): + super().__init__(timeout=timeout) + self.numDigs = 0 + self.MAXIMUMBARSIZE = 30 + m = 0 + self.inputOne = 0 + self.inputTwo = None + self.expression = None + self.output = None + self.digit = 1 - def numDigits(self, integer): - numDigits = 0 - while(integer): - numDigits += 1 - integer = integer // 10 - return numDigits - def clear(self): - self.inputOne = 0 - self.inputTwo = None - self.output = None - self.clearRequirement = 0 + self.clearRequirement = 0 - def display(self): - inputOneLength = self.numDigits(self.inputOne) - inputTwoLength = self.numDigits(self.inputTwo) - outputLength = self.numDigits(self.output) - if (self.inputTwo is None) and (self.output is None): - padding = self.MAXIMUMBARSIZE - inputOneLength - 1 - displayOutput = " ".join(['`', ' ' * padding, f"{self.inputOne}", "`"]) - elif (self.output is None): - padding = self.MAXIMUMBARSIZE - inputOneLength - inputTwoLength - 3 - displayOutput = " ".join(['`', ' ' * padding, f"{self.inputTwo}", f"{self.funckyDict[self.expression]}", f"{self.inputOne}", "`"]) - else: - padding = self.MAXIMUMBARSIZE - inputOneLength - inputTwoLength - outputLength - 4 - displayOutput = " ".join(['`', ' ' * padding, f"{self.inputTwo}", f"{self.funckyDict[self.expression]}", f"{self.inputOne}", "=", f"{self.output}", "`"]) - return displayOutput - - async def number(self, interaction: discord.Interaction, number): - if self.output is not None: - self.inputOne = 0 - self.output = None - self.inputOne = self.inputOne * 10 + number - self.numDigs = self.numDigs + 1 - await interaction.response.edit_message( - content=self.display(), - view=self) - - async def operator(self, interaction: discord.Interaction, operation): - self.output = None - self.inputTwo = self.inputOne - self.inputOne = 0 - self.expression = operation - await interaction.response.edit_message( - content=self.display(), - view=self) + numRows = 4 + numColumns = 4 - @discord.ui.button(label="^", style=discord.ButtonStyle.red, row=4) - async def power(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.operator(interaction, self.exponent) - - @discord.ui.button(label="0", style=discord.ButtonStyle.blurple,row=4) - async def zero(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 0) - - @discord.ui.button(label="1", style=discord.ButtonStyle.blurple, row=1) - async def one(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 1) + buttonFunctions = [ + [1, 2, 3, addition], + [4, 5, 6, multiplication], + [7, 8, 9, subtraction], + [exponent, 0, None, division] + ] - @discord.ui.button(label="2", style=discord.ButtonStyle.blurple, row=1) - async def two(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 2) + for i in range(0, numRows): + for j in range(0, numColumns): + item = buttonFunctions[i][j] + if item is None: + continue + if isinstance(item, int): - @discord.ui.button(label="3", style=discord.ButtonStyle.blurple, row=1) - async def three(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 3) + button = NumberButton(item, i) + else: - @discord.ui.button(label="4", style=discord.ButtonStyle.blurple, row=2) - async def four(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 4) + button = OperatorButton(item, i) + self.add_item(button) - @discord.ui.button(label="5", style=discord.ButtonStyle.blurple, row=2) - async def five(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 5) - @discord.ui.button(label="6", style=discord.ButtonStyle.blurple, row=2) - async def six(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 6) - @discord.ui.button(label="7", style=discord.ButtonStyle.blurple, row=3) - async def seven(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 7) + def numDigits(self, integer): + numDigits = 0 + while(integer): + numDigits += 1 + integer = integer // 10 + return numDigits - @discord.ui.button(label="8", style=discord.ButtonStyle.blurple, row=3) - async def eight(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 8) + def clear(self): + self.inputOne = 0 + self.inputTwo = None + self.output = None + self.clearRequirement = 0 - @discord.ui.button(label="9", style=discord.ButtonStyle.blurple, row=3) - async def nine(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.number(interaction, 9) + def display(self): + inputOneLength = self.numDigits(self.inputOne) + inputTwoLength = self.numDigits(self.inputTwo) + outputLength = self.numDigits(self.output) + if (self.inputTwo is None) and (self.output is None): + padding = self.MAXIMUMBARSIZE - inputOneLength - 1 + displayOutput = " ".join(['`', ' ' * padding, f"{self.inputOne}", "`"]) + elif (self.output is None): + padding = self.MAXIMUMBARSIZE - inputOneLength - inputTwoLength - 3 + displayOutput = " ".join(['`', ' ' * padding, f"{self.inputTwo}", f"{funckyDict[self.expression]}", f"{self.inputOne}", "`"]) + else: + padding = self.MAXIMUMBARSIZE - inputOneLength - inputTwoLength - outputLength - 4 + displayOutput = " ".join(['`', ' ' * padding, f"{self.inputTwo}", f"{funckyDict[self.expression]}", f"{self.inputOne}", "=", f"{self.output}", "`"]) + return displayOutput - @discord.ui.button(label="+", style=discord.ButtonStyle.red, row=1) - async def plus(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.operator(interaction, self.addition) - - @discord.ui.button(label="*", style=discord.ButtonStyle.red, row=2) - async def mult(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.operator(interaction, self.multiplication) - - @discord.ui.button(label="-", style=discord.ButtonStyle.red, row=3) - async def minus(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.operator(interaction, self.subtraction) - - @discord.ui.button(label="=", style=discord.ButtonStyle.green, row=4) - async def equals(self, interaction: discord.Interaction, button: discord.ui.Button): - - if self.inputTwo is None: - await interaction.response.edit_message( - content="ERROR", - view=self) - - if self.clearRequirement: - self.clear() - else: - self.clearRequirement += 1 - self.output = self.expression(self.inputTwo, self.inputOne) - if (self.inputTwo == 9) and (self.inputOne == 10): - self.output = 21 - await interaction.response.edit_message( - content=self.display(), - view=self) - - self.inputOne = self.output - self.inputTwo = None - - @discord.ui.button(label="/", style=discord.ButtonStyle.red, row=4) - async def divide(self, interaction: discord.Interaction, button: discord.ui.Button): - await self.operator(interaction, self.division) + @discord.ui.button(label="=", style=discord.ButtonStyle.green, row=4) + async def equals(self, interaction: discord.Interaction, button: discord.ui.Button): + + if self.inputTwo is None: + await interaction.response.edit_message( + content="ERROR", + view=self) + + if self.clearRequirement: + self.clearRequirement = 0 + self.clear() + else: + self.clearRequirement += 1 + self.output = self.expression(self.inputTwo, self.inputOne) + if (self.inputTwo == 9) and (self.inputOne == 10): + self.output = 21 + await interaction.response.edit_message( + content=self.display(), + view=self) + + self.inputOne = self.output + self.inputTwo = None \ No newline at end of file diff --git a/Gamepicker.py b/Gamepicker.py index 1929221..15ab5a8 100644 --- a/Gamepicker.py +++ b/Gamepicker.py @@ -22,6 +22,7 @@ def pick_game(): randomIndex = random.randrange(0, len(games)) coinFlip = random.randrange(0, 2) + print(coinFlip) if coinFlip: return f"Valorant ({games[randomIndex]})" @@ -29,18 +30,3 @@ def pick_game(): return games[randomIndex] -I = 1000000000 -i = I -zeros = 0 -ones = 0 -while i > 0: - number = random.randrange(0, 2) - if number: - ones += 1 - - else: - zeros += 1 - i -= 1 - -percentZeros = zeros/I -print(percentZeros)