class TicTacToeRZ::Players::PlayerMovementManager
Constants
- LARGEST_INDEX
Attributes
match_type[R]
player1_last_move[R]
player2_last_move[R]
Public Class Methods
new(type_of_match)
click to toggle source
Type of Match being played determines which player moves are reverted (one or both).
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 19 def initialize(type_of_match) raise Exceptions::NilReferenceError, "type_of_match" if type_of_match == nil @player1_last_move = no_last_move @player2_last_move = no_last_move @match_type = type_of_match end
Public Instance Methods
any_moves_to_undo?()
click to toggle source
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 71 def any_moves_to_undo? get_last_move_for_player(1) != no_last_move && get_last_move_for_player(2) != no_last_move end
get_last_move_for_player(player_number)
click to toggle source
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 31 def get_last_move_for_player(player_number) raise_error_for_invalid_player_number(player_number) last_move = player_number == 1 ? @player1_last_move : @player2_last_move end
moves_recordable?(match_number)
click to toggle source
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 66 def moves_recordable?(match_number) match_manager = GamePlay::MatchTypeManager.new match_manager.player_type(match_number, 1) == "Human" || match_manager.player_type(match_number, 2) == "Human" end
no_last_move()
click to toggle source
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 14 def no_last_move -1 end
number_of_human_players()
click to toggle source
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 75 def number_of_human_players first_player_type = @match_type.player1_type.selected_option second_player_type = @match_type.player2_type.selected_option count = 0 count = count + 1 if first_player_type == :Human count = count + 1 if second_player_type == :Human count end
raise_error_for_invalid_player_number(player_number)
click to toggle source
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 26 def raise_error_for_invalid_player_number(player_number) raise Exceptions::NilReferenceError, "player_number" if player_number.nil? raise Exceptions::InvalidValueError, "player_number" if player_number != 1 && player_number != 2 end
undo_last_move(game_board, player_manager)
click to toggle source
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 44 def undo_last_move(game_board, player_manager) raise Exceptions::NilReferenceError, "game_board" if game_board.nil? raise Exceptions::NilReferenceError, "player_manager" if player_manager.nil? first_player_type = @match_type.player1_type.selected_option second_player_type = @match_type.player2_type.selected_option raise Exceptions::GameRuleViolationError, Languages::MessageGenerator.no_moves_to_undo_error if !any_moves_to_undo? || number_of_human_players == 0 if number_of_human_players == 1 game_board.revert_board(get_last_move_for_player(1)) game_board.revert_board(get_last_move_for_player(2)) @player1_last_move = no_last_move @player2_last_move = no_last_move elsif number_of_human_players == 2 player_number = player_manager.get_player_number(player_manager.current_player) game_board.revert_board(get_last_move_for_player(player_number)) if player_number == 1 @player1_last_move = no_last_move else @player2_last_move = no_last_move end end end
update_last_move_for_player(player_number, updated_move)
click to toggle source
# File lib/tic_tac_toe_rz/tictactoeruby.core/players/player_movement_manager.rb, line 36 def update_last_move_for_player(player_number, updated_move) if player_number == 1 @player1_last_move = updated_move else @player2_last_move = updated_move end end