示例#1
0
        // Чтобы построить дверь между двумя комнатами, требуется найти обе комнаты в лабиринте и их общую стену.
        public override void BuildDoor(int roomFrom, int roomTo)
        {
            Room room1 = currentMaze.RoomNo(roomFrom);
            Room room2 = currentMaze.RoomNo(roomTo);
            Door door  = new Door(room1, room2);

            room1.SetSide(CommonWall(room1, room2), door);
            room2.SetSide(CommonWall(room2, room1), door);
        }
        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);
            }
        }
示例#3
0
        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);
            }
        }