Class: ConnectN::Board
- Inherits:
-
Object
- Object
- ConnectN::Board
- Defined in:
- lib/connect_n/board/board.rb
Instance Attribute Summary collapse
-
#cols_amount ⇒ Object
readonly
Returns the value of attribute cols_amount.
-
#empty_disc ⇒ Object
readonly
Returns the value of attribute empty_disc.
-
#rows_amount ⇒ Object
readonly
Returns the value of attribute rows_amount.
-
#table ⇒ Object
readonly
Returns the value of attribute table.
Instance Method Summary collapse
- #cell_at(row_num, col_num) ⇒ Object
- #col_at(n) ⇒ Object
- #cols ⇒ Object
- #draw ⇒ Object
- #drop_disc(disc, at_col:) ⇒ Object
- #filled? ⇒ Boolean
-
#initialize(rows_amount: 6, cols_amount: 7, empty_disc: '⚪') ⇒ Board
constructor
A new instance of Board.
- #initialize_copy(original_board) ⇒ Object
- #row_at(n) ⇒ Object
- #rows ⇒ Object
- #valid_pick?(pick) ⇒ Boolean
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_amount ⇒ Object (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_disc ⇒ Object (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_amount ⇒ Object (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 |
#table ⇒ Object (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 |
#cols ⇒ Object
49 50 51 |
# File 'lib/connect_n/board/board.rb', line 49 def cols table.transpose.map(&:reverse) end |
#draw ⇒ Object
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
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 |
#rows ⇒ Object
53 54 55 |
# File 'lib/connect_n/board/board.rb', line 53 def rows table end |
#valid_pick?(pick) ⇒ 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 |