just_go 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/lib/just_go/game_state.rb +17 -18
- data/lib/just_go/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9e75ebd41948471c4f4ca768b14afa0151840af
|
4
|
+
data.tar.gz: f199d796daf821fc9fa7d0a656dfbe687e87d466
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c165f3cd84e3646dcc53988490b4af3ac1e6144181b8e343c04722975000e76271cc0b64c2d85dd17bbced347840f1fe3a2eab3a5d7f190270f835b45aa809c
|
7
|
+
data.tar.gz: 5d07ae4529f1a95cd4e113fc5e9300bad9e14c2e81bcd6877e7ca6c14656bd4e115a2b6b8eaa85a0c5eb72ac29f1130d76fe48593d50ef062350b298b35eb4f9
|
data/lib/just_go/game_state.rb
CHANGED
@@ -13,21 +13,19 @@ module JustGo
|
|
13
13
|
class GameState
|
14
14
|
BOARD_SIZE = 19
|
15
15
|
|
16
|
-
def initialize(current_player_number: , points: ,
|
16
|
+
def initialize(current_player_number: , points: , previous_state: nil, player_stats: nil)
|
17
17
|
@current_player_number = current_player_number
|
18
18
|
@points = JustGo::PointSet.new(points: points)
|
19
|
-
@prisoner_counts = prisoner_counts
|
20
19
|
@previous_state = previous_state
|
21
|
-
@
|
20
|
+
@player_stats = player_stats
|
22
21
|
@errors = []
|
23
22
|
@last_change = {}
|
24
23
|
end
|
25
24
|
|
26
25
|
attr_reader :current_player_number
|
27
26
|
attr_reader :points
|
28
|
-
attr_reader :prisoner_counts
|
29
27
|
attr_reader :previous_state
|
30
|
-
attr_reader :
|
28
|
+
attr_reader :player_stats
|
31
29
|
attr_reader :errors
|
32
30
|
attr_reader :last_change
|
33
31
|
|
@@ -44,11 +42,11 @@ module JustGo
|
|
44
42
|
}
|
45
43
|
end
|
46
44
|
end.flatten,
|
47
|
-
|
48
|
-
|
49
|
-
{ player_number:
|
50
|
-
|
51
|
-
|
45
|
+
previous_state: nil,
|
46
|
+
player_stats: [
|
47
|
+
{ player_number: 1, prisoner_count: 0, passed: false },
|
48
|
+
{ player_number: 2, prisoner_count: 0, passed: false }
|
49
|
+
]
|
52
50
|
)
|
53
51
|
end
|
54
52
|
|
@@ -56,8 +54,8 @@ module JustGo
|
|
56
54
|
{
|
57
55
|
current_player_number: current_player_number,
|
58
56
|
points: points.as_json,
|
59
|
-
|
60
|
-
|
57
|
+
previous_state: previous_state,
|
58
|
+
player_stats: player_stats
|
61
59
|
}
|
62
60
|
end
|
63
61
|
|
@@ -81,13 +79,13 @@ module JustGo
|
|
81
79
|
if dupped.minify == @previous_state
|
82
80
|
@errors.push JustGo::KoRuleViolationError.new
|
83
81
|
else
|
84
|
-
@
|
82
|
+
@player_stats.detect { |p| p[:player_number] == next_player_number }[:passed] = false
|
85
83
|
|
86
84
|
@previous_state = points.minify
|
87
85
|
|
88
86
|
stone_count = points.perform_move(point, player_number)
|
89
87
|
|
90
|
-
@
|
88
|
+
@player_stats.detect { |pc| pc[:player_number] == player_number }[:prisoner_count] += stone_count
|
91
89
|
|
92
90
|
pass_turn
|
93
91
|
end
|
@@ -100,8 +98,9 @@ module JustGo
|
|
100
98
|
if current_player_number != player_number
|
101
99
|
@errors.push JustGo::NotPlayersTurnError.new
|
102
100
|
else
|
103
|
-
@
|
104
|
-
|
101
|
+
@player_stats.detect { |p| p[:player_number] == player_number }[:passed] = true
|
102
|
+
next_player_passed = @player_stats.detect { |p| p[:player_number] == next_player_number }[:passed]
|
103
|
+
if next_player_passed
|
105
104
|
points.mark_territories
|
106
105
|
else
|
107
106
|
pass_turn
|
@@ -119,7 +118,7 @@ module JustGo
|
|
119
118
|
end
|
120
119
|
|
121
120
|
def winner
|
122
|
-
if @passed.
|
121
|
+
if @player_stats.map { |ps| ps[:passed] }.all?
|
123
122
|
score.max_by { |_player, score| score }.first
|
124
123
|
else
|
125
124
|
nil
|
@@ -133,7 +132,7 @@ module JustGo
|
|
133
132
|
end
|
134
133
|
|
135
134
|
def prisoner_count(player_number)
|
136
|
-
|
135
|
+
player_stats.detect { |pc| pc[:player_number] == player_number }[:prisoner_count]
|
137
136
|
end
|
138
137
|
|
139
138
|
def territory_count(player_number)
|
data/lib/just_go/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: just_go
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Humphreys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|