Class: TicTacToe::Board

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(saved = nil) ⇒ Board

Returns a new instance of Board.



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/tic_tac_toe_mchliakh/board/board.rb', line 5

def initialize(saved=nil)
  setup do
    if saved
      saved.map.with_index do |s, n|
        squares << Square.new(self, n + 1, s)
      end
    else
      9.times {|n| squares << Square.new(self, n + 1) }
    end
  end
end

Instance Attribute Details

#linesObject (readonly)

Returns the value of attribute lines.



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

def lines
  @lines
end

#squaresObject (readonly)

Returns the value of attribute squares.



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

def squares
  @squares
end

#winnerObject (readonly)

Returns the value of attribute winner.



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

def winner
  @winner
end

Instance Method Details

#game_over?Boolean

Returns:

  • (Boolean)


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

def game_over?
  !!@game_over
end

#serializeObject



38
39
40
# File 'lib/tic_tac_toe_mchliakh/board/board.rb', line 38

def serialize
  squares.map(&:serialize)
end

#square(number) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/tic_tac_toe_mchliakh/board/board.rb', line 17

def square(number)
  unless 1.upto(9).include?(number)
    raise RangeError, 'Choose a number between 1 and 9'
  end

  squares[number - 1]
end

#square_takenObject



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

def square_taken
  game_over if squares.all_taken?
end

#three_in_a_row(player) ⇒ Object



33
34
35
36
# File 'lib/tic_tac_toe_mchliakh/board/board.rb', line 33

def three_in_a_row(player)
  @winner = player
  game_over
end