class CaissaGuardian::Position
Position
namespace.
Public Instance Methods
after(move)
click to toggle source
# File lib/caissa_guardian/position.rb, line 9 def after(move) hash = ::Qi.call(move, in_hand: in_hand, square: square) self.class.new(shape: shape, side_id: next_side_id, **hash) end
enemy_king_square_id()
click to toggle source
# File lib/caissa_guardian/position.rb, line 14 def enemy_king_square_id enemy_pieces.each do |square_id, piece_name| break square_id if piece_name.include?("-") end end
enemy_pieces()
click to toggle source
The list of pieces on the board owned by the opponent player, with squares.
@return [Hash] Top-side's pieces if turn to bottomside, bottom-side's ones
otherwise.
# File lib/caissa_guardian/position.rb, line 24 def enemy_pieces turn_to_topside? ? square_bottomside_pieces : square_topside_pieces end
next_side_id()
click to toggle source
# File lib/caissa_guardian/position.rb, line 38 def next_side_id side_id.next % sides_count end
sides_count()
click to toggle source
# File lib/caissa_guardian/position.rb, line 42 def sides_count 2 end
to_s()
click to toggle source
@note Faster than FEEN to calculate.
# File lib/caissa_guardian/position.rb, line 29 def to_s [ side_id, square.keys.sort.inject("") { |s, key| s + "#{key}:#{square.fetch(key)}" }, shape.join("x"), in_hand.join(",") ].join("--") end