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