namespace PersonalityGenerator; /// /// Represents the Sim personality generator with methods to assign traits and display personality. /// public static class TraitGenerator { /// /// The target value for prioritized traits to aim for, typically 8. /// private const int Target = 8; /// /// A random number generator instance for generating random values. /// private static readonly Random Rand = new Random(); /// /// Assigns high values to the specified prioritized traits and random values to other traits. /// /// A dictionary of traits with their initial values. /// A set of traits that the user wants to prioritize. public static void AssignPrioritizedTraits(Dictionary traits, HashSet prioritizedTraits) { Console.WriteLine("Assigning high values to prioritized traits..."); var remainingPoints = 50; // Sum of all traits should be <= 50 // Assign high values to prioritized traits (8, 9, or 10) foreach (var trait in prioritizedTraits) { var value = Math.Min(Target + Rand.Next(3), 10); remainingPoints -= value; traits[trait] = value; Console.WriteLine($"Setting {trait} to {value}."); } // Adjust remaining traits var nonPrioritizedTraits = traits.Keys.Except(prioritizedTraits).ToList(); foreach (var trait in nonPrioritizedTraits) { var maxPossibleValue = Math.Min(remainingPoints, 10); var value = Rand.Next(maxPossibleValue + 1); remainingPoints -= value; traits[trait] = value; Console.WriteLine($"Setting {trait} to {value}."); } Console.WriteLine("Adjusted remaining traits to maintain balance."); } /// /// Assigns random values to all traits. /// /// A dictionary of traits with their initial values. public static void AssignRandomTraits(Dictionary traits) { Console.WriteLine("Generating random personality..."); var remainingPoints = 50; // Sum of all traits should be <= 50 foreach (var trait in traits.Keys) { var maxPossibleValue = Math.Min(remainingPoints, 10); var value = Rand.Next(maxPossibleValue + 1); remainingPoints -= value; traits[trait] = value; Console.WriteLine($"Setting {trait} to {value}."); } Console.WriteLine("Random personality generation complete."); } /// /// Displays the generated personality traits. /// /// A dictionary of traits with their assigned values. public static void DisplayPersonality(Dictionary traits) { Console.WriteLine("\nGenerated Sim Personality:"); foreach (var trait in traits) { Console.WriteLine($"{trait.Key}: {trait.Value}"); } } }