class Tak::PieceSet

Constants

PIECE_TOTALS

en.wikipedia.org/wiki/Tak_(game)#Rules

21 pieces is correct for 5s

size => [pieces, capstones]

Attributes

capstones[R]
flats[R]

Public Class Methods

new(board_size: 5, flats: nil, capstones: nil) click to toggle source
# File lib/tak/piece_set.rb, line 19
def initialize(board_size: 5, flats: nil, capstones: nil)
  default_flats, default_capstones = PIECE_TOTALS[board_size]

  @flats     = flats || default_flats
  @capstones = capstones || default_capstones

  @pieces = {
    capstone:  @capstones,
    flatstone: @flats
  }
end

Public Instance Methods

empty?() click to toggle source

Whether or not the set is empty

@note It's often forgotten rule that a capstone needs to be played to

consider a piece set as empty and trigger a flat win count.

@return [Boolean]

# File lib/tak/piece_set.rb, line 37
def empty?
  @capstones + @flats == 0
end
remove(type) click to toggle source

Removes a piece from a set

@param type [Symbol] Type of piece

@return [Boolean] Whether the removal was valid

# File lib/tak/piece_set.rb, line 46
def remove(type)
  return false if @pieces[type] - 1 < 0

  if type == :capstone
    @capstones -= 1
  else
    @flats -= 1
  end

  true
end