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}"); } }