class Battleships::Game
Constants
- BOARD_MARKERS
- BOARD_TEMPLATE
Attributes
player_1[R]
player_2[R]
Public Class Methods
new(playerClass, boardClass)
click to toggle source
# File lib/battleships/game.rb, line 30 def initialize(playerClass, boardClass) @player_1 = initialize_player playerClass, boardClass @player_2 = initialize_player playerClass, boardClass player_1.opponent = player_2 player_2.opponent = player_1 end
Public Instance Methods
has_winner?()
click to toggle source
# File lib/battleships/game.rb, line 45 def has_winner? players.any?(&:winner?) end
initialize_player(playerClass, boardClass)
click to toggle source
# File lib/battleships/game.rb, line 39 def initialize_player(playerClass, boardClass) player = playerClass.new player.board = boardClass.new player end
opponent_board_view(player)
click to toggle source
# File lib/battleships/game.rb, line 63 def opponent_board_view player create_print player.opponent.board do |cell| BOARD_MARKERS[cell.status] end end
own_board_view(player)
click to toggle source
# File lib/battleships/game.rb, line 53 def own_board_view player create_print player.board do |cell| if cell.empty? BOARD_MARKERS[cell.status] else cell.shot? ? BOARD_MARKERS[:hit] : cell.content.type.to_s.upcase[0] end end end
winner()
click to toggle source
# File lib/battleships/game.rb, line 49 def winner players.find(&:winner?) end
Private Instance Methods
create_print(board) { |board| ... }
click to toggle source
# File lib/battleships/game.rb, line 76 def create_print board coord_handler = CoordinateHandler.new output = BOARD_TEMPLATE coord_handler.each_row do |row, number| print_row = row.map do |coord| yield board[coord] end.join('') output = output.sub("<#{number}>", print_row) end output end
players()
click to toggle source
# File lib/battleships/game.rb, line 71 def players [player_1, player_2] end