Class: Tak::PieceSet
- Inherits:
-
Object
- Object
- Tak::PieceSet
- Defined in:
- lib/tak/piece_set.rb
Constant Summary collapse
- PIECE_TOTALS =
{ 3 => [10, 0], 4 => [15, 0], 5 => [21, 1], 6 => [30, 1], 7 => [40, 2], 8 => [50, 2] }
Instance Attribute Summary collapse
-
#capstones ⇒ Object
readonly
Returns the value of attribute capstones.
-
#flats ⇒ Object
readonly
Returns the value of attribute flats.
Instance Method Summary collapse
-
#empty? ⇒ Boolean
Whether or not the set is empty.
-
#initialize(board_size: 5, flats: nil, capstones: nil) ⇒ PieceSet
constructor
A new instance of PieceSet.
-
#remove(type) ⇒ Boolean
Removes a piece from a set.
Constructor Details
#initialize(board_size: 5, flats: nil, capstones: nil) ⇒ PieceSet
Returns a new instance of PieceSet.
19 20 21 22 23 24 25 26 27 28 29 |
# 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 |
Instance Attribute Details
#capstones ⇒ Object (readonly)
Returns the value of attribute capstones.
3 4 5 |
# File 'lib/tak/piece_set.rb', line 3 def capstones @capstones end |
#flats ⇒ Object (readonly)
Returns the value of attribute flats.
3 4 5 |
# File 'lib/tak/piece_set.rb', line 3 def flats @flats end |
Instance Method Details
#empty? ⇒ Boolean
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.
Whether or not the set is empty
37 38 39 |
# File 'lib/tak/piece_set.rb', line 37 def empty? @capstones + @flats == 0 end |
#remove(type) ⇒ Boolean
Removes a piece from a set
46 47 48 49 50 51 52 53 54 55 56 |
# 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 |