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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '092381e0ddeac1e70de71d939e77ab8c8b7d598f'
4
- data.tar.gz: acd055e8b73b7b58f4c57c727f09ed065f637f9d
3
+ metadata.gz: c9e75ebd41948471c4f4ca768b14afa0151840af
4
+ data.tar.gz: f199d796daf821fc9fa7d0a656dfbe687e87d466
5
5
  SHA512:
6
- metadata.gz: 331c2b423b529339689dbbcf62435ad55366cc2394e330033f37076860d44f84383530befca7c701ed1578c4a08e4cb937c4d95ff931e31e653b29a219e4940c
7
- data.tar.gz: c4b557abf53ad9e6c041299d6059afef322c994738abd70c43536f5a607a1cbe17656d9df35f078a3f2fc2ba528dcaab1f40983ccf875f4261b609a47868a09b
6
+ metadata.gz: 4c165f3cd84e3646dcc53988490b4af3ac1e6144181b8e343c04722975000e76271cc0b64c2d85dd17bbced347840f1fe3a2eab3a5d7f190270f835b45aa809c
7
+ data.tar.gz: 5d07ae4529f1a95cd4e113fc5e9300bad9e14c2e81bcd6877e7ca6c14656bd4e115a2b6b8eaa85a0c5eb72ac29f1130d76fe48593d50ef062350b298b35eb4f9
@@ -13,21 +13,19 @@ module JustGo
13
13
  class GameState
14
14
  BOARD_SIZE = 19
15
15
 
16
- def initialize(current_player_number: , points: , prisoner_counts: , previous_state: nil, passed: { 0 => false, 1 => false })
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
- @passed = passed
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 :passed
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
- prisoner_counts: [
48
- { player_number: 1, count: 0 },
49
- { player_number: 2, count: 0 },
50
- ],
51
- previous_state: nil
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
- prisoner_counts: prisoner_counts,
60
- previous_state: previous_state
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
- @passed[next_player_number] = false
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
- @prisoner_counts.detect { |pc| pc[:player_number] == player_number }[:count] += stone_count
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
- @passed[player_number] = true
104
- if @passed[next_player_number]
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.values.all?
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
- prisoner_counts.detect { |pc| pc[:player_number] == player_number }[:count]
135
+ player_stats.detect { |pc| pc[:player_number] == player_number }[:prisoner_count]
137
136
  end
138
137
 
139
138
  def territory_count(player_number)
@@ -1,4 +1,4 @@
1
1
  module JustGo
2
2
  # :nodoc:
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
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.2
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-07-20 00:00:00.000000000 Z
11
+ date: 2019-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler