class TicTacToe::Rules

Public Class Methods

new(board) click to toggle source
# File lib/tic_tac_toe/rules.rb, line 5
def initialize(board)
  @board = board
end

Public Instance Methods

tie() click to toggle source
# File lib/tic_tac_toe/rules.rb, line 14
def tie
  (1..9).each do |position|
    return false if @board.get_mark_at(position).nil?
  end
  return true
end
winner() click to toggle source
# File lib/tic_tac_toe/rules.rb, line 9
def winner
  return "tie" if tie
  ["X", "O"].detect { |mark| winning_mark?(mark) }
end

Private Instance Methods

potential_winning_combinations() click to toggle source
# File lib/tic_tac_toe/rules.rb, line 29
def potential_winning_combinations
  @board.rows + @board.columns + @board.diagonals
end
winning_mark?(mark) click to toggle source
# File lib/tic_tac_toe/rules.rb, line 23
def winning_mark?(mark)
  potential_winning_combinations.any? do |marks|
    winning_marks?(marks, mark)
  end
end
winning_marks?(marks, mark) click to toggle source
# File lib/tic_tac_toe/rules.rb, line 33
def winning_marks?(marks, mark)
  marks == [mark] * 3
end