Охрана труда:
нормативно-правовые основы и особенности организации
Обучение по оказанию первой помощи пострадавшим
Аккредитация Минтруда (№ 10348)
Подготовьтесь к внеочередной проверке знаний по охране труда и оказанию первой помощи.
Допуск сотрудника к работе без обучения или нарушение порядка его проведения
грозит организации штрафом до 130 000 ₽ (ч. 3 статьи 5.27.1 КоАП РФ).

Свидетельство о регистрации
СМИ: ЭЛ № ФС 77-58841
от 28.07.2014

Почему стоит размещать разработки у нас?
  • Бесплатное свидетельство – подтверждайте авторство без лишних затрат.
  • Доверие профессионалов – нас выбирают тысячи педагогов и экспертов.
  • Подходит для аттестации – дополнительные баллы и документальное подтверждение вашей работы.
Свидетельство о публикации
в СМИ
свидетельство о публикации в СМИ
Дождитесь публикации материала и скачайте свидетельство о публикации в СМИ бесплатно.
Диплом за инновационную
профессиональную
деятельность
Диплом за инновационную профессиональную деятельность
Опубликует не менее 15 материалов в методической библиотеке портала и скачайте документ бесплатно.
18.12.2015

Алгоритм построения лабиринта

Трофимов Виктор Геннадьевич
учитель информатики
Алгоритм построения случайного лабиринта гарантирует создание связного лабиринта с обязательным наличием хотя бы одного пути от произвольной точки А до точки Б. В материале подробно разбирается классическая идея такого алгоритма, основанная на системном «прорыве» стен и объединении изолированных областей. Рассматриваются ключевые принципы: как обеспечить случайность структуры, избежать изолированных комнат и создать единственное корректное решение. Описание сфокусировано на логике и этапах процесса — от начальной сетки до готового лабиринта — и служит фундаментом для последующей программной реализации на любом языке. Этот материал по информатике поможет понять базовые концепции генерации процедурного контента и теорию графов.

Содержимое разработки

ФИО автора: Трофимов Виктор Геннадьевич

Место работы: ГКООУ санаторная школа-интернат №28 г. Ростова-на-Дону

Должность: учитель информатики и ИКТ

АЛГОРИТМ ПОСТРОЕНИЕ ЛАБИРИНТА

Задать лабиринт в программе с помощью чтения данных из файла достаточно легко. Но как научить компьютер «строить» лабиринт? Лабиринт, гарантирующий доступ из одной точки в другую без помех?

Допустим, у нас есть некое поле. Поле хранится в двумерном массиве структуры. Структура содержит следующие триггеры (логический тип, bool):

in - внутри

out - снаружи

wall - стена

start - следующая точка для прохода из текущей

Первоначально все «проходы» лабиринта находятся снаружи «пути», т.е. параметрout = true.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

2

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

3

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

4

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

5

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

6

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

7

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

8

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

9

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

10

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

11

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

12

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

13

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

14

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

15

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

1 шаг. Выбираем случайную точку и помечаем её in, переключая параметр out. На рисунке точка: x = 5, y = 10. Одновременно инициализируем всем окружающим её точкам параметр wall, сбрасывая остальные.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

2

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

3

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

4

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

5

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

6

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

7

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

8

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

9

out

out

out

W

W

W

out

out

out

out

out

out

out

out

out

10

out

out

out

W

IN

W

out

out

out

out

out

out

out

out

out

11

out

out

out

W

W

W

out

out

out

out

out

out

out

out

out

12

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

13

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

14

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

15

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

2 шаг. От этой точки ставим точки, в которые будет возможно пройти из текущей точки. Учитывая, что ширина границ в этом лабиринте равна 1 символу, то точки будут располагаться в x + 2, x - 2, y + 2 и y - 2 координатах. Но при условии, что параметр «следующей возможно» точки out равен истине (то есть точка находится ВНЕ лабиринта). На рисунке такие точки помечены символом S. Параметр out сбрасывается.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

2

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

3

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

4

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

5

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

6

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

7

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

8

out

out

out

out

S

out

out

out

out

out

out

out

out

out

out

9

out

out

out

W

W

W

out

out

out

out

out

out

out

out

out

10

out

out

S

W

IN

W

S

out

out

out

out

out

out

out

out

11

out

out

out

W

W

W

out

out

out

out

out

out

out

out

out

12

out

out

out

out

S

out

out

out

out

out

out

out

out

out

out

13

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

14

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

15

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

3 шаг. Выбираем случайную точку из текущих, помеченных маркером S(параметр start). Допустим, это будет точка S справа от блока, по координатам 7, 10. Выбрав, помечаем точку, лежащую между первоначальной и выбранной параметромin, сбрасывая остальные (то есть это будет «проход». Переходим к шагу №1. Выполняем алгоритм до тех пор, пока у нас не останется точек, помеченных параметром out. Или выполняем, пока не закончатся точкиS, с которых можно выполнять следующий «ход».

В конце алгоритма все «проходы» будут помечены параметром in (внутри лабиринта), все стены - wall. На рисунке обозначено - серый фон у стен, зелёный - у проходов будущего лабиринта.

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

2

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

3

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

4

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

5

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

6

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

7

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

8

out

out

out

out

S

out

S

out

out

out

out

out

out

out

out

9

out

out

out

W

W

W

W

W

out

out

out

out

out

out

out

10

out

out

S

W

IN

IN

IN

W

S

out

out

out

out

out

out

11

out

out

out

W

W

W

W

W

out

out

out

out

out

out

out

12

out

out

out

out

S

out

S

out

out

out

out

out

out

out

out

13

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

14

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

15

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

Схематичная реализация (случайно выбрали точку S на координатах 7, 8):

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

2

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

3

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

4

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

5

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

6

out

out

out

out

out

out

S

out

out

out

out

out

out

out

out

7

out

out

out

out

out

W

W

W

out

out

out

out

out

out

out

8

out

out

out

out

S

W

IN

W

S

out

out

out

out

out

out

9

out

out

out

W

W

W

IN

W

out

out

out

out

out

out

out

10

out

out

S

W

IN

IN

IN

W

S

out

out

out

out

out

out

11

out

out

out

W

W

W

W

W

out

out

out

out

out

out

out

12

out

out

out

out

S

out

S

out

out

out

out

out

out

out

out

13

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

14

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

15

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

Схематичная реализация (случайно выбрали точку S на координатах 5, 12):

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

2

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

3

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

4

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

5

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

6

out

out

out

out

out

out

S

out

out

out

out

out

out

out

out

7

out

out

out

out

out

W

W

W

out

out

out

out

out

out

out

8

out

out

out

out

S

W

IN

W

S

out

out

out

out

out

out

9

out

out

out

W

W

W

IN

W

out

out

out

out

out

out

out

10

out

out

S

W

IN

IN

IN

W

S

out

out

out

out

out

out

11

out

out

out

W

IN

W

W

W

out

out

out

out

out

out

out

12

out

out

S

W

IN

W

S

out

out

out

out

out

out

out

out

13

out

out

out

W

W

W

out

out

out

out

out

out

out

out

out

14

out

out

out

out

S

out

out

out

out

out

out

out

out

out

out

15

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

Схематичная реализация (случайно выбрали точку S на координатах 5, 8):

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

2

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

3

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

4

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

5

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

6

out

out

out

out

S

out

S

out

out

out

out

out

out

out

out

7

out

out

out

W

W

W

W

W

out

out

out

out

out

out

out

8

out

out

S

W

IN

W

IN

W

S

out

out

out

out

out

out

9

out

out

out

W

IN

W

IN

W

out

out

out

out

out

out

out

10

out

out

S

W

IN

IN

IN

W

S

out

out

out

out

out

out

11

out

out

out

W

IN

W

W

W

out

out

out

out

out

out

out

12

out

out

S

W

IN

W

S

out

out

out

out

out

out

out

out

13

out

out

out

W

W

W

out

out

out

out

out

out

out

out

out

14

out

out

out

out

S

out

out

out

out

out

out

out

out

out

out

15

out

out

out

out

out

out

out

out

out

out

out

out

out

out

out

Когда «закончатся» все точки S - поле будет заполнено лабиринтом.

Адрес публикации: https://www.prodlenka.org/metodicheskie-razrabotki/172953-algoritm-postroenija-labirinta

Свидетельство участника экспертной комиссии
Рецензия на методическую разработку
Опубликуйте материал и закажите рецензию на методическую разработку.
Также вас может заинтересовать
Свидетельство участника экспертной комиссии
Свидетельство участника экспертной комиссии
Оставляйте комментарии к работам коллег и получите документ
БЕСПЛАТНО!
У вас недостаточно прав для добавления комментариев.

Чтобы оставлять комментарии, вам необходимо авторизоваться на сайте. Если у вас еще нет учетной записи на нашем сайте, предлагаем зарегистрироваться. Это займет не более 5 минут.

 

Для скачивания материалов с сайта необходимо авторизоваться на сайте (войти под своим логином и паролем)

Если Вы не регистрировались ранее, Вы можете зарегистрироваться.
После авторизации/регистрации на сайте Вы сможете скачивать необходимый в работе материал.

Рекомендуем Вам курсы повышения квалификации и переподготовки