public bool ExecuteCommand(ConsoleKey command) { var switchPlayer = false; switch (command) { case Command.UpArrow: if (MovementOptions == Movement.SelectChecker || MovementOptions == Movement.MoveChecker) { _arrow.MoveUp(); } else { throw new BackgammonException("BackgammonException: Invalid player movement. Cannot execute command."); } break; case Command.DownArrow: if (MovementOptions == Movement.SelectChecker || MovementOptions == Movement.MoveChecker) { _arrow.MoveDown(); } else { throw new BackgammonException("BackgammonException: Invalid player movement. Cannot execute command."); } break; case Command.LeftArrow: if (MovementOptions == Movement.SelectChecker || MovementOptions == Movement.MoveChecker) { _arrow.MoveLeft(); } else { throw new BackgammonException("BackgammonException: Invalid player movement. Cannot execute command."); } break; case Command.RightArrow: if (MovementOptions == Movement.SelectChecker || MovementOptions == Movement.MoveChecker) { _arrow.MoveRight(); } else { throw new BackgammonException("BackgammonException: Invalid player movement. Cannot execute command."); } break; case Command.Enter: if (MovementOptions == Movement.RollDice) { RollDice(); } else if (MovementOptions == Movement.SelectChecker) { _arrow.SelectChecker(); } else if (MovementOptions == Movement.MoveChecker) { switchPlayer = _arrow.MoveChecker(); } else { throw new BackgammonException("BackgammonException: Invalid player movement. Cannot execute command."); } break; case Command.Spacebar: if (MovementOptions == Movement.MoveChecker) { _arrow.ReleaseChecker(); } else { throw new BackgammonException("BackgammonException: Invalid player movement. Cannot execute command."); } break; case Command.Tab: if (MovementOptions != Movement.None) { PassTurn(); switchPlayer = true; } else { throw new BackgammonException("BackgammonException: Invalid player movement. Cannot execute command."); } break; default: throw new BackgammonException("BackgammonException: Invalid command cannot be executed."); } return(switchPlayer); }