qi 6.3.0 → 6.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qi/position.rb +10 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9def332500b0191148a3261cbf17fb9a1a737d46a54366e1f680ee9b924dd2f4
4
- data.tar.gz: f9eabe8017a92934537d5a4763a74f0c18a0f3437f4e7a7e417ae18bf420eb8d
3
+ metadata.gz: e72084022a3eaca3cec4ff33c2106c99e2b5da61412049b37180f0ddddd87793
4
+ data.tar.gz: 56082cc561866965d8f37178f8e6710d54593e4d67f6a24bd63ec23e5c183094
5
5
  SHA512:
6
- metadata.gz: 665e3b706f9b8652ff8280652c6ae808b9b968a1ea6e17603bdd27cbb8d43332b6ed532ebf153a192a5cd6049f8a1cbacdaaccd86824054a0583669e2903c127
7
- data.tar.gz: e10b2f9376a1d8cd1706b4998f35cb0ef2f9180f9014ccf5193c69e8fbc11d40bfa5a61e9d27c0659c7447c032a884d231f51f92776c01d14a8ef5d6aa782605
6
+ metadata.gz: f12a76bed9d203b56fcadf2133ec8e985494827d8e5533a7c4bcbe2c350de43d9ff8254c5b9f66c862ddb137f74fb4522b0f88ccd1d29fbec7d972a3acea5984
7
+ data.tar.gz: 057b02a60a91a292bce36d173128e8a22117211d2afc32d5155ff81e289ebe7fb501b31a1c03c148c335c4ed61c3819f7b47fb8a51b0804f6098f3926b7c6a6c
@@ -18,15 +18,15 @@ module Qi
18
18
  # @return [Array] The list of pieces in hand for each side.
19
19
  attr_reader :pieces_in_hand_grouped_by_sides
20
20
 
21
- # The list of squares of on the board.
21
+ # The list of squares on the board.
22
22
  #
23
23
  # @!attribute [r] squares
24
- # @return [Array] The list of squares.
24
+ # @return [Array] The list of squares on the board.
25
25
  attr_reader :squares
26
26
 
27
27
  # Initialize a position.
28
28
  #
29
- # @param squares [Array] The list of squares of on the board.
29
+ # @param squares [Array] The list of squares on the board.
30
30
  # @param active_side_id [Integer] The identifier of the player who must play.
31
31
  # @param pieces_in_hand_grouped_by_sides [Array] The list of pieces in hand
32
32
  # grouped by players.
@@ -124,16 +124,18 @@ module Qi
124
124
  # )
125
125
  def initialize(*squares, active_side_id: 0, pieces_in_hand_grouped_by_sides: [[], []])
126
126
  @squares = squares
127
- @active_side_id = active_side_id % pieces_in_hand_grouped_by_sides.length
127
+ @active_side_id = active_side_id % pieces_in_hand_grouped_by_sides.size
128
128
  @pieces_in_hand_grouped_by_sides = pieces_in_hand_grouped_by_sides
129
129
 
130
130
  freeze
131
131
  end
132
132
 
133
- # Apply a move in PMN (Portable Move Notation) format.
133
+ # Apply a move to the position.
134
134
  #
135
135
  # @param move [Array] The move to play.
136
136
  # @see https://developer.sashite.com/specs/portable-move-notation
137
+ # @see https://github.com/sashite/pmn.rb
138
+ #
137
139
  # @return [Position] The new position.
138
140
  def call(move)
139
141
  updated_squares = squares.dup
@@ -149,7 +151,7 @@ module Qi
149
151
 
150
152
  if src_square_id.nil?
151
153
  piece_in_hand_id = updated_in_hand_pieces.index(moved_piece_name)
152
- updated_in_hand_pieces.delete_at(piece_in_hand_id)
154
+ updated_in_hand_pieces.delete_at(piece_in_hand_id) unless piece_in_hand_id.nil?
153
155
  else
154
156
  updated_squares[src_square_id] = nil
155
157
  end
@@ -165,15 +167,14 @@ module Qi
165
167
  updated_pieces_in_hand_grouped_by_sides[active_side_id] = updated_in_hand_pieces
166
168
 
167
169
  self.class.new(*updated_squares,
168
- active_side_id: active_side_id.next,
170
+ active_side_id: active_side_id.succ,
169
171
  pieces_in_hand_grouped_by_sides: updated_pieces_in_hand_grouped_by_sides
170
172
  )
171
173
  end
172
174
 
173
175
  # The list of pieces in hand owned by the current player.
174
176
  #
175
- # @return [Array] Topside's pieces in hand if turn to topside, bottomside's
176
- # ones otherwise.
177
+ # @return [Array] The list of pieces in hand of the active side.
177
178
  def in_hand_pieces
178
179
  pieces_in_hand_grouped_by_sides.fetch(active_side_id)
179
180
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qi
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.3.0
4
+ version: 6.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Kato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-25 00:00:00.000000000 Z
11
+ date: 2020-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brutal