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

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

31.01.2019, 05:00. Показов 1417. Ответов 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
36
    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("Выход найден!");
                }
                Console.WriteLine("Направление " + direction);               
            }
        }
    }
Заранее спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2019, 05:00
Ответы с готовыми решениями:

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

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

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

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

2
999 / 748 / 240
Регистрация: 30.04.2009
Сообщений: 3,089
01.02.2019, 02:47 2
Для это вам для начала надо определить модель лабиринта, т.е. как комнаты связаны между собой
Сейчас лабиринта у вас нет, а есть только отдельные несвязанне комнаты, поэтому и навигацию вы никак не можете сделать.
0
1 / 1 / 0
Регистрация: 13.01.2018
Сообщений: 55
01.02.2019, 23:42 3
Когда-то я делал подобное задание, только на другом языке.
Я сделал класс Room в котором были 4 свойства (North, South, West, East) в соответствии с каждым возможным проходом. Если нужного прохода не было, свойству присваивался null, если проход был то ссылка на комнату. И когда поиск проходил через нужную комнату, то ссылку заменял на null да бы у скрипта не было желания пойти этим путем еще раз.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2019, 23:42
Помогаю со студенческими работами здесь

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

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

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

Какими методами лучше реализовать генерацию и поиск выхода из лабиринта?
Нужно сделать генерацию рандомнго лабиринта, и поиск выхода с него на С++. Подскажите пожалуйста...


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

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

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