class BattleBoats::ConsoleUI

Attributes

board_formatter[R]
input[R]
output[R]

Public Class Methods

new(output: $stdout, input: $stdin, board_formatter: BattleBoats::BoardFormatter.new) click to toggle source
# File lib/battle_boats/console_ui.rb, line 7
def initialize(output: $stdout,
               input: $stdin,
               board_formatter: BattleBoats::BoardFormatter.new)
  @output = output
  @input = input
  @board_formatter = board_formatter
end

Public Instance Methods

display_ally_board(board) click to toggle source
# File lib/battle_boats/console_ui.rb, line 24
def display_ally_board(board)
  output.puts board_formatter.format_board(board, hide_ships: false)
end
display_board(board) click to toggle source
# File lib/battle_boats/console_ui.rb, line 19
def display_board(board)
  hide_ships = !BattleBoats::DEVELOPMENT
  output.puts board_formatter.format_board(board, hide_ships: hide_ships)
end
display_ship_data(ship:) click to toggle source
# File lib/battle_boats/console_ui.rb, line 28
def display_ship_data(ship:)
  output.puts "SHIP: #{ship.name} ALIAS: #{ship.symbol}"
  output.puts "LENGTH: #{ship.length}"
end
display_status_report(status_report) click to toggle source
# File lib/battle_boats/console_ui.rb, line 53
def display_status_report(status_report)
  output.puts status_report
end
get_coordinate() click to toggle source
# File lib/battle_boats/console_ui.rb, line 33
def get_coordinate
  output.puts "Target coordinate: "
  user_input = input.gets.chomp
  until board_formatter.valid_coordinate_input?(user_input)
    output.puts "Coordinate invalid."
    user_input = input.gets.chomp
  end
  board_formatter.input_to_coordinate(user_input)
end
get_orientation() click to toggle source
# File lib/battle_boats/console_ui.rb, line 43
def get_orientation
  output.puts "Orientation [hV]:"
  user_input = input.gets.chomp
  until valid_orientation_input?(user_input)
    output.puts "Orientation invalid."
    user_input = input.gets.chomp
  end
  input_to_orientation(user_input)
end
greet() click to toggle source
# File lib/battle_boats/console_ui.rb, line 15
def greet
  output.puts "Welcome to Battle Boats!"
end
lose() click to toggle source
# File lib/battle_boats/console_ui.rb, line 61
def lose
  output.puts "You've lost the game!"
end
win() click to toggle source
# File lib/battle_boats/console_ui.rb, line 57
def win
  output.puts "You've won the game!"
end

Private Instance Methods

input_to_orientation(input) click to toggle source
# File lib/battle_boats/console_ui.rb, line 73
def input_to_orientation(input)
  if input =~ /^[h{1}]$/i
    :horizontal
  elsif input =~ /^[v{1}]$/i
    :vertical
  end
end
valid_orientation_input?(orientation) click to toggle source
# File lib/battle_boats/console_ui.rb, line 69
def valid_orientation_input?(orientation)
  orientation =~ /^[h{1}|v{1}]$/i
end