class Board::ConnectNChecker
Public Class Methods
new(board, connect_n, col_idx, row_idx)
click to toggle source
# File lib/command_four/board.rb, line 81 def initialize(board, connect_n, col_idx, row_idx) @col_idx = col_idx @row_idx = row_idx @cur_color = board[col_idx][row_idx] @width = board.length @height = board[0].length @board = board @connect_n = connect_n @winning_cells = [] end
Public Instance Methods
check()
click to toggle source
# File lib/command_four/board.rb, line 92 def check if check_horizontal || check_vertical || check_left_diag || check_right_diag GameState.new(true, @winning_cells) else GameState.new(false, []) end end
check_horizontal()
click to toggle source
# File lib/command_four/board.rb, line 100 def check_horizontal @winning_cells = [] total_count = get_right_count + get_left_count total_count >= @connect_n end
check_left_diag()
click to toggle source
# File lib/command_four/board.rb, line 112 def check_left_diag @winning_cells = [] total_count = get_up_left_count + get_down_left_count total_count >= @connect_n end
check_right_diag()
click to toggle source
# File lib/command_four/board.rb, line 118 def check_right_diag @winning_cells = [] total_count = get_up_right_count + get_down_right_count total_count >= @connect_n end
check_vertical()
click to toggle source
# File lib/command_four/board.rb, line 106 def check_vertical @winning_cells = [] total_count = get_up_count + get_down_count total_count >= @connect_n end
get_down_count()
click to toggle source
# File lib/command_four/board.rb, line 157 def get_down_count consecutive_count = 0 cur_row_idx = @row_idx - 1 while cur_row_idx >= 0 && consecutive_count <= @connect_n && @board[@col_idx][cur_row_idx] == @cur_color @winning_cells.push([@col_idx, cur_row_idx]) cur_row_idx -= 1 consecutive_count += 1 end consecutive_count end
get_down_left_count()
click to toggle source
# File lib/command_four/board.rb, line 181 def get_down_left_count consecutive_count = 0 cur_row_idx = @row_idx - 1 cur_col_idx = @col_idx + 1 while cur_row_idx >= 0 && cur_col_idx < @width && consecutive_count <= @connect_n && @board[cur_col_idx][cur_row_idx] == @cur_color @winning_cells.push([cur_col_idx, cur_row_idx]) cur_row_idx -= 1 cur_col_idx += 1 consecutive_count += 1 end consecutive_count end
get_down_right_count()
click to toggle source
# File lib/command_four/board.rb, line 207 def get_down_right_count consecutive_count = 0 cur_row_idx = @row_idx - 1 cur_col_idx = @col_idx - 1 while cur_row_idx >= 0 && cur_col_idx >= 0 && consecutive_count <= @connect_n && @board[cur_col_idx][cur_row_idx] == @cur_color @winning_cells.push([cur_col_idx, cur_row_idx]) cur_row_idx -= 1 cur_col_idx -= 1 consecutive_count += 1 end consecutive_count end
get_left_count()
click to toggle source
# File lib/command_four/board.rb, line 135 def get_left_count consecutive_count = 0 cur_col_idx = @col_idx - 1 while cur_col_idx >= 0 && consecutive_count <= @connect_n && @board[cur_col_idx][@row_idx] == @cur_color @winning_cells.push([cur_col_idx, @row_idx]) cur_col_idx -= 1 consecutive_count += 1 end consecutive_count end
get_right_count()
click to toggle source
# File lib/command_four/board.rb, line 124 def get_right_count consecutive_count = 0 cur_col_idx = @col_idx while cur_col_idx < @width && consecutive_count <= @connect_n && @board[cur_col_idx][@row_idx] == @cur_color @winning_cells.push([cur_col_idx, @row_idx]) cur_col_idx += 1 consecutive_count += 1 end consecutive_count end
get_up_count()
click to toggle source
# File lib/command_four/board.rb, line 146 def get_up_count consecutive_count = 0 cur_row_idx = @row_idx while cur_row_idx < @height && consecutive_count <= @connect_n && @board[@col_idx][cur_row_idx] == @cur_color @winning_cells.push([@col_idx, cur_row_idx]) cur_row_idx += 1 consecutive_count += 1 end consecutive_count end
get_up_left_count()
click to toggle source
# File lib/command_four/board.rb, line 168 def get_up_left_count consecutive_count = 0 cur_row_idx = @row_idx cur_col_idx = @col_idx while cur_row_idx < @height && cur_col_idx >= 0 && consecutive_count <= @connect_n && @board[cur_col_idx][cur_row_idx] == @cur_color @winning_cells.push([cur_col_idx, cur_row_idx]) cur_row_idx += 1 cur_col_idx -= 1 consecutive_count += 1 end consecutive_count end
get_up_right_count()
click to toggle source
# File lib/command_four/board.rb, line 194 def get_up_right_count consecutive_count = 0 cur_row_idx = @row_idx cur_col_idx = @col_idx while cur_row_idx < @height && cur_col_idx < @width && consecutive_count <= @connect_n && @board[cur_col_idx][cur_row_idx] == @cur_color @winning_cells.push([cur_col_idx, cur_row_idx]) cur_row_idx += 1 cur_col_idx += 1 consecutive_count += 1 end consecutive_count end