1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| keng |
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Реальное имя: Андрей Репутация: 0 |
Здравствуйте!Помогите пожалуйста с курсовым по Паскалю!Задание примерно состоит в том чтобы сделать программу которая ищет выход из лабиринта.Самому простейшему варианту буду очень рад(желательно с комментариями)Заранее спасибо!
PS Очень оЧЕНЬ надо А я в Паскале не бум бум) |
![]() ![]() |
| Lapp |
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
На всякую гениальную программу найдется еще более гениальная! - (С) Lapp ))
Вот, набросал еще один вариантик простейшего лабиринта (главным образом потому, что лень было разбираться с тем)). На квадратной сетке, каждая ячейка есть либо стена, либо свободное пространство. Фомируется случайным образом с заданной плотностью стен. Принцип - правило одной руки (будем считать - левой). Реализовано оно тут примерно так. Лабиринт - это массив m на n. Начальные значения задаются так: 0 - свободное пространство (а также - счетчик, сколько раз были на этой клетке). Wall (тут равно 8) - стена. При прохождении "свободное пространство" принимает значения от 0 до 4, увеличиваясь при каждом заходе на клетку. Суть в том, что если мы заходим на некоторую клетку более 4 раз (на самом деле, это может случиться только с начальной клеткой) - это значит, что лабиринт непроходим (т.к. мы уже перебрали все четыре пути, ведущие из нее). Вот алгоритм: 1. Сначала входим на начальную клетку (она должна быть свободной) с произвольного направления (его можно выбирать случайно, но у меня просто постоянное). 2. Поворачиваемся налево. 3. Делаем шаг вперед. 4. Если оказались внутри стены (не пугайся, можешь считать, что ходишь по нарисованному лабиринту)), то поворачиваемся назад и переходим к п.3. 5. Если оказались в на свободном пространстве - проверяем, не финиш ли это (B). 6. Если финиш - подготавливаем сообщение и выходим из цикла. 7. Если не финиш - смотрим, сколько раз тут были (значение массива). 8. Если уже были тут 3 раза (то есть пришли в четвертый раз) - значит, лабиринт непроходим (подготавливаем сообщение и выходим из цикла). 9. Если меньше 3 раз, то увеличиваем значение массива. 10. Переходим к п.2 При плотности заполнения 35% получаются довольно интересные конфигурации иногда )). Вот, например, конфигурация непроходимая: Running "c:\...\pas\fp\fp110911_keng\fp110911_keng_lapp-3.exe " - мы тут описали полный круг и вернулись в точку входа А. А вот эта - проходимая, заканчивается в B. Довольно интересный случай, советую проследить детально )). Running "c:\...\pas\fp\fp110911_keng\fp110911_keng_lapp-3.exe " А вот код. Пока без комментов )). Давай договоримся так: попробуй сначала разобраться сам (используя алгоритм, приведенный выше). Можешь сделать свои комменты - я посмотрю, правильно или нет. Если не сможешь разобраться - задавай вопросы. // The Simplest Maze Ever -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
keng Лабиринт 11.09.2011 15:42
TarasBer 1. Изучи основы Паскаля (время у тебя есть).
2. Из… 11.09.2011 16:28
Lapp сделать программу которая ищет выход из лабиринта.… 12.09.2011 7:36
keng
keng, давай начнем с описания лабиринта. Уточни … 12.09.2011 20:04
TarasBer Ну на один вопрос ты ответил, ладно.
Остался второ… 12.09.2011 20:28
keng У меня есть некоторые мысли но нужно в одну их соб… 13.09.2011 14:15
TarasBer Надо дописать в начало процедуры вот это, иначе бу… 13.09.2011 15:26
keng Да оставил если не сдам отчислят((
А как это все о… 13.09.2011 15:44
TarasBer Ну пишешь всё это и в конце пишешь
begin
xk :=… 13.09.2011 16:57
keng uses wincrt;
label 1,2,3;
var f:text;
i,j,k,xn,jn,… 13.09.2011 17:07
Гость uses
CRT;
const
mx=100; nx=100;
Left=1; Rig… 13.09.2011 18:24
Lapp Я попробую сделать свой
Ловлю на слове ).
Я думаю… 14.09.2011 2:49
keng Все таки вот этот меня зацепил чем то)Я попробывал… 15.09.2011 14:07
TarasBer > //дир в будующем является const
Чего?
Проце… 15.09.2011 14:19
keng TarasBer Спасибо!Теперь это мне понятно!А … 15.09.2011 14:59
Lapp Послушай, keng, это же совсем (ну, хорошо, не совс… 16.09.2011 8:52![]() ![]() |
|
Текстовая версия | 8.11.2025 18:44 |