bridge 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.13
1
+ 0.0.14
data/bridge.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bridge}
8
- s.version = "0.0.13"
8
+ s.version = "0.0.14"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jakub Kuźma"]
12
- s.date = %q{2010-02-26}
12
+ s.date = %q{2010-03-02}
13
13
  s.description = %q{Useful contract bridge utilities - deal generator, id to deal and deal to id conversion}
14
14
  s.email = %q{qoobaa+github@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -44,13 +44,13 @@ Gem::Specification.new do |s|
44
44
  s.rubygems_version = %q{1.3.6}
45
45
  s.summary = %q{Contract bridge utilities}
46
46
  s.test_files = [
47
- "test/test_card.rb",
47
+ "test/test_bridge.rb",
48
+ "test/test_trick.rb",
48
49
  "test/test_deal.rb",
49
- "test/test_bid.rb",
50
50
  "test/helper.rb",
51
- "test/test_trick.rb",
52
51
  "test/test_score.rb",
53
- "test/test_bridge.rb"
52
+ "test/test_bid.rb",
53
+ "test/test_card.rb"
54
54
  ]
55
55
 
56
56
  if s.respond_to? :specification_version then
data/lib/bridge/bid.rb CHANGED
@@ -12,7 +12,7 @@ module Bridge
12
12
 
13
13
  # Returns the level of the bid
14
14
  def level
15
- bid[0] if contract?
15
+ bid[0..0] if contract?
16
16
  end
17
17
 
18
18
  # Returns the suit of the bid
data/lib/bridge/card.rb CHANGED
@@ -12,12 +12,12 @@ module Bridge
12
12
 
13
13
  # Returns the suit of the card
14
14
  def suit
15
- card[0]
15
+ card[0..0]
16
16
  end
17
17
 
18
18
  # Returns the suit of the card
19
19
  def value
20
- card[1]
20
+ card[1..1]
21
21
  end
22
22
 
23
23
  # Returns the honour card points
data/lib/bridge/score.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  module Bridge
2
2
  class Score
3
- attr_reader :tricks, :contract, :declarer, :modifier, :vulnerable
3
+ attr_reader :tricks, :contract, :declarer, :vulnerable
4
4
 
5
5
  # Creates new score object
6
6
  #
7
7
  # ==== Example
8
- # Bridge::Score.new(:contract => "7SXX", :declarer => "S", :vulnerable => "NONE", :tricks => 13)
8
+ # Bridge::Score.new(:contract => "7SXX", :declarer => "S", :vulnerable => "BOTH", :tricks => 13)
9
9
  def initialize(options = {})
10
10
  options[:vulnerable] ||= "NONE"
11
11
  options[:contract].gsub!(/(X+)/, "")
@@ -16,33 +16,22 @@ module Bridge
16
16
  @declarer = options[:declarer] if Bridge::DIRECTIONS.include?(options[:declarer].upcase)
17
17
  end
18
18
 
19
+ # Returns nr of overtricks or undertricks. 0 if contract was made without them
19
20
  def result
20
21
  tricks - tricks_to_make_contract
21
22
  end
22
23
 
23
- def tricks_to_make_contract
24
- contract.level.to_i + 6
25
- end
26
-
27
- def doubled?
28
- @modifier == 2
29
- end
30
-
31
- def redoubled?
32
- @modifier == 4
33
- end
34
-
24
+ # Returns true if contract was made, false otherwise
35
25
  def made?
36
26
  result >= 0
37
27
  end
38
28
 
39
- def small_slam?
40
- contract.level.to_i == 6
29
+ # Returns points achieved by declarer: + for made contract - if conctract wasn't made
30
+ def points
31
+ made? ? (made_contract_points + overtrick_points + bonus) : undertrick_points
41
32
  end
42
33
 
43
- def grand_slam?
44
- contract.level.to_i == 7
45
- end
34
+ #private
46
35
 
47
36
  def vulnerable?
48
37
  case vulnerable
@@ -55,8 +44,24 @@ module Bridge
55
44
  end
56
45
  end
57
46
 
58
- def points
59
- made? ? (made_contract_points + overtrick_points + bonus) : undertrick_points
47
+ def small_slam?
48
+ contract.level.to_i == 6
49
+ end
50
+
51
+ def grand_slam?
52
+ contract.level.to_i == 7
53
+ end
54
+
55
+ def tricks_to_make_contract
56
+ contract.level.to_i + 6
57
+ end
58
+
59
+ def doubled?
60
+ @modifier == 2
61
+ end
62
+
63
+ def redoubled?
64
+ @modifier == 4
60
65
  end
61
66
 
62
67
  def bonus
@@ -110,7 +115,7 @@ module Bridge
110
115
  end
111
116
 
112
117
  def made_contract_points
113
- first_trick_points * modifier + (contract.level.to_i - 1) * single_trick_points * modifier
118
+ first_trick_points * @modifier + (contract.level.to_i - 1) * single_trick_points * @modifier
114
119
  end
115
120
 
116
121
  def overtrick_points
@@ -123,20 +128,10 @@ module Bridge
123
128
  end
124
129
  end
125
130
 
126
- def not_vulnerable_overtrick_points
127
- if doubled?
128
- result * 200
129
- elsif redoubled?
130
- result * 400
131
- else
132
- result * single_trick_points
133
- end
134
- end
135
-
136
131
  # TODO: do some refactoring
137
132
  def vulnerable_undertrick_points
138
133
  if !made?
139
- p = -100 * modifier
134
+ p = -100 * @modifier
140
135
  if result < -1
141
136
  return p += (result + 1) * 300 if doubled?
142
137
  return p += (result + 1) * 600 if redoubled?
@@ -150,7 +145,7 @@ module Bridge
150
145
 
151
146
  def not_vulnerable_undertrick_points
152
147
  if !made?
153
- p = -50 * modifier
148
+ p = -50 * @modifier
154
149
  if [-3, -2].include?(result)
155
150
  return p += (result + 1) * 200 if doubled?
156
151
  return p += (result + 1) * 400 if redoubled?
data/test/helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ gem "test-unit"
2
3
  require 'test/unit'
3
4
 
4
5
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
data/test/test_score.rb CHANGED
@@ -20,13 +20,13 @@ class TestScore < Test::Unit::TestCase
20
20
 
21
21
  test "return modifier and contract when doubled" do
22
22
  score = Bridge::Score.new(:contract => "4SX", :declarer => "N", :tricks => 9)
23
- assert_equal 2, score.modifier
23
+ assert_equal 2, score.instance_variable_get(:@modifier)
24
24
  assert_equal "4S", score.contract.to_s
25
25
  end
26
26
 
27
27
  test "return modifier and contract when redoubled" do
28
28
  score = Bridge::Score.new(:contract => "4SXX", :declarer => "N", :tricks => 9)
29
- assert_equal 4, score.modifier
29
+ assert_equal 4, score.instance_variable_get(:@modifier)
30
30
  assert_equal "4S", score.contract.to_s
31
31
  end
32
32
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 13
9
- version: 0.0.13
8
+ - 14
9
+ version: 0.0.14
10
10
  platform: ruby
11
11
  authors:
12
12
  - "Jakub Ku\xC5\xBAma"
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-02-26 00:00:00 +01:00
17
+ date: 2010-03-02 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -90,10 +90,10 @@ signing_key:
90
90
  specification_version: 3
91
91
  summary: Contract bridge utilities
92
92
  test_files:
93
- - test/test_card.rb
93
+ - test/test_bridge.rb
94
+ - test/test_trick.rb
94
95
  - test/test_deal.rb
95
- - test/test_bid.rb
96
96
  - test/helper.rb
97
- - test/test_trick.rb
98
97
  - test/test_score.rb
99
- - test/test_bridge.rb
98
+ - test/test_bid.rb
99
+ - test/test_card.rb