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