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