class Board

Attributes

board[R]
side_length[R]

Public Class Methods

new(side_length) click to toggle source
# File lib/negamax_ttt/board.rb, line 4
def initialize(side_length)
  @side_length = side_length
  @board = create_empty_board
end

Public Instance Methods

clear_board() click to toggle source
# File lib/negamax_ttt/board.rb, line 17
def clear_board
  (1..size).each do |key|
    place_move(key, nil)
  end
end
column_starting_at(num) click to toggle source
# File lib/negamax_ttt/board.rb, line 47
def column_starting_at(num)
  column = []
  side_length.times do
    column << num
    num += side_length
  end
  column
end
columns() click to toggle source
# File lib/negamax_ttt/board.rb, line 29
def columns
  (1..side_length).map do |first_cell|
    column_starting_at(first_cell)
  end
end
create_empty_board() click to toggle source
# File lib/negamax_ttt/board.rb, line 43
def create_empty_board
  (1..size).map { |num| [num, nil] }.to_h
end
diagonal(first_cell, increment_value) click to toggle source
# File lib/negamax_ttt/board.rb, line 64
def diagonal(first_cell, increment_value)
  diagonal = []
  side_length.times do
    diagonal << first_cell
    first_cell += side_length + increment_value
  end
  diagonal
end
diagonals() click to toggle source
# File lib/negamax_ttt/board.rb, line 35
def diagonals
  [left_to_right_diagonal, right_to_left_diagonal]
end
left_to_right_diagonal() click to toggle source
# File lib/negamax_ttt/board.rb, line 56
def left_to_right_diagonal
  diagonal(1, 1)
end
open_spaces() click to toggle source
# File lib/negamax_ttt/board.rb, line 13
def open_spaces
  board.select { |key, value| value.nil? }.keys
end
place_move(space, move_signature) click to toggle source
# File lib/negamax_ttt/board.rb, line 9
def place_move(space, move_signature)
  @board[space] = move_signature
end
right_to_left_diagonal() click to toggle source
# File lib/negamax_ttt/board.rb, line 60
def right_to_left_diagonal
  diagonal(side_length, -1)
end
rows() click to toggle source

private

# File lib/negamax_ttt/board.rb, line 25
def rows
  (1..board.size).each_slice(side_length).to_a
end
size() click to toggle source
# File lib/negamax_ttt/board.rb, line 39
def size
  side_length * side_length
end