class Text2048::CursesView::LCD

Renders numbers like LCDs

Constants

BITMAPS
BOTTOM
BOTTOM_LEFT
BOTTOM_MIDDLE
BOTTOM_RIGHT
CORNER_BOTTOM_LEFT
CORNER_BOTTOM_RIGHT
CORNER_MIDDLE_LEFT
CORNER_MIDDLE_RIGHT
CORNER_TOP_LEFT
CORNER_TOP_RIGHT
MIDDLE
TOP
TOP_LEFT
TOP_MIDDLE
TOP_RIGHT

Public Class Methods

new(number) click to toggle source
# File lib/text2048/curses_view/lcd.rb, line 38
def initialize(number)
  @number = number
end

Public Instance Methods

render() click to toggle source
# File lib/text2048/curses_view/lcd.rb, line 42
def render
  digits = @number.to_s.split(//).map { |each| digit(each) }
  digits.transpose.map { |each| each.join(' ') }.join("\n")
end

Private Instance Methods

digit(number) click to toggle source
# File lib/text2048/curses_view/lcd.rb, line 49
def digit(number)
  lines =
    [[CORNER_TOP_LEFT, TOP, CORNER_TOP_RIGHT],
     [TOP_LEFT, TOP_MIDDLE, TOP_RIGHT],
     [CORNER_MIDDLE_LEFT, MIDDLE, CORNER_MIDDLE_RIGHT],
     [BOTTOM_LEFT, BOTTOM_MIDDLE, BOTTOM_RIGHT],
     [CORNER_BOTTOM_LEFT, BOTTOM, CORNER_BOTTOM_RIGHT]]
  lines.map { |each| line(BITMAPS[number.to_i], each) }
end
line(bitmap, bits) click to toggle source

@todo This method smells of :reek:UtilityFunction @todo This method smells of :reek:FeatureEnvy

# File lib/text2048/curses_view/lcd.rb, line 61
def line(bitmap, bits)
  bits.map { |each| (bitmap & 1 << each).zero? ? ' ' : '*' }.join
end