コード例 #1
0
        public Game(IBidloFactory factory)
        {
            gamer = new Hero();         // В игре должен быть главный герой, за которого бы будем играть

            Tree[] trees = new Tree[] { // Задаём список деревьев, которые будут на локации
                new Tree(),
                new Tree(),
                new Tree()
            };

            Bench[] benches = new Bench[] { // Задаём список скамеек, которые будут на локации
                new Bench(),
                new Bench(),
                new Bench()
            };

            IBidlo[] bidlos = new IBidlo[100]; // Задаём список монстров на локации

            for (int i = 0; i < bidlos.Length; i++)
            {
                bidlos[i] = factory.Create(); // заполнение массива делегировано фабричному методу
            }

            location = new Park(bidlos, trees, benches); // инициализируем игровую локацию

            // Обратите внимание, что эта портянка вообще ничего не знает о пространстве имён с
            // конкретными монстрами. Вместо этого происходит манипуляция абстракциями и фабриками.
            // Теперь насколько бы большой не была бы иерархия наследования быдла, она не будет нам мешать
            // при разработке этой части приложения (да и вообще какой-то другой части).
            // О конкретном быдло (Alkash, Exhibitionist, Gopnik) знают только конкретные фабрики, которые
            // работают с быдлом. Но при этом фабрики ничего не знают о других частях программы.
            // Инкапсуляция, мать её.
        }
コード例 #2
0
        public mGame(IBidloFactory level)
        {
            you = new Hero();

            Tree[] trees = new Tree[]
            {
                new Tree(),
                new Tree(),
                new Tree(),
            };

            Bench[] benches = new Bench[]
            {
                new Bench(),
                new Bench(),
            };

            IBidlo[] bidlos = new IBidlo[100];

            for (int i = 0; i < bidlos.Length; i++)
            {
                bidlos[i] = level.Create();
            }

            park = new Park(bidlos, trees, benches);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: MUR4D/Design-Patterns-
        static void Main(string[] args)
        {
            IBidloFactory[] lvls = new IBidloFactory[] {
                new EasyLevel(),
                new MiddleLevel(),
                new HardLevel()
            };

            Console.WriteLine("Choose level:");

            for (int i = 0; i < lvls.Length; i++)
            {
                Console.WriteLine($"{i + 1}. {lvls[i].ToString()}");
            }

            int lvlNumber = Convert.ToInt32(Console.ReadLine()) - 1;

            if (lvlNumber > -1 && lvlNumber < lvls.Length)
            {
                mGame game = new mGame(lvls[lvlNumber]);
                game.Start();
            }

            else
            {
                Console.WriteLine("Incorrect choose");
            }



            Console.ReadKey(true);
        }
コード例 #4
0
        static void Main(string[] args)
        {
            IBidloFactory[] lvls = new IBidloFactory[] { // инициализируем уровни сложности, пользователь будет их выбирать
                new EzLvlBidloFactory(),
                new MidleLvlBidloFactory(),
                new HardLvlBidloFactory()
            };

            Console.WriteLine("Выберете уровень сложности и введите его номер:");

            for (int i = 0; i < lvls.Length; i++)                  // выведем все уровни сложности пользователю
            {
                Console.WriteLine($"{i+1}. {lvls[i].ToString()}"); // i+1 потому что нормальные люди считают с 1, а не с 0
            }

            int lvlNumber = Convert.ToInt32(Console.ReadLine()) - 1; // -1 потому что нормальные люди всё ещё считают с 1)))

            if (lvlNumber > -1 && lvlNumber < lvls.Length)           // проверяем находится ли число в пределах массива
            {
                Game game = new Game(lvls[lvlNumber]);               // создаём игру с выбранным уровнем сложности
                game.StartGame();
            }
            else
            {
                Console.WriteLine("Недопустимое число");
            }

            Console.ReadKey();
        }