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 +1 -1
- data/bridge.gemspec +6 -6
- data/lib/bridge/bid.rb +1 -1
- data/lib/bridge/card.rb +2 -2
- data/lib/bridge/score.rb +29 -34
- data/test/helper.rb +1 -0
- data/test/test_score.rb +2 -2
- metadata +7 -7
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
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.
|
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
|
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/
|
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/
|
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
data/lib/bridge/card.rb
CHANGED
data/lib/bridge/score.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Bridge
|
2
2
|
class Score
|
3
|
-
attr_reader :tricks, :contract, :declarer, :
|
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 => "
|
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
|
-
|
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
|
-
|
40
|
-
|
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
|
-
|
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
|
59
|
-
|
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
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
|
-
-
|
9
|
-
version: 0.0.
|
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
|
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/
|
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/
|
98
|
+
- test/test_bid.rb
|
99
|
+
- test/test_card.rb
|