Esempio n. 1
0
        public static void Main()
        {
            string[] wizardZeroData = Console.ReadLine().Split();
            Wizard   zero           = new Wizard(wizardZeroData[0], int.Parse(wizardZeroData[1]));

            WizardRepository.AddWizard(zero);

            string input = Console.ReadLine();

            while (input != "END")
            {
                string[] data      = input.Split();
                int      id        = int.Parse(data[0]);
                string   spellName = data[1];
                if (spellName == "REFLECTION")
                {
                    spellName = "ReflectionMagic";
                }
                else
                {
                    spellName = "FireBallMagic";
                }
                Type typeOfSpell = Assembly
                                   .GetExecutingAssembly()
                                   .GetTypes()
                                   .First(t => t.Name == spellName);
                var spell = (IMagic)Activator.CreateInstance(typeOfSpell);

                Wizard wiz = WizardRepository.ReturnWizardByID(id);
                wiz.CastMagic(spell);

                input = Console.ReadLine();
            }
        }
Esempio n. 2
0
        public void Cast(Wizard wiz)
        {
            Console.WriteLine($"{wiz.Name} {wiz.ID} casts Reflection");

            if (wiz.LeftWiz == null && wiz.RightWiz == null)
            {
                Wizard leftWiz  = new Wizard(wiz.Name, wiz.MagicalPower / 2);
                Wizard rightWiz = new Wizard(wiz.Name, wiz.MagicalPower / 2);
                wiz.LeftWiz  = leftWiz;
                wiz.RightWiz = rightWiz;
                WizardRepository.AddWizard(leftWiz);
                WizardRepository.AddWizard(rightWiz);
            }
            else
            {
                wiz.LeftWiz.CastMagic(new ReflectionMagic());
                wiz.RightWiz.CastMagic(new ReflectionMagic());
            }
        }