# Этап 2. Загрузка лабиринта из файла Во втором этапе разработки необходимо реализовать загрузку лабиринта из текстового файла, где: `#` – стена, ` ` – проход, `S` – старт, `E` – выход. ## Систематизация файлов Для удобного хранения лабиринтов было решено сделать систему наименования текстовых файлов в папке `source/templates`. Общая структура: ``` {размер}_{свойство 1}-{свойство 2}-{свойство n}_{версия}.txt ``` ### Размер Формат: `{ширина}x{высота}` | Пример | Значение | |--------|----------| | `10x10` | 10×10 клеток | | `50x50` | 50×50 клеток | | `100x100` | 100×100 клеток | | `30x30` | 30×30 клеток | | `20x20` | 20×20 клеток | ### Свойства | Свойство | Код | Описание | | ------------ | ----------- | -------------------------------------------------------------------------------------------- | | Простой путь | `path` | Существует маршрут от S до E | | Тупики | `deadends` | Лабиринт специально содержит тупики (могут быть и в других типах, но здесь — гарантированно) | | Запутанный | `spaghetti` | Сложная структура с циклами и ложными ходами | | Пустой | `empty` | Нет стен (`#`), только пробелы, S и E | | Без выхода | `noexit` | В лабиринте отсутствует символ `E` | ### Версия Формат: `v{номер}` - `v1`, `v2`, `v10` ### Примеры #### Маленькие (10×10, простой путь) ``` 10x10_path_v1.txt 10x10_path_v2.txt ... 10x10_path_v10.txt ``` #### Средние (50×50, тупики) ``` 50x50_deadends_v1.txt 50x50_deadends_v2.txt ... 50x50_deadends_v10.txt ``` #### Большие (100×100, запутанные) ``` 100x100_spaghetti_v1.txt 100x100_spaghetti_v2.txt ... 100x100_spaghetti_v10.txt ``` #### Пустые (30×30) ``` 30x30_empty_v1.txt 30x30_empty_v2.txt ... 30x30_empty_v10.txt ``` #### Без выхода (20×20) ``` 20x20_noexit_v1.txt 20x20_noexit_v2.txt ... 20x20_noexit_v10.txt ``` #### Комбинированные свойства ``` 50x50_deadends-noexit_v1.txt 100x100_spaghetti-noexit_v1.txt 10x10_path-empty_v1.txt (избыточно, но допустимо) ``` ### Примечание - Регистр имён файлов: **нижний регистр** - Разделители: только `_` и `-` - Расширение: `.txt` - Кодировка: UTF-8