65 lines
3.2 KiB
Java
65 lines
3.2 KiB
Java
package ch.fritteli.maze.generator;
|
|
|
|
import ch.fritteli.maze.generator.algorithm.RandomDepthFirst;
|
|
import ch.fritteli.maze.generator.model.Maze;
|
|
import ch.fritteli.maze.generator.renderer.html.HTMLRenderer;
|
|
import ch.fritteli.maze.generator.renderer.htmlfile.HTMLFileRenderer;
|
|
import ch.fritteli.maze.generator.renderer.json.JsonRenderer;
|
|
import ch.fritteli.maze.generator.renderer.jsonfile.JsonFileRenderer;
|
|
import ch.fritteli.maze.generator.renderer.pdffile.PDFFileRenderer;
|
|
import ch.fritteli.maze.generator.renderer.text.TextRenderer;
|
|
import ch.fritteli.maze.generator.renderer.textfile.TextFileRenderer;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Paths;
|
|
import lombok.NonNull;
|
|
import lombok.experimental.UtilityClass;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@Slf4j
|
|
@UtilityClass
|
|
public class Main {
|
|
|
|
public static void main(@NonNull final String[] args) {
|
|
final int width = 20;
|
|
final int height = 30;
|
|
final Maze maze = new Maze(width, height/*, 0*/);
|
|
new RandomDepthFirst(maze).run();
|
|
final TextRenderer textRenderer = TextRenderer.newInstance();
|
|
final HTMLRenderer htmlRenderer = HTMLRenderer.newInstance();
|
|
final JsonRenderer jsonRenderer = JsonRenderer.newInstance();
|
|
final Path userHome = Paths.get(System.getProperty("user.home"));
|
|
final String baseFilename = getBaseFilename(maze);
|
|
final TextFileRenderer textFileRenderer = TextFileRenderer.newInstance()
|
|
.setTargetMazeFile(userHome.resolve(baseFilename + ".txt"))
|
|
.setTargetSolutionFile(userHome.resolve(baseFilename + "-solution.txt"));
|
|
final HTMLFileRenderer htmlFileRenderer = HTMLFileRenderer.newInstance()
|
|
.setTargetFile(userHome.resolve(baseFilename + ".html"));
|
|
final JsonFileRenderer jsonFileRenderer = JsonFileRenderer.newInstance()
|
|
.setTargetFile(userHome.resolve(baseFilename + ".json"));
|
|
final PDFFileRenderer pdfFileRenderer = PDFFileRenderer.newInstance()
|
|
.setTargetFile(userHome.resolve(baseFilename + ".pdf"));
|
|
|
|
log.info("Maze-ID: {}", maze.getRandomSeed());
|
|
// Render Maze to stdout
|
|
log.info("Text rendering:\n{}", textRenderer.render(maze));
|
|
// Render Maze solution to stdout
|
|
log.info("Text rendering with solution:\n{}", textRenderer.setRenderSolution(true).render(maze));
|
|
// Render HTML to stdout
|
|
log.info("HTML rendering:\n{}", htmlRenderer.render(maze));
|
|
// Render JSON to stdout
|
|
log.info("JSON rendering:\n{}", jsonRenderer.render(maze));
|
|
// Render Maze and solution to (separate) files
|
|
log.info("Text rendering to file:\n{}", textFileRenderer.render(maze));
|
|
// Render HTML to file
|
|
log.info("HTML rendering to file:\n{}", htmlFileRenderer.render(maze));
|
|
// Render JSON to file
|
|
log.info("JSON rendering to file:\n{}", jsonFileRenderer.render(maze));
|
|
// Render PDF to file
|
|
log.info("PDF rendering to file:\n{}", pdfFileRenderer.render(maze));
|
|
}
|
|
|
|
private static String getBaseFilename(@NonNull final Maze maze) {
|
|
return "maze-" + maze.getWidth() + "x" + maze.getHeight() + "-" + maze.getRandomSeed();
|
|
}
|
|
}
|