/
victor_t
/
maze
Обзор
Документация
Войти
/
victor_t
/
maze
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
CI/CD
Аналитика
Безопасность
master
src/controller/Controller.java
182 строки
5 KB
Victor
relocated project folder
03 июл 2026, 03:14
03 июл 2026, 03:14
827638e
Код
Авторство
О чём код?
package controller; import java.util.List; import model.Cave; import model.Maze; /** * Контроллер приложения, связывающий пользовательский интерфейс и модель. * * <p>Класс {@code Controller} управляет взаимодействием с объектами * {@link model.Maze} и {@link model.Cave}, предоставляя единый интерфейс * для работы с лабиринтом и пещерой.</p> * * <p>Используется слоем представления для выполнения операций: * загрузки/сохранения, генерации и получения данных.</p> */ public class Controller { private final Maze maze; private final Cave cave; /** * Создает контроллер с заданными моделями лабиринта и пещеры. * * @param maze объект лабиринта * @param cave объект пещеры */ public Controller(Maze maze, Cave cave) { this.maze = maze; this.cave = cave; } /** * Загружает лабиринт из файла. * * @param fileName путь к файлу * @throws Exception если произошла ошибка чтения */ public void loadFromFile(String fileName) throws Exception { maze.loadFromFile(fileName); } /** * Сохраняет лабиринт в файл. * * @param fileName путь к файлу * @throws Exception если произошла ошибка записи */ public void saveToFile(String fileName) throws Exception { maze.saveToFile(fileName); } /** * Генерирует новый лабиринт заданного размера. * * @param row количество строк * @param col количество столбцов */ public void generate(int row, int col) { maze.generate(row, col); } /** * Возвращает количество строк лабиринта. * * @return количество строк лабиринта */ public int getRow() { return maze.getRows(); } /** * Возвращает количество столбцов лабиринта. * * @return количество столбцов лабиринта */ public int getCol() { return maze.getCols(); } /** * Возвращает правую стену. * * @return массив правых стен */ public boolean[][] getRightWall() { return maze.getRightWall(); } /** * Возвращает нижнюю стену. * * @return массив нижних стен */ public boolean[][] getBottomWall() { return maze.getBottomWall(); } /** * Находит путь в лабиринте между двумя точками. * * @param bx начальная координата X * @param by начальная координата Y * @param ex конечная координата X * @param ey конечная координата Y * @return список точек пути */ public List<int[]> getPath(int bx, int by, int ex, int ey) { return maze.getPath(bx, by, ex, ey); } /** * Загружает пещеру из файла. * * @param fileName путь к файлу * @throws Exception если произошла ошибка чтения */ public void caveLoadFromFile(String fileName) throws Exception { cave.loadFromFile(fileName); } /** * Сохраняет пещеру в файл. * * @param fileName путь к файлу * @throws Exception если произошла ошибка записи */ public void caveSaveToFile(String fileName) throws Exception { cave.saveToFile(fileName); } /** * Генерирует пещеру с заданными параметрами. * * @param row количество строк * @param col количество столбцов * @param chance вероятность заполнения клетки */ public void caveGenerate(int row, int col, int chance) { cave.generate(row, col, chance); } /** * Выполняет один шаг симуляции пещеры. * * @param birth порог рождения клетки * @param death порог смерти клетки * @return {@code true}, если состояние изменилось */ public boolean caveOneStep(int birth, int death) { return cave.oneStep(birth, death); } /** * Возвращает количество строк пещеры. * * @return количество строк пещеры */ public int getRowCave() { return cave.getRows(); } /** * Возвращает количество столбцов пещеры. * * @return количество столбцов пещеры */ public int getColCave() { return cave.getCols(); } /** * Возвращает текущее состояние пещеры. * * @return текущее состояние пещеры */ public boolean[][] getCave() { return cave.getCave(); } }