diff --git a/definitions.py b/definitions.py index 9e77cad..87d13c6 100644 --- a/definitions.py +++ b/definitions.py @@ -197,7 +197,46 @@ class LuckyScoreType(Enum): LUCKY = 'lucky' VERY_LUCKY = 'very lucky' -class RouletteBetType(Enum): +class RouletteNumbers(Enum): + 0 = '0' + 1 = '1' + 2 = '2' + 3 = '3' + 4 = '4' + 5 = '5' + 6 = '6' + 7 = '7' + 8 = '8' + 9 = '9' + 10 = '10' + 11 = '11' + 12 = '12' + 13 = '13' + 14 = '14' + 15 = '15' + 16 = '16' + 17 = '17' + 18 = '18' + 19 = '19' + 20 = '20' + 21 = '21' + 22 = '22' + 23 = '23' + 24 = '24' + 25 = '25' + 26 = '26' + 27 = '27' + 28 = '28' + 29 = '29' + 30 = '30' + 31 = '31' + 32 = '32' + 33 = '33' + 34 = '34' + 35 = '35' + 36 = '36' + +class RouletteBetType(RouletteNumbers): RED = 'red' BLACK = 'black' GREEN = 'green' @@ -205,4 +244,4 @@ class RouletteBetType(Enum): EVEN = 'even' NONE = 'none' HIGH = 'high' - LOW = 'low' \ No newline at end of file + LOW = 'low' diff --git a/src/models/roulette.py b/src/models/roulette.py index 3980bb9..05907f8 100644 --- a/src/models/roulette.py +++ b/src/models/roulette.py @@ -78,18 +78,27 @@ def play(self, user_id, bet_size, bet_type_arg: str) -> str: message = self.play_odd_even(user_id, bet_size, bet_type) case RouletteBetType.HIGH | RouletteBetType.LOW: message = self.play_high_low(user_id, bet_size, bet_type) + case RouletteNumbers(): + message = self.play_number(user_id, bet_size, bet_type) case RouletteBetType.NONE: message = "Invalid bet type." self.save_credits() return message + def play_number(self, user_id, bet_size, number_enum) -> str: + n = random.choice(self.all_numbers) + result = RouletteBetType(n) + rule = number_enum == int(RouletteNumbers(n)) + return self.apply_bet(n, result, user_id, bet_size, rule, payout_multiplier=35) + def play_red_black(self, user_id, bet_size, bet_type) -> str: n = random.choice(self.all_numbers) result = RouletteBetType(self.roulette_colors[n]) rule = bet_type == result - special_rule = bet_type == result and RouletteBetType.GREEN == result - return self.apply_bet(n, result, user_id, bet_size, rule, special_rule, payout_multiplier=35) + if RouletteBetType.GREEN == result: + return self.apply_bet(n, result, user_id, bet_size, rule, payout_multiplier=35) + return self.apply_bet(n, result, user_id, bet_size, rule) def play_odd_even(self, user_id, bet_size, bet_type) -> str: n = random.choice(self.all_numbers) @@ -106,13 +115,10 @@ def play_high_low(self, user_id, bet_size, bet_type) -> str: winning_rule = bet_type == result return self.apply_bet(n, result, user_id, bet_size, winning_rule) - def apply_bet(self, n, result, user_id, bet_size, winning_rule, special_rule=False, payout_multiplier=1) -> str: - if special_rule: + def apply_bet(self, n, result, user_id, bet_size, winning_rule, payout_multiplier=1) -> str: + if winning_rule: self.credits[user_id] += bet_size * payout_multiplier return f"The ball fell on *{n}*, which is *{result.value}*. Congrats! You won *{bet_size * payout_multiplier} credits* 🔥" - elif winning_rule: - self.credits[user_id] += bet_size - return f"The ball fell on *{n}*, which is *{result.value}*. Congrats! You won *{bet_size} credits* 🔥" else: self.credits[user_id] -= bet_size return f"The ball fell on *{n}*, which is *{result.value}*. You lose your *{bet_size} credits* 🖕"