Class: Board

Inherits:
Object
  • Object
show all
Defined in:
lib/ang_ttt_gem/board.rb

Instance Method Summary collapse

Constructor Details

#initializeBoard

Returns a new instance of Board.



3
4
5
# File 'lib/ang_ttt_gem/board.rb', line 3

def initialize
  @cells = Array.new(9) {" "}
end

Instance Method Details

#available_spacesObject



19
20
21
22
23
# File 'lib/ang_ttt_gem/board.rb', line 19

def available_spaces
  available_spaces = @cells.each_with_index.select { |i, idx| i =~ / / }
  available_spaces = available_spaces.map{|i| i[1] }
  available_spaces
end

#cell_occupied?(cell_number) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/ang_ttt_gem/board.rb', line 25

def cell_occupied?(cell_number)
   get(cell_number) != " "
end

#clear_all_spacesObject



33
34
35
36
37
38
# File 'lib/ang_ttt_gem/board.rb', line 33

def clear_all_spaces
  mark = " "
  @cells.each_with_index do |cell, index|
    set(index, mark)
  end
end

#columnsObject



46
47
48
# File 'lib/ang_ttt_gem/board.rb', line 46

def columns
  rows.transpose
end

#current_stateObject



29
30
31
# File 'lib/ang_ttt_gem/board.rb', line 29

def current_state
  current_state = @cells.map {|c| c}
end

#diagonal_backObject



56
57
58
59
60
# File 'lib/ang_ttt_gem/board.rb', line 56

def diagonal_back
  [ @cells[0],
  @cells[4],
  @cells[8] ]
end

#diagonal_forwardObject



50
51
52
53
54
# File 'lib/ang_ttt_gem/board.rb', line 50

def diagonal_forward
  [ @cells[2],
  @cells[4],
  @cells[6] ]
end

#get(cell_number) ⇒ Object



7
8
9
# File 'lib/ang_ttt_gem/board.rb', line 7

def get(cell_number)
  @cells[cell_number]
end

#possible_winning_combinationsObject



62
63
64
65
66
67
68
# File 'lib/ang_ttt_gem/board.rb', line 62

def possible_winning_combinations
  possible_winning_combinations = []
  rows.collect{|row| possible_winning_combinations << row }
  columns.collect{|column| possible_winning_combinations << column }
  possible_winning_combinations << diagonal_forward
  possible_winning_combinations << diagonal_back
end

#rowsObject



40
41
42
43
44
# File 'lib/ang_ttt_gem/board.rb', line 40

def rows
   [ @cells[0..2],
   @cells[3..5],
   @cells[6..8] ]
end

#set(cell_number, mark) ⇒ Object



11
12
13
# File 'lib/ang_ttt_gem/board.rb', line 11

def set(cell_number, mark) 
  @cells[cell_number] = mark
end

#undo_move(cell_number) ⇒ Object



15
16
17
# File 'lib/ang_ttt_gem/board.rb', line 15

def undo_move(cell_number)
  @cells[cell_number] = " "
end