class Checkers::AI::Node

Attributes

board[R]
children[R]
player[R]
score[RW]

Public Class Methods

new(board, player, depth = 0) click to toggle source
# File lib/checkers/ai/node.rb, line 9
def initialize(board, player, depth = 0)
  @board = board
  @player = player
  @score = board.calculate_score(player: player)
  @children = generate_children(depth)
end

Public Instance Methods

children_size() click to toggle source
# File lib/checkers/ai/node.rb, line 16
def children_size
  @children.size
end

Private Instance Methods

generate_children(depth) click to toggle source
# File lib/checkers/ai/node.rb, line 22
def generate_children(depth)
  return [] if depth.zero?

  plays_next = player == :human ? :ai : :human
  boards = Board.generate_boards(board, player)
  boards.map { |board| Node.new(board, plays_next, depth - 1) }
end