class TicTacToe::Checker

Public Class Methods

new() click to toggle source
# File lib/tic_tac_toe/checker.rb, line 4
def initialize
  @win = false
  @draw = false
end

Public Instance Methods

update(args) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 9
def update(args)
  gameplay = args[:gameplay]
  @board = gameplay.board.board
  @win = win?(args[:player])
            @draw = draw? unless @win
  gameplay.finish_game if (@win || @draw)
  gameplay.finished_turn_status(win: @win, draw: @draw)
end

Private Instance Methods

diagonal_win?(player) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 49
def diagonal_win?(player)
        left_to_right_diagonal_win?(player) || right_to_left_diagonal_win?(player)
end
draw?() click to toggle source
# File lib/tic_tac_toe/checker.rb, line 19
def draw?
            @board.all? {|row| row.all? { |element| !element.empty? }}
end
horizontal_win?(player) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 38
def horizontal_win?(player)
        3.times.any? { |count| win_horizontal_line?(player,count)}
end
left_to_right_diagonal_win?(player) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 53
def left_to_right_diagonal_win?(player)
        @board[0][0].owner?(player) &&
        @board[1][1].owner?(player) &&
        @board[2][2].owner?(player)
end
right_to_left_diagonal_win?(player) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 59
def right_to_left_diagonal_win?(player)
        @board[0][2].owner?(player) &&
        @board[1][1].owner?(player) &&
        @board[2][0].owner?(player)
end
vertical_win?(player) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 27
def vertical_win?(player)
            3.times.any? { |count| win_vertical_line?(player, count) }
end
win?(player) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 23
def win? (player)
        vertical_win?(player) || horizontal_win?(player) || diagonal_win?(player)
end
win_horizontal_line?(player, row) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 42
def win_horizontal_line?(player, row)
  cols = [0, 1, 2]
  cols.all? do |col_index|
    @board[row][col_index].owner?(player)
    end
end
win_vertical_line?(player, col) click to toggle source
# File lib/tic_tac_toe/checker.rb, line 31
def win_vertical_line?(player, col)
  rows = [0, 1, 2]
  rows.all? do |row_index|
    @board[row_index][col].owner?(player)
    end
end