public void Play()
        {
            var isGuessed         = false;
            var isAllAttemptsUsed = false;

            while (!isAllAttemptsUsed && !isGuessed)
            {
                var number = _guessing.TryGuessNumber();
                isAllAttemptsUsed = _guessing.AttemptsUsed >= _gameSettings.MaxAttempts;

                var resultAttempt = _mysterious.SuggestNumber(number);
                _guessing.AppendResultAttempt(new AttemptModel(_guessing.AttemptsUsed, number, resultAttempt));

                switch (resultAttempt)
                {
                case GuessingStates.NumberIsLess:
                    Console.WriteLine($"The guessed number is less than {number}.");
                    break;

                case GuessingStates.NumberIsMore:
                    Console.WriteLine($"The guessed number is more than {number}.");
                    break;

                case GuessingStates.NumberIsEqual:
                    isGuessed = true;
                    Console.WriteLine($"{_guessing.PlayerName} guessed the number {number}");
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            if (!isGuessed)
            {
                Console.WriteLine(
                    $"{_guessing.PlayerName} used {_gameSettings.MaxAttempts} attempts, but the number was not guessed. The number guessed was {_mysterious.GuessedNumber}");
            }
        }