Class: Board::ConnectNChecker
- Inherits:
-
Object
- Object
- Board::ConnectNChecker
- Defined in:
- lib/command_four/board.rb
Instance Method Summary collapse
- #check ⇒ Object
- #check_horizontal ⇒ Object
- #check_left_diag ⇒ Object
- #check_right_diag ⇒ Object
- #check_vertical ⇒ Object
- #get_down_count ⇒ Object
- #get_down_left_count ⇒ Object
- #get_down_right_count ⇒ Object
- #get_left_count ⇒ Object
- #get_right_count ⇒ Object
- #get_up_count ⇒ Object
- #get_up_left_count ⇒ Object
- #get_up_right_count ⇒ Object
-
#initialize(board, connect_n, col_idx, row_idx) ⇒ ConnectNChecker
constructor
A new instance of ConnectNChecker.
Constructor Details
#initialize(board, connect_n, col_idx, row_idx) ⇒ ConnectNChecker
Returns a new instance of ConnectNChecker.
81 82 83 84 85 86 87 88 89 90 |
# 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 |
Instance Method Details
#check ⇒ Object
92 93 94 95 96 97 98 |
# 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 ⇒ Object
100 101 102 103 104 |
# 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 ⇒ Object
112 113 114 115 116 |
# 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 ⇒ Object
118 119 120 121 122 |
# 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 ⇒ Object
106 107 108 109 110 |
# 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 ⇒ Object
157 158 159 160 161 162 163 164 165 166 |
# 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 ⇒ Object
181 182 183 184 185 186 187 188 189 190 191 192 |
# 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 ⇒ Object
207 208 209 210 211 212 213 214 215 216 217 218 |
# 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 ⇒ Object
135 136 137 138 139 140 141 142 143 144 |
# 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 ⇒ Object
124 125 126 127 128 129 130 131 132 133 |
# 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 ⇒ Object
146 147 148 149 150 151 152 153 154 155 |
# 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 ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 179 |
# 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 ⇒ Object
194 195 196 197 198 199 200 201 202 203 204 205 |
# 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 |