Class: Board

Inherits:
Object
  • Object
show all
Includes:
Emoji
Defined in:
lib/ttt-cli/board.rb

Overview

Класс Board - игровое поле.

По умолчанию имеет размер 3х3.

Constant Summary

Constants included from Emoji

Emoji::DASH, Emoji::O, Emoji::X

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(game) ⇒ Board

Returns a new instance of Board.



14
15
16
17
# File 'lib/ttt-cli/board.rb', line 14

def initialize(game)
  @cells = Array.new(9, DASH)
  @game = game
end

Instance Attribute Details

#cellsObject

Returns the value of attribute cells.



9
10
11
# File 'lib/ttt-cli/board.rb', line 9

def cells
  @cells
end

#gameObject (readonly)

Returns the value of attribute game.



10
11
12
# File 'lib/ttt-cli/board.rb', line 10

def game
  @game
end

Instance Method Details

#cell_taken?(index) ⇒ Boolean

метод для проверки клетки на занятость

Returns:

  • (Boolean)


25
26
27
# File 'lib/ttt-cli/board.rb', line 25

def cell_taken?(index)
  @cells[index] == X || @cells[index] == O
end

#empty_cellsObject

метод возвращает массив индексов пустых клеток доски



41
42
43
44
45
# File 'lib/ttt-cli/board.rb', line 41

def empty_cells
  @cells.filter_map.with_index do |cell, index|
    index if cell != X && cell != O
  end
end

#even_cellsObject

метод возвращает массив четных индексов клеток доски



48
49
50
# File 'lib/ttt-cli/board.rb', line 48

def even_cells
  empty_cells.filter(&:even?)
end

#fill_cell(index, token) ⇒ Object

метод для заполнения клетки



20
21
22
# File 'lib/ttt-cli/board.rb', line 20

def fill_cell(index, token)
  @cells[index] = token
end

#full?Boolean

метод для проверки всех клеток на занятость

Returns:

  • (Boolean)


30
31
32
33
34
35
36
37
38
# File 'lib/ttt-cli/board.rb', line 30

def full?
  @cells.all? do |char|
    if char == X || char == O
      true
    else
      false
    end
  end
end

#reset_cell(index) ⇒ Object

метод для очистки клетки



53
54
55
# File 'lib/ttt-cli/board.rb', line 53

def reset_cell(index)
  @cells[index] = DASH
end

#to_sObject



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/ttt-cli/board.rb', line 57

def to_s
  Rainbow("
      |      |
  #{@cells[0]}  |  #{@cells[1]}  |  #{@cells[2]}
______|______|______
      |      |
  #{@cells[3]}  |  #{@cells[4]}  |  #{@cells[5]}
______|______|______
      |      |
  #{@cells[6]}  |  #{@cells[7]}  |  #{@cells[8]}
      |      |
").lawngreen
end