class GameObserver

Public Class Methods

new(board) click to toggle source
# File lib/game_observer.rb, line 3
def initialize(board)
  @game_board = board
end

Public Instance Methods

game_over?() click to toggle source
# File lib/game_observer.rb, line 7
def game_over?
  @game_board.full? || has_winner?
end
has_winner?() click to toggle source
# File lib/game_observer.rb, line 11
def has_winner?
  horizontal_win? || vertical_win? || diagonal_win?
end

Private Instance Methods

check_for_winner() { |index| ... } click to toggle source
# File lib/game_observer.rb, line 30
def check_for_winner
  (0...@game_board.dimension).each { |index| return true if is_a_win?(yield(index)) }
  return false
end
diagonal_win?() click to toggle source
# File lib/game_observer.rb, line 25
def diagonal_win?
  (is_a_win?(@game_board.left_diagonal_score.abs) ||
   is_a_win?(@game_board.right_diagonal_score.abs))
end
horizontal_win?() click to toggle source
# File lib/game_observer.rb, line 17
def horizontal_win?
  check_for_winner { |row| @game_board.row_scores[row].abs }
end
is_a_win?(value) click to toggle source
# File lib/game_observer.rb, line 35
def is_a_win?(value)
  value == @game_board.winning_value
end
vertical_win?() click to toggle source
# File lib/game_observer.rb, line 21
def vertical_win?
  check_for_winner { |column| @game_board.column_scores[column].abs }
end