static void Main(string[] args) { ///////////////////////////////////////////////////////////////////// // two ways of creating & initializing monsters // create monster directly using breed - allocation and initialization happens automatically inside constructor Breed troll = new Breed(null, 10, "Troll attack"); Monster monsterTrollOne = new Monster(troll, "Troll1"); // using breed to create monster - separates object allocation and initialization Monster monsterTrollTwo = troll.CreateMonster("Troll2"); Console.WriteLine(string.Format("Troll 1 HP: {0}; Troll 1 attack: {1}", monsterTrollOne.GetHealth(), monsterTrollOne.GetAttack())); ///////////////////////////////////////////////////////////////////// Console.WriteLine(); ///////////////////////////////////////////////////////////////////// // using inheritance to create base monster breed Breed wizardBreed = new Breed(null, 5, "Generic magic attack"); Breed fireWizardBreed = new Breed(wizardBreed, 0, "Fire magic attack"); // passing in 0: inherits from parent Breed spellCasterWizardBreed = new Breed(wizardBreed, 8, null); Monster m1 = wizardBreed.CreateMonster("M1"); Monster m2 = fireWizardBreed.CreateMonster("M2"); Monster m3 = spellCasterWizardBreed.CreateMonster("M3"); Console.WriteLine(m1.ToString()); Console.WriteLine(m2.ToString()); Console.WriteLine(m3.ToString()); ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// // created dynamically via json file Console.WriteLine("\nCreated via JSON file:"); ReadJsonData("BreedJson.json"); foreach (var m in MonstersCreatedViaJSON) Console.WriteLine(m.ToString()); ///////////////////////////////////////////////////////////////////// Console.ReadLine(); }