Module: Text2048::MonkeyPatch::Array::Tile

Included in:
Array
Defined in:
lib/text2048/monkey_patch/array/tile.rb

Overview

2048 related methods

Instance Method Summary collapse

Instance Method Details

#fill_length(len) ⇒ Object



29
30
31
32
33
# File 'lib/text2048/monkey_patch/array/tile.rb', line 29

def fill_length(len)
  compact!
  unshift(Text2048::Tile.new(nil)) until size == len
  self
end

#merge_left(index) ⇒ Object



17
18
19
20
21
22
# File 'lib/text2048/monkey_patch/array/tile.rb', line 17

def merge_left(index)
  value = self[index].to_i * 2
  self[index] = Text2048::Tile.new(value, :merged)
  self[index - 1] = nil
  value
end

#rightObject



9
10
11
12
13
14
15
# File 'lib/text2048/monkey_patch/array/tile.rb', line 9

def right
  shrink
  score = (size - 1).downto(1).reduce(0) do |memo, each|
    memo + (self[each] == self[each - 1] ? merge_left(each) : 0)
  end
  [fill_length(4), score]
end

#shrinkObject



24
25
26
27
# File 'lib/text2048/monkey_patch/array/tile.rb', line 24

def shrink
  delete(0)
  map! { |each| each.clear_status }
end