Files
2026-07-06 07:56:56 -04:00

40 lines
1.2 KiB
Python

"""Tracks a $-per-letter wager score alongside the solver.
Default rule: $1 per correct-spot letter, $2 per present-but-wrong-spot
letter, $3 per absent letter — tune with the `/price` command if your
wager uses different numbers.
"""
from dataclasses import dataclass, field
from .game import Clue
DEFAULT_PRICES = {Clue.GREEN: 1, Clue.YELLOW: 2, Clue.GREY: 3}
@dataclass
class Wager:
prices: dict = field(default_factory=lambda: dict(DEFAULT_PRICES))
round_total: int = 0
session_total: int = 0
def cost_of(self, pattern) -> int:
return sum(self.prices[clue] for clue in pattern)
def add(self, pattern) -> int:
cost = self.cost_of(pattern)
self.round_total += cost
self.session_total += cost
return cost
def new_round(self) -> None:
self.round_total = 0
def set_prices(self, green: int, yellow: int, grey: int) -> None:
self.prices = {Clue.GREEN: green, Clue.YELLOW: yellow, Clue.GREY: grey}
def prices_str(self) -> str:
return (f"correct=${self.prices[Clue.GREEN]} "
f"present=${self.prices[Clue.YELLOW]} "
f"absent=${self.prices[Clue.GREY]}")