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