class Game2048::Game

Game

Public Class Methods

new() click to toggle source
# File lib/game_2048/game.rb, line 7
def initialize
  @terminal = Terminal.new
  @tiles = Tiles.new
  @render = Render.new(@terminal, @tiles)
  @running = false
end

Public Instance Methods

run() click to toggle source
# File lib/game_2048/game.rb, line 18
def run
  @running = true
  @terminal.raw_mode
  @terminal.hide_cursor
  @render.refresh

  Kernel.trap('SIGWINCH') do
    @render.refresh
  end

  while @running
    @render.draw
    key = @terminal.read
    case key
    when 'q'
      stop
    when 'r'
      @tiles.reset
    when '+'
      @render.size += 1
      @render.refresh
    when '-'
      @render.size -= 1
      @render.refresh
    end

    next if @tiles.win? || @tiles.game_over?

    case key
    when :up
      @tiles.move_up
    when :down
      @tiles.move_down
    when :right
      @tiles.move_right
    when :left
      @tiles.move_left
    when 'u'
      @tiles.undo
    end
  end

  @terminal.cooked_mode
  @terminal.erase_display
  @terminal.show_cursor
  @terminal.move_home
end
stop() click to toggle source
# File lib/game_2048/game.rb, line 14
def stop
  @running = false
end