Class: ConsoleShogi::Terminal::Cursor

Inherits:
Object
  • Object
show all
Defined in:
lib/console_shogi/terminal/cursor.rb

Defined Under Namespace

Classes: TerminalPosition

Constant Summary collapse

VERTICAL_DISTANCE =
1
HORIZONTAL_DISTANCE =
2
CURSOR_DIRECTIONS =
%w(A B C D)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(terminal_index_x: 1, terminal_index_y: 1) ⇒ Cursor

Returns a new instance of Cursor.



12
13
14
15
# File 'lib/console_shogi/terminal/cursor.rb', line 12

def initialize(terminal_index_x: 1, terminal_index_y: 1)
  @terminal_position = TerminalPosition.new(x: 1, y: 1)
  @grid_position = GridPosition.new(**calculate_grid_position)
end

Instance Attribute Details

#grid_positionObject (readonly)

Returns the value of attribute grid_position.



10
11
12
# File 'lib/console_shogi/terminal/cursor.rb', line 10

def grid_position
  @grid_position
end

#terminal_positionObject (readonly)

Returns the value of attribute terminal_position.



10
11
12
# File 'lib/console_shogi/terminal/cursor.rb', line 10

def terminal_position
  @terminal_position
end

Instance Method Details

#move(direction) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/console_shogi/terminal/cursor.rb', line 17

def move(direction)
  return unless CURSOR_DIRECTIONS.include?(direction)

  distance =
    case direction
    when 'A', 'B'
      VERTICAL_DISTANCE
    when 'C', 'D'
      HORIZONTAL_DISTANCE
    end

  print "\e[#{distance}#{direction}"

  update_terminal_position!
end