class RubyTictactoe::Game

Attributes

board[RW]
player_first_move[RW]
player_one[RW]
player_two[RW]
ui[RW]

Public Class Methods

new(settings) click to toggle source
# File lib/game.rb, line 6
def initialize(settings)
  @board = settings[:board]
  @player_one = settings[:player_one]
  @player_two = settings[:player_two]
  @player_first_move = settings[:player_first_move]
  @ui = UI.new
end

Public Instance Methods

advance_game() click to toggle source
# File lib/game.rb, line 14
def advance_game
  game_status_check(current_player.opponent.marker)
  ui.next_move_message(current_player.marker) unless board.game_over?
end
current_player() click to toggle source
# File lib/game.rb, line 33
def current_player
  if total_markers(MARKER_X) > total_markers(MARKER_O)
    player_two
  elsif total_markers(MARKER_O) > total_markers(MARKER_X)
    player_one
  else
    player_first_move
  end
end
game_status_check(marker) click to toggle source
# File lib/game.rb, line 19
def game_status_check(marker)
  if board.winner?(marker)
    ui.winning_game_message(marker)
  elsif !board.moves_remaining?
    ui.tie_game_message
  end
end
total_markers(marker) click to toggle source
# File lib/game.rb, line 43
def total_markers(marker)
  board.all_cells.select { |cell, value| value == marker }.count
end
verify_move(cell) click to toggle source
# File lib/game.rb, line 27
def verify_move(cell)
  return false if !board.available_cell?(cell)
  current_player.add_marker(board, cell)
  true
end