Class: Model::GameTree

Inherits:
Object
  • Object
show all
Defined in:
lib/tic_tac_toe/model/game_tree.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(board, previous_move = nil) ⇒ GameTree

Returns a new instance of GameTree.



7
8
9
10
11
# File 'lib/tic_tac_toe/model/game_tree.rb', line 7

def initialize(board, previous_move = nil)
  @board = board
  @previous_move = previous_move
  @equivalent = {}
end

Instance Attribute Details

#boardObject (readonly)

Returns the value of attribute board.



5
6
7
# File 'lib/tic_tac_toe/model/game_tree.rb', line 5

def board
  @board
end

#previous_moveObject (readonly)

Returns the value of attribute previous_move.



5
6
7
# File 'lib/tic_tac_toe/model/game_tree.rb', line 5

def previous_move
  @previous_move
end

Class Method Details

.generate_game_tree(board, previous_move = nil) ⇒ Object



14
15
16
# File 'lib/tic_tac_toe/model/game_tree.rb', line 14

def generate_game_tree(board, previous_move = nil)
  new(board, previous_move)
end

Instance Method Details

#complete?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/tic_tac_toe/model/game_tree.rb', line 23

def complete?
  @board.complete? || next_game_trees.count.zero?
end

#current_teamObject



19
20
21
# File 'lib/tic_tac_toe/model/game_tree.rb', line 19

def current_team
  @board.current_team
end

#next_game_treesObject

Produces children based on the number of unique tile collection orientations. For more info, check out Model::TileCollection.



33
34
35
36
37
38
39
40
41
# File 'lib/tic_tac_toe/model/game_tree.rb', line 33

def next_game_trees
  return @next_game_trees unless @next_game_trees.nil?

  moves = @board.available_moves

  @next_game_trees = moves.each_with_object([]) { |move, game_trees| add_game_trees(game_trees, move) }

  @next_game_trees
end

#rating(team) ⇒ Object



27
28
29
# File 'lib/tic_tac_toe/model/game_tree.rb', line 27

def rating(team)
  @board.rating(team)
end