class RubyGo::Moves

Attributes

capture_count[R]
internal_moves[R]
pass_count[R]

Public Class Methods

new() click to toggle source
# File lib/ruby-go/moves.rb, line 5
def initialize
  @internal_moves = []
  @pass_count = 0
  @capture_count = { black: 0, white: 0 }
end

Public Instance Methods

capture(stone) click to toggle source
# File lib/ruby-go/moves.rb, line 45
def capture(stone)
  current.captures << stone
  capture_count[stone.color] += 1
end
current() click to toggle source
# File lib/ruby-go/moves.rb, line 29
def current
  internal_moves[-1]
end
each(&block) click to toggle source
# File lib/ruby-go/moves.rb, line 21
def each(&block)
  internal_moves.each(&block)
end
pass(pass) click to toggle source
# File lib/ruby-go/moves.rb, line 16
def pass(pass)
  @pass_count += 1
  internal_moves << Move.new(pass)
end
play(played) click to toggle source
# File lib/ruby-go/moves.rb, line 11
def play(played)
  @pass_count += 0
  internal_moves << Move.new(played)
end
pop() click to toggle source
# File lib/ruby-go/moves.rb, line 33
def pop
  move = internal_moves.pop

  move.captures.each do |stone|
    capture_count[stone.color] -= 1
  end

  @pass_count -= 1 if move.empty?

  move
end
prev() click to toggle source
# File lib/ruby-go/moves.rb, line 25
def prev
  internal_moves[-2]
end