class TicTacToe::Rules

Public Class Methods

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

Public Instance Methods

game_over?(board, players) click to toggle source
# File lib/tic_tac_toe/rules.rb, line 7
def game_over?(board, players)
  players.any? { |player| player_won?(player, board) } or board_full?(board)
end

Private Instance Methods

board_full?(board) click to toggle source
# File lib/tic_tac_toe/rules.rb, line 13
def board_full?(board)
  board.fields.all? { |field| board.marked?(field) }
end
player_won?(player, board) click to toggle source
# File lib/tic_tac_toe/rules.rb, line 17
def player_won?(player, board)
  (board.rows + board.columns + board.diagonals).any? do |sequence|
    winning_adjacency?(player.symbol, sequence)
  end
end
winning_adjacency?(symbol, sequence) click to toggle source
# File lib/tic_tac_toe/rules.rb, line 23
def winning_adjacency?(symbol, sequence)
  /#{symbol}{#{@goal},}/ === sequence.join
end