Class: ConnectN::Board

Inherits:
Object
  • Object
show all
Defined in:
lib/connect_n/board/board.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rows_amount: 6, cols_amount: 7, empty_disc: '⚪') ⇒ Board

Returns a new instance of Board.



7
8
9
10
11
12
13
14
15
# File 'lib/connect_n/board/board.rb', line 7

def initialize(rows_amount: 6, cols_amount: 7, empty_disc: '')
  @empty_disc = empty_disc

  @rows_amount = rows_amount

  @cols_amount = cols_amount

  @table = Array.new(rows_amount) { Array.new(cols_amount) { empty_disc } }
end

Instance Attribute Details

#cols_amountObject (readonly)

Returns the value of attribute cols_amount.



5
6
7
# File 'lib/connect_n/board/board.rb', line 5

def cols_amount
  @cols_amount
end

#empty_discObject (readonly)

Returns the value of attribute empty_disc.



5
6
7
# File 'lib/connect_n/board/board.rb', line 5

def empty_disc
  @empty_disc
end

#rows_amountObject (readonly)

Returns the value of attribute rows_amount.



5
6
7
# File 'lib/connect_n/board/board.rb', line 5

def rows_amount
  @rows_amount
end

#tableObject (readonly)

Returns the value of attribute table.



5
6
7
# File 'lib/connect_n/board/board.rb', line 5

def table
  @table
end

Instance Method Details

#cell_at(row_num, col_num) ⇒ Object



43
44
45
46
47
# File 'lib/connect_n/board/board.rb', line 43

def cell_at(row_num, col_num)
  return unless valid_cell?(row_num, col_num)

  row_at(row_num)[col_num]
end

#col_at(n) ⇒ Object



57
58
59
60
61
# File 'lib/connect_n/board/board.rb', line 57

def col_at(n)
  return unless valid_col?(n)

  table.transpose[n].reverse
end

#colsObject



49
50
51
# File 'lib/connect_n/board/board.rb', line 49

def cols
  table.transpose.map(&:reverse)
end

#drawObject



37
38
39
40
41
# File 'lib/connect_n/board/board.rb', line 37

def draw
  table.each{ |row| draw_border || draw_row(row) }
  draw_border
  draw_col_nums
end

#drop_disc(disc, at_col:) ⇒ Object



23
24
25
26
27
# File 'lib/connect_n/board/board.rb', line 23

def drop_disc(disc, at_col:)
  row_num = col_at(at_col).index(empty_disc)
  row_at(row_num)[at_col] = disc
  [row_num, at_col, disc]
end

#filled?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/connect_n/board/board.rb', line 33

def filled?
  !table.flatten.include?(empty_disc)
end

#initialize_copy(original_board) ⇒ Object



17
18
19
20
21
# File 'lib/connect_n/board/board.rb', line 17

def initialize_copy(original_board)
  super
  @empty_disc = @empty_disc.clone
  @table = @table.clone.map(&:clone)
end

#row_at(n) ⇒ Object



63
64
65
66
67
68
# File 'lib/connect_n/board/board.rb', line 63

def row_at(n)
  return unless valid_row?(n)

  n = rows_amount - 1 - n
  table[n]
end

#rowsObject



53
54
55
# File 'lib/connect_n/board/board.rb', line 53

def rows
  table
end

#valid_pick?(pick) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/connect_n/board/board.rb', line 29

def valid_pick?(pick)
  valid_col?(pick) and col_at(pick).include?(empty_disc)
end