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) знают только конкретные фабрики, которые // работают с быдлом. Но при этом фабрики ничего не знают о других частях программы. // Инкапсуляция, мать её. }
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); }
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); }
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(); }