Class: Model::Board
- Inherits:
-
Object
- Object
- Model::Board
- Defined in:
- lib/tic_tac_toe/model/board.rb
Instance Attribute Summary collapse
-
#tile_collection ⇒ Object
readonly
Returns the value of attribute tile_collection.
Instance Method Summary collapse
- #available_moves ⇒ Object
- #available_tiles ⇒ Object
- #clone ⇒ Object
- #complete? ⇒ Boolean
- #current_team ⇒ Object
- #cycle_teams ⇒ Object
- #dimensions ⇒ Object
-
#initialize(args) ⇒ Board
constructor
A new instance of Board.
- #rating(team) ⇒ Object
- #set_piece(row, col, piece) ⇒ Object
- #tile_available?(row, col) ⇒ Boolean
- #winner ⇒ Object
Constructor Details
#initialize(args) ⇒ Board
Returns a new instance of Board.
5 6 7 8 9 |
# File 'lib/tic_tac_toe/model/board.rb', line 5 def initialize(args) @tile_collection = args[:tile_collection] @team_collection = args[:team_collection] @game_state = args[:game_state] end |
Instance Attribute Details
#tile_collection ⇒ Object (readonly)
Returns the value of attribute tile_collection.
3 4 5 |
# File 'lib/tic_tac_toe/model/board.rb', line 3 def tile_collection @tile_collection end |
Instance Method Details
#available_moves ⇒ Object
29 30 31 |
# File 'lib/tic_tac_toe/model/board.rb', line 29 def available_moves current_team.available_moves(self) end |
#available_tiles ⇒ Object
33 34 35 |
# File 'lib/tic_tac_toe/model/board.rb', line 33 def available_tiles @tile_collection.available_tiles end |
#clone ⇒ Object
65 66 67 68 69 |
# File 'lib/tic_tac_toe/model/board.rb', line 65 def clone self.class.new(tile_collection: @tile_collection.clone, team_collection: @team_collection.clone, game_state: @game_state.clone) end |
#complete? ⇒ Boolean
37 38 39 |
# File 'lib/tic_tac_toe/model/board.rb', line 37 def complete? available_tiles.count.zero? || !winner.nil? end |
#current_team ⇒ Object
41 42 43 |
# File 'lib/tic_tac_toe/model/board.rb', line 41 def current_team @team_collection.current end |
#cycle_teams ⇒ Object
45 46 47 |
# File 'lib/tic_tac_toe/model/board.rb', line 45 def cycle_teams @team_collection.next end |
#dimensions ⇒ Object
11 12 13 |
# File 'lib/tic_tac_toe/model/board.rb', line 11 def dimensions @tile_collection.dimensions end |
#rating(team) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/tic_tac_toe/model/board.rb', line 53 def (team) = @game_state.(self, team) if .negative? -= available_tiles.count elsif .positive? += available_tiles.count end end |
#set_piece(row, col, piece) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/tic_tac_toe/model/board.rb', line 15 def set_piece(row, col, piece) tile = @tile_collection.find_tile(row, col) tile.piece = piece tile end |
#tile_available?(row, col) ⇒ Boolean
23 24 25 26 27 |
# File 'lib/tic_tac_toe/model/board.rb', line 23 def tile_available?(row, col) tile = @tile_collection.find_tile(row, col) tile.piece.nil? end |
#winner ⇒ Object
49 50 51 |
# File 'lib/tic_tac_toe/model/board.rb', line 49 def winner @game_state.winner(self) end |