Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions crapssim/strategy/odds.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import numbers
import typing

from crapssim.bet import Bet, Come, DontCome, DontPass, Odds, PassLine
from crapssim.bet import Bet, Come, DontCome, DontPass, Odds, PassLine, Put
from crapssim.strategy.tools import Player, Strategy, Table


Expand Down Expand Up @@ -148,8 +149,13 @@ def __init__(
self.base_type = base_type
self.always_working = always_working

if isinstance(odds_multiplier, int):
self.odds_multiplier = {x: odds_multiplier for x in (4, 5, 6, 8, 9, 10)}
if isinstance(odds_multiplier, numbers.Real):
multiplier_value = float(odds_multiplier)
if multiplier_value.is_integer():
multiplier_value = int(multiplier_value)
self.odds_multiplier = {
x: multiplier_value for x in (4, 5, 6, 8, 9, 10)
}
else:
self.odds_multiplier = odds_multiplier

Expand All @@ -159,6 +165,8 @@ def get_point_number(bet: Bet, table: "Table"):
return table.point.number
elif isinstance(bet, (Come, DontCome)):
return bet.number
elif isinstance(bet, Put):
return bet.number
else:
raise NotImplementedError

Expand Down
10 changes: 9 additions & 1 deletion crapssim/table.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from crapssim.dice import Dice

from .bet import Bet, BetResult, DicePair
from .bet import Bet, BetResult, DicePair, Odds, Put
from .point import Point
from .strategy import BetPassLine, Strategy

Expand Down Expand Up @@ -154,6 +154,14 @@ def update_numbers(table: "Table", verbose: bool) -> None:
bet.update_number(table)
table.point.update(table.dice)

if table.point != "On":
for player in table.players:
for bet in player.bets[:]:
if isinstance(bet, Put) or (
isinstance(bet, Odds) and bet.base_type is Put
):
player.remove_bet(bet)

if verbose:
print(f"Point is {table.point.status} ({table.point.number})")

Expand Down
5 changes: 2 additions & 3 deletions examples/run_examples.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from crapssim.table import Table, TableUpdate
from crapssim.table import Table
from crapssim.strategy.examples import (
QuickProps,
BuySampler,
Expand All @@ -19,8 +19,7 @@ def run_example(name, strategy_factory):
player = table.add_player()
player.strategy = strategy_factory()

for die_one, die_two in ROLLS:
TableUpdate.roll(table, fixed_outcome=(die_one, die_two), verbose=False)
table.fixed_run(dice_outcomes=ROLLS, verbose=False)

print(f"Final bankroll: {player.bankroll:.2f}")
# Show remaining open bets (should be few or none in these demos)
Expand Down
Loading