from dicelib import AceDie, AdvancedDie, BasicDie, BlankDie, Deck, QueueDeck from input_assist import iyes_or_no, iranged_input_int from random import choice, shuffle # seed(42069) # for testing def rai(r, dice_list): if r[0] == "AdvancedDie": return choice([1, 6]) exit("Achievement unlocked: How did we get here?") def smolthink_ai(r, dice_list): if r[0] == "AdvancedDie": if Deck.sum(dice_list) > 7: return 1 else: return 6 def pfunc(dice_list): dice = [f"{DICE_NAMES[x[0]]}: {x[1]}" for x in dice_list] print("\nDice so far:\n " + ("\n ".join(dice) or "None")) def efunc(dice_list): return Deck.sum(dice_list) >= 13 def shuffled(_list): l1 = _list.copy() shuffle(l1) return l1 if __name__ == "__main__": DICE_NAMES = { "AdvancedDie": "Advanced", "BasicDie": "Basic", "BlankDie": "Blank", "AceDie": "Ace", } deck = QueueDeck(shuffled(BasicDie.multiple(11) + AdvancedDie.multiple(6) + BlankDie.multiple(3) + AceDie.multiple(1))) balance = 500 while balance > 0: bet = iranged_input_int(f"Your bet? [1-{balance}] ", range(1, balance+1)) if bet is None: exit("\nBye!~") else: bet = int(bet) roll = deck.roll("Roll more? [Y/n] ", print_func=pfunc, exit_check=efunc) if roll is None: exit() print("\nDice:") for res in roll: print(f"> {DICE_NAMES[res[0]]}: {res[1]}") print("Total:", Deck.sum(roll)) if Deck.sum(roll) > 13: print("You've busted out!") balance -= bet if Deck.sum(roll) == 13: print("You've won!") balance += bet if Deck.sum(roll) < 13: print("You've backed out.") balance -= bet // 2 print("-"*24) if balance <= 0: print("No money left :(") print("Goodbye!") exit() print(f"Your beans: {balance}") c = iyes_or_no("Continue playing? [Y/n] ", default_pos=True) if c is None: exit() if not c: break