0 / 0 / 0
Регистрация: 31.01.2019
Сообщений: 2
1

Поиск выхода из лабиринта

31.01.2019, 05:35. Показов 1973. Ответов 2
Метки нет (Все метки)

Здравствуйте! Изучаю C#, застрял на одном моменте в задании. Суть такова: нужно найти выход из лабиринта. Для этого требуется пройтись по комнатам, имеющим стены и двери, и, если в комнате 1 (East, South) и 2 (South) пройдены двери - выход найден. Как пробовал делать я: хотел пройтись циклом foreach в Maze по комнатам, но выходит следующая ошибка "Оператор foreach не работает с переменными типа так как не содержит открытого определения для getenumerator". Как её исправить - я так и не понял, понял только что нужно добавлять интерфейсы и методы, а мне этого делать в задаче не надо.

Потом попробовал в Main пройтись циклом по перечислению, но проблема в том, что он проходит по сторонам, а не по комнатам. Что я делаю не так!? Как мне пройтись и по комнатам, и по её сторонам? Уже и не знаю как ещё пробовать.

Вот код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    public static class Maze
    {
        public static void AddRoom()
        {
            Room room1 = new Room();
            room1.SetSide((int)Direction.North, new Wall());
            room1.SetSide((int)Direction.East, new Door());
            room1.SetSide((int)Direction.South, new Door());
            room1.SetSide((int)Direction.West, new Wall());
            room1.GetSide((int)Direction.North);
            room1.GetSide((int)Direction.East);
            room1.GetSide((int)Direction.South);
            room1.GetSide((int)Direction.West);
 
            Room room2 = new Room();
            room2.SetSide((int)Direction.North, new Wall());
            room2.SetSide((int)Direction.East, new Wall());
            room2.SetSide((int)Direction.South, new Door());
            room2.SetSide((int)Direction.West, new Wall());
            room2.GetSide((int)Direction.North);
            room2.GetSide((int)Direction.East);
            room2.GetSide((int)Direction.South);
            room2.GetSide((int)Direction.West);           
        }
 
        public static void RoomNo()
        {
            Room room = new Room();
 
            if (room == null)
            {
                Console.WriteLine("No room");
            }            
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public enum Direction
    {
            North,
            South,
            East,
            West
    }
 
    class Program
    {
        static void Main(string[] args)
        {           
            foreach (string direction in Enum.GetNames(typeof(Direction)))
            {
                if (direction == "West")
                {
                   
                }
                Console.WriteLine("Направление " + direction);
            }
        }
    }
Заранее спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2019, 05:35
Ответы с готовыми решениями:

Поиск выхода из лабиринта
Необходимо реализовать поиск выхода из лабиринта вот допустим лабиринт,но тут он выводит только...

Поменять точки входа и выхода лабиринта
У меня есть два кода для создания лабиринта. Первый я не знаю как запустить, а второй не могу...

Поиск выхода из лабиринта
Здравствуйте! Изучаю C#, застрял на одном моменте в задании. Суть такова: нужно найти выход из...

Поиск выхода из лабиринта
Доброго времени суток! Помогите написать процедуру использующую стек для отыскания прохода по...

2
634 / 521 / 322
Регистрация: 20.05.2015
Сообщений: 1,453
31.01.2019, 06:03 2
Для начала надо представить лабиринт ввиде двумерного массива. Задать его либо вручную, либо случайно, а уж затем искать из него выход.
Чтобы найти выход из такого лабиринта достаточно будет просто посмотреть банальный алгоритм поиска пути. По идее получится цепочка координат в массиве, а дальше можно определить нужное направление/двери(если оно вообще кому-то нужно).
0
634 / 521 / 322
Регистрация: 20.05.2015
Сообщений: 1,453
31.01.2019, 06:10 3
То есть как-то так:
Поиск выхода из лабиринта

В данном случае 1 это начало лабиринта, а 9 его конец.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2019, 06:10
Помогаю со студенческими работами здесь

Поиск выхода из лабиринта
Такой вопрос. почему у меня не находит выход из лабиринта? предположительно ошибка в функции Solve...

Исправить поиск выхода из лабиринта
Есть программа поиска выхода из лабиринта: #include <stdio.h> #include <io.h> #include...

Программа «поиск выхода из лабиринта»
Открывать файл «карту», имя файла передавать как параметр командной строки. Считать, что в карте...

Реализовать программу, осуществляющую поиск выхода из лабиринта методом поиска с возвратом.
Реализовать программу, осуществляющую поиск выхода из лабиринта методом поиска с возвратом. Общий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru