class Bcalc::Calculator
Constants
- MAX_TRICKS
- PLAYERS
- SUITS
Attributes
deal[R]
declarer[R]
suit[R]
Public Class Methods
new(deal:, declarer:, suit:)
click to toggle source
# File lib/bcalc/calculator.rb, line 21 def initialize(deal:, declarer:, suit:) PLAYERS.keys.include?(declarer) || raise(ArgumentError, "Wrong declarer value: #{declarer}") SUITS.keys.include?(suit) || raise(ArgumentError, "Wrong suit value: #{suit}") @deal = deal @declarer = declarer @suit = suit end
Public Instance Methods
tricks()
click to toggle source
Returns number of tricks that declarer can take
# File lib/bcalc/calculator.rb, line 31 def tricks solver = Bcalc::Lib.bcalcDDS_new("PBN", deal, SUITS[suit], leader) raise_on_error(solver) result = Bcalc::Lib.bcalcDDS_getTricksToTake(solver) MAX_TRICKS - result ensure Bcalc::Lib.bcalcDDS_delete(solver) end
Private Instance Methods
leader()
click to toggle source
# File lib/bcalc/calculator.rb, line 48 def leader index = (PLAYERS.keys.index(declarer) + 1) % 4 PLAYERS[PLAYERS.keys[index]] end
raise_on_error(solver)
click to toggle source
# File lib/bcalc/calculator.rb, line 42 def raise_on_error(solver) if (error = Bcalc::Lib.bcalcDDS_getLastError(solver)) raise StandardError, error end end