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