Class: Bridge::Score

Inherits:
Object
  • Object
show all
Defined in:
lib/bridge/score.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(contract, vulnerable, tricks) ⇒ Score

Creates new score object

Example

Bridge::Score.new("7SXXN", "NS", 0)


9
10
11
12
13
# File 'lib/bridge/score.rb', line 9

def initialize(contract, vulnerable, tricks)
  @contract      = contract
  @vulnerable    = vulnerable
  @tricks_number = calculate_tricks(tricks)
end

Instance Attribute Details

#contractObject (readonly)

Returns the value of attribute contract.



3
4
5
# File 'lib/bridge/score.rb', line 3

def contract
  @contract
end

#tricks_numberObject (readonly)

Returns the value of attribute tricks_number.



3
4
5
# File 'lib/bridge/score.rb', line 3

def tricks_number
  @tricks_number
end

#vulnerableObject (readonly)

Returns the value of attribute vulnerable.



3
4
5
# File 'lib/bridge/score.rb', line 3

def vulnerable
  @vulnerable
end

Class Method Details

.with_points(points) ⇒ Object

Returns all possible contracts with given points



16
17
18
# File 'lib/bridge/score.rb', line 16

def self.with_points(points)
  all_contracts.select { |contract, result| result == points }.keys.sort
end

Instance Method Details

#made?Boolean

Returns true if contract was made, false otherwise

Returns:

  • (Boolean)


35
36
37
# File 'lib/bridge/score.rb', line 35

def made?
  result >= 0
end

#pointsObject

Returns points achieved by declarer: + for made contract - if conctract wasn’t made



40
41
42
# File 'lib/bridge/score.rb', line 40

def points
  made? ? (made_contract_points + overtrick_points + bonus) : undertrick_points
end

#resultObject

Returns nr of overtricks or undertricks. 0 if contract was made without them



21
22
23
# File 'lib/bridge/score.rb', line 21

def result
  tricks_number - tricks_to_make_contract
end

#result_stringObject

Returns string with nr of tricks relative to contract level



26
27
28
29
30
31
32
# File 'lib/bridge/score.rb', line 26

def result_string
  case
  when result > 0  then "+#{result}"
  when result == 0 then "="
  when result < 0  then result.to_s
  end
end

#vulnerable?Boolean

Returns if declarer side is vulnerable

Returns:

  • (Boolean)


45
46
47
48
49
50
51
52
# File 'lib/bridge/score.rb', line 45

def vulnerable?
  case vulnerable
  when "BOTH" then true
  when "NONE" then false
  else
    vulnerable.split("").include?(declarer)
  end
end