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