// Добавление стороны. public void SetSide(Direction direction, MapSite mapSide) { // Если Дверь, то вставить ее на место стены. (логика билдера - значит стены уже построены) if (mapSide is Door) { this.sides[direction] = mapSide; } else { // Если Стена то просто добавлять, значит идет построение комнаты, // а комната изначально строится только из стен только потом идет замена стены на дверь. this.sides.Add(direction, mapSide); } }
// Добавление стороны. public void SetSide(Direction direction, MapSite mapSide) { // РЕАЛИЗАЦИЯ ДЛЯ ВЕРСИИ ПРОТОТИПА. // Если Дверь, то вставить ее на место стены. (логика билдера - значит стены уже построены) //if (mapSide is Door) //{ // this.sides[direction] = mapSide; //} //else { // Если Стена то просто добавлять, значит идет построение комнаты, // а комната изначально строится только из стен только потом идет замена стены на дверь. this.sides.Add(direction, mapSide); // РЕАЛИЗАЦИЯ ДЛЯ СИНГЛТОНА И ПРЕДЫДУЩИХ ВЕРСИЙ. } }
public void SetSide(Direction direction, MapSite mapSide) { sides[direction] = mapSide; //sides.Add(direction, mapSide); Console.WriteLine(Convert.ToString(direction)); }
static void Main() { // Создаем генератор лабиринта. MazeGame game = new MazeGame(); Room room1 = new Room(1); Room room2 = new Room(2); // MazeFactory - SINGLETON. MazeFactory mazeFactory = MazeFactory.Instance(); // Создаем лабиринт из двух комнат используя фабричный метод - CreateMaze(). Maze maze = game.CreateMaze(mazeFactory); // Генератор псевдослучайных последовательностей. Random random = new Random(); // Попадаем в лабиринт, выбирая комнату случайным образом. Room room = maze.RoomNo(random.Next(1, 3)); // Выбранная сторона. MapSite site = null; // ИГРОВАЯ ПЕТЛЯ. // Начинаем идти по лабиринту. while (true) { // Случайным образом выбираем новую сторону. switch (random.Next(0, 5)) { // Выбираем направление куда будем идти (получаем ссылку на сторону). case 0: site = room.GetSide(Direction.North); break; case 1: site = room.GetSide(Direction.South); break; case 2: site = room.GetSide(Direction.East); break; case 3: site = room.GetSide(Direction.West); break; } // Отображаем номер комнаты в которой сейчас находимся. Console.Write("Я в комнате {0}. Делаю шаг. - ", room.RoomNumber); // Делаем шаг в выбранную сторону. (Визуальное отображение стороны на экране) site.Enter(); if (site is Door) // Если дверь, то перейти в другую комнату. { Door door = (Door)site; // Переход в другую комнату (Получение ссылки на новую комнату). room = door.OtherSideFrom(room); } // Иначе стена. Тогда опять ищем другое направление в той-же комнате. // Задержка между шагами. Thread.Sleep(800); } }
public void SetSide(Direction direction, MapSite mapSide) { this.sides.Add(direction, mapSide); }
static void Main() { // Генератор лабиринта. MazeGame mazeGame = new MazeGame(); // Создается лабиринт из двух комнат используя фабричный метод - CreateMaze(). Maze maze = mazeGame.CreateMaze(); // Генератор псевдослучайных последовательностей. Random random = new Random(); // Ввод имнимого игрока в лабиринт (комната выбирается случайным образом). Room room = maze.RoomNo(random.Next(1, 3)); // Выбранная сторона. MapSite site = null; // ИГРОВАЯ ПЕТЛЯ. // Начало прохождения лабиринта. while (true) { // Выбор новой стороны случайным образом. switch (random.Next(0, 4)) { // Выбор стороны направления (получаем ссылку на сторону). case 0: site = room.GetSide(Direction.North); break; case 1: site = room.GetSide(Direction.South); break; case 2: site = room.GetSide(Direction.East); break; case 3: site = room.GetSide(Direction.West); break; } // Отображение номера комнаты в которой сейчас находится мнимый игрок. Console.Write("Я в комнате {0}. Делаю шаг. - ", room.RoomNumber); // Попытка следать шаг в выбранную сторону (Визуальное отображение стороны на экране). site.Enter(); if (site is Door) // Если дверь, то перейти в другую комнату. { Door door = (Door)site; // Переход в другую комнату (Получение ссылки на новую комнату). room = door.OtherSideFrom(room); } // Иначе стена. Тогда продолжается поиск другого направления в той-же комнате. // Задержка между шагами. Thread.Sleep(800); } }