diff --git a/README.md b/README.md index f1f3e0b..54f03f8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1 @@ -# labyrinth-generator - +# maze-generator diff --git a/maze-generator.iml b/maze-generator.iml new file mode 100644 index 0000000..7f3a216 --- /dev/null +++ b/maze-generator.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 5081cfa..0e0d137 100644 --- a/pom.xml +++ b/pom.xml @@ -1,31 +1,29 @@ - + 4.0.0 ch.fritteli fritteli-build-parent - 2.0.4 + 5.0.0 - ch.fritteli.labyrinth - labyrinth-generator + ch.fritteli.a-maze-r + maze-generator 0.0.9-SNAPSHOT - The Labyrinth generator, a library for generating Labyrinths in various output formats. - https://manuel.friedli.info/labyrinth.html - - 2.14.2 - 17 - 17 - 24.0.1 - 5.9.2 - 1.4.6 - 1.18.26 - 2.0.27 - 2.0.7 - 0.10.4 - + A-Maze-R, The Maze Generator. It is a library for generating mazes in various output formats. + + https://manuel.friedli.info/maze.html + 2022 + + + + GNU Affero General Public License + https://www.gnu.org/licenses/agpl-3.0.html + + @@ -42,6 +40,29 @@ + + scm:git:https://gittr.ch/java/maze-generator.git + scm:git:ssh://git@gittr.ch/java/maze-generator.git + https://gittr.ch/java/maze-generator + HEAD + + + + + + ossrh + Sonatype Maven Repository - Snapshots + https://s01.oss.sonatype.org/content/repositories/snapshots + + + + + 2.15.0 + 1.2.1 + 4.0.0-M8 + 2.0.28 + + org.projectlombok @@ -91,12 +112,13 @@ test + org.jsonschema2pojo jsonschema2pojo-maven-plugin - 1.2.1 + ${jsonschema2pojo-maven-plugin.version} generate-sources @@ -105,34 +127,12 @@ - src/main/resources/labyrinth.schema.json + src/main/resources/maze.schema.json - - maven-assembly-plugin - - - - ch.fritteli.labyrinth.generator.Main - - - - jar-with-dependencies - - - - - make-assembly - package - - single - - - - org.apache.maven.plugins maven-source-plugin @@ -149,52 +149,55 @@ org.apache.maven.plugins maven-site-plugin - 4.0.0-M6 + ${maven-site-plugin.version} - - scm:git:https://gittr.ch/java/labyrinth-generator.git - scm:git:ssh://git@gittr.ch/java/labyrinth-generator.git - https://gittr.ch/java/labyrinth-generator - HEAD - - - - repo.gittr.ch - gittr.ch - https://repo.gittr.ch/releases/ - - - repo.gittr.ch - gittr.ch - https://repo.gittr.ch/snapshots/ - - - - - repo.gittr.ch.releases - https://repo.gittr.ch/releases/ - - true - never - - - false - never - - - - repo.gittr.ch.snapshots - https://repo.gittr.ch/snapshots/ - - false - never - - - true - always - - - + + + + release + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + + + + + + diff --git a/src/main/java/ch/fritteli/labyrinth/generator/renderer/Renderer.java b/src/main/java/ch/fritteli/labyrinth/generator/renderer/Renderer.java deleted file mode 100644 index 2c3ea3b..0000000 --- a/src/main/java/ch/fritteli/labyrinth/generator/renderer/Renderer.java +++ /dev/null @@ -1,9 +0,0 @@ -package ch.fritteli.labyrinth.generator.renderer; - -import ch.fritteli.labyrinth.generator.model.Labyrinth; -import lombok.NonNull; - -public interface Renderer { - @NonNull - T render(@NonNull final Labyrinth labyrinth); -} diff --git a/src/main/java/ch/fritteli/labyrinth/generator/Main.java b/src/main/java/ch/fritteli/maze/generator/Main.java similarity index 51% rename from src/main/java/ch/fritteli/labyrinth/generator/Main.java rename to src/main/java/ch/fritteli/maze/generator/Main.java index 79fc3fc..038f57b 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/Main.java +++ b/src/main/java/ch/fritteli/maze/generator/Main.java @@ -1,13 +1,14 @@ -package ch.fritteli.labyrinth.generator; +package ch.fritteli.maze.generator; -import ch.fritteli.labyrinth.generator.model.Labyrinth; -import ch.fritteli.labyrinth.generator.renderer.html.HTMLRenderer; -import ch.fritteli.labyrinth.generator.renderer.htmlfile.HTMLFileRenderer; -import ch.fritteli.labyrinth.generator.renderer.json.JsonRenderer; -import ch.fritteli.labyrinth.generator.renderer.jsonfile.JsonFileRenderer; -import ch.fritteli.labyrinth.generator.renderer.pdffile.PDFFileRenderer; -import ch.fritteli.labyrinth.generator.renderer.text.TextRenderer; -import ch.fritteli.labyrinth.generator.renderer.textfile.TextFileRenderer; +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; @@ -21,15 +22,15 @@ public class Main { public static void main(@NonNull final String[] args) { final int width = 20; final int height = 30; - final Labyrinth labyrinth = new Labyrinth(width, height/*, 0*/); - new Generator(labyrinth).run(); + 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(labyrinth); + final String baseFilename = getBaseFilename(maze); final TextFileRenderer textFileRenderer = TextFileRenderer.newInstance() - .setTargetLabyrinthFile(userHome.resolve(baseFilename + ".txt")) + .setTargetMazeFile(userHome.resolve(baseFilename + ".txt")) .setTargetSolutionFile(userHome.resolve(baseFilename + "-solution.txt")); final HTMLFileRenderer htmlFileRenderer = HTMLFileRenderer.newInstance() .setTargetFile(userHome.resolve(baseFilename + ".html")); @@ -38,26 +39,26 @@ public class Main { final PDFFileRenderer pdfFileRenderer = PDFFileRenderer.newInstance() .setTargetFile(userHome.resolve(baseFilename + ".pdf")); - log.info("Labyrinth-ID: {}", labyrinth.getRandomSeed()); - // Render Labyrinth to stdout - log.info("Text rendering:\n{}", textRenderer.render(labyrinth)); - // Render Labyrinth solution to stdout - log.info("Text rendering with solution:\n{}", textRenderer.setRenderSolution(true).render(labyrinth)); + 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(labyrinth)); + log.info("HTML rendering:\n{}", htmlRenderer.render(maze)); // Render JSON to stdout - log.info("JSON rendering:\n{}", jsonRenderer.render(labyrinth)); - // Render Labyrinth and solution to (separate) files - log.info("Text rendering to file:\n{}", textFileRenderer.render(labyrinth)); + 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(labyrinth)); + log.info("HTML rendering to file:\n{}", htmlFileRenderer.render(maze)); // Render JSON to file - log.info("JSON rendering to file:\n{}", jsonFileRenderer.render(labyrinth)); + log.info("JSON rendering to file:\n{}", jsonFileRenderer.render(maze)); // Render PDF to file - log.info("PDF rendering to file:\n{}", pdfFileRenderer.render(labyrinth)); + log.info("PDF rendering to file:\n{}", pdfFileRenderer.render(maze)); } - private static String getBaseFilename(@NonNull final Labyrinth labyrinth) { - return "labyrinth-" + labyrinth.getWidth() + "x" + labyrinth.getHeight() + "-" + labyrinth.getRandomSeed(); + private static String getBaseFilename(@NonNull final Maze maze) { + return "maze-" + maze.getWidth() + "x" + maze.getHeight() + "-" + maze.getRandomSeed(); } } diff --git a/src/main/java/ch/fritteli/labyrinth/generator/Generator.java b/src/main/java/ch/fritteli/maze/generator/algorithm/RandomDepthFirst.java similarity index 65% rename from src/main/java/ch/fritteli/labyrinth/generator/Generator.java rename to src/main/java/ch/fritteli/maze/generator/algorithm/RandomDepthFirst.java index 45b3f9c..385c090 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/Generator.java +++ b/src/main/java/ch/fritteli/maze/generator/algorithm/RandomDepthFirst.java @@ -1,27 +1,27 @@ -package ch.fritteli.labyrinth.generator; +package ch.fritteli.maze.generator.algorithm; -import ch.fritteli.labyrinth.generator.model.Direction; -import ch.fritteli.labyrinth.generator.model.Labyrinth; -import ch.fritteli.labyrinth.generator.model.Position; -import ch.fritteli.labyrinth.generator.model.Tile; +import ch.fritteli.maze.generator.model.Direction; +import ch.fritteli.maze.generator.model.Maze; +import ch.fritteli.maze.generator.model.Position; +import ch.fritteli.maze.generator.model.Tile; import io.vavr.control.Option; import java.util.Deque; import java.util.LinkedList; import java.util.Random; import lombok.NonNull; -public class Generator { +public class RandomDepthFirst { @NonNull - private final Labyrinth labyrinth; + private final Maze maze; @NonNull private final Random random; @NonNull private final Deque positions = new LinkedList<>(); - public Generator(@NonNull final Labyrinth labyrinth) { - this.labyrinth = labyrinth; - this.random = new Random(labyrinth.getRandomSeed()); + public RandomDepthFirst(@NonNull final Maze maze) { + this.maze = maze; + this.random = new Random(maze.getRandomSeed()); } public void run() { @@ -31,8 +31,8 @@ public class Generator { } private void preDig() { - final Position end = this.labyrinth.getEnd(); - final Tile endTile = this.labyrinth.getEndTile(); + final Position end = this.maze.getEnd(); + final Tile endTile = this.maze.getEndTile(); if (end.getY() == 0) { endTile.enableDiggingToOrFrom(Direction.TOP); @@ -40,10 +40,10 @@ public class Generator { } else if (end.getX() == 0) { endTile.enableDiggingToOrFrom(Direction.LEFT); endTile.digFrom(Direction.LEFT); - } else if (end.getY() == this.labyrinth.getHeight() - 1) { + } else if (end.getY() == this.maze.getHeight() - 1) { endTile.enableDiggingToOrFrom(Direction.BOTTOM); endTile.digFrom(Direction.BOTTOM); - } else if (end.getX() == this.labyrinth.getWidth() - 1) { + } else if (end.getX() == this.maze.getWidth() - 1) { endTile.enableDiggingToOrFrom(Direction.RIGHT); endTile.digFrom(Direction.RIGHT); } @@ -54,17 +54,17 @@ public class Generator { private void dig() { while (!this.positions.isEmpty()) { final Position currentPosition = this.positions.peek(); - final Tile currentTile = this.labyrinth.getTileAt(currentPosition).get(); + final Tile currentTile = this.maze.getTileAt(currentPosition).get(); final Option directionToDigTo = currentTile.getRandomAvailableDirection(this.random); if (directionToDigTo.isDefined()) { final Direction digTo = directionToDigTo.get(); final Direction digFrom = digTo.invert(); final Position neighborPosition = currentPosition.move(digTo); - final Tile neighborTile = this.labyrinth.getTileAt(neighborPosition).get(); + final Tile neighborTile = this.maze.getTileAt(neighborPosition).get(); if (currentTile.digTo(digTo) && neighborTile.digFrom(digFrom)) { // all ok! this.positions.push(neighborPosition); - if (neighborPosition.equals(this.labyrinth.getStart())) { + if (neighborPosition.equals(this.maze.getStart())) { this.markSolution(); } } else { @@ -79,12 +79,12 @@ public class Generator { } private void markSolution() { - this.positions.forEach(position -> this.labyrinth.getTileAt(position).get().setSolution()); + this.positions.forEach(position -> this.maze.getTileAt(position).get().setSolution()); } private void postDig() { - final Position start = this.labyrinth.getStart(); - final Tile startTile = this.labyrinth.getStartTile(); + final Position start = this.maze.getStart(); + final Tile startTile = this.maze.getStartTile(); if (start.getY() == 0) { startTile.enableDiggingToOrFrom(Direction.TOP); @@ -92,10 +92,10 @@ public class Generator { } else if (start.getX() == 0) { startTile.enableDiggingToOrFrom(Direction.LEFT); startTile.digTo(Direction.LEFT); - } else if (start.getY() == this.labyrinth.getHeight() - 1) { + } else if (start.getY() == this.maze.getHeight() - 1) { startTile.enableDiggingToOrFrom(Direction.BOTTOM); startTile.digTo(Direction.BOTTOM); - } else if (start.getX() == this.labyrinth.getWidth() - 1) { + } else if (start.getX() == this.maze.getWidth() - 1) { startTile.enableDiggingToOrFrom(Direction.RIGHT); startTile.digTo(Direction.RIGHT); } diff --git a/src/main/java/ch/fritteli/labyrinth/generator/model/Direction.java b/src/main/java/ch/fritteli/maze/generator/model/Direction.java similarity index 91% rename from src/main/java/ch/fritteli/labyrinth/generator/model/Direction.java rename to src/main/java/ch/fritteli/maze/generator/model/Direction.java index 9239bcd..776111e 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/model/Direction.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Direction.java @@ -1,4 +1,4 @@ -package ch.fritteli.labyrinth.generator.model; +package ch.fritteli.maze.generator.model; public enum Direction { TOP, diff --git a/src/main/java/ch/fritteli/labyrinth/generator/model/Labyrinth.java b/src/main/java/ch/fritteli/maze/generator/model/Maze.java similarity index 81% rename from src/main/java/ch/fritteli/labyrinth/generator/model/Labyrinth.java rename to src/main/java/ch/fritteli/maze/generator/model/Maze.java index de92154..da4b885 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/model/Labyrinth.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Maze.java @@ -1,4 +1,4 @@ -package ch.fritteli.labyrinth.generator.model; +package ch.fritteli.maze.generator.model; import io.vavr.control.Option; import lombok.EqualsAndHashCode; @@ -8,7 +8,7 @@ import lombok.ToString; @EqualsAndHashCode @ToString -public class Labyrinth { +public class Maze { private final Tile[][] field; @Getter @@ -22,19 +22,19 @@ public class Labyrinth { @Getter private final Position end; - public Labyrinth(final int width, final int height) { + public Maze(final int width, final int height) { this(width, height, System.nanoTime()); } - public Labyrinth(final int width, final int height, @NonNull final Position start, @NonNull final Position end) { + public Maze(final int width, final int height, @NonNull final Position start, @NonNull final Position end) { this(width, height, System.nanoTime(), start, end); } - public Labyrinth(final int width, final int height, final long randomSeed) { + public Maze(final int width, final int height, final long randomSeed) { this(width, height, randomSeed, new Position(0, 0), new Position(width - 1, height - 1)); } - public Labyrinth(final int width, final int height, final long randomSeed, @NonNull final Position start, @NonNull final Position end) { + public Maze(final int width, final int height, final long randomSeed, @NonNull final Position start, @NonNull final Position end) { if (width <= 1 || height <= 1) { throw new IllegalArgumentException("width and height must be >1"); } @@ -42,10 +42,10 @@ public class Labyrinth { throw new IllegalArgumentException("'start' must not be equal to 'end'"); } if (start.getX() != 0 && start.getX() != width - 1 && start.getY() != 0 && start.getY() != height - 1) { - throw new IllegalArgumentException("'start' must be at the edge of the labyrinth"); + throw new IllegalArgumentException("'start' must be at the edge of the maze"); } if (end.getX() != 0 && end.getX() != width - 1 && end.getY() != 0 && end.getY() != height - 1) { - throw new IllegalArgumentException("'end' must be at the edge of the labyrinth"); + throw new IllegalArgumentException("'end' must be at the edge of the maze"); } this.width = width; this.height = height; @@ -59,7 +59,7 @@ public class Labyrinth { /** * INTERNAL API. Exists only for deserialization. Not to be called from user code. */ - private Labyrinth(@NonNull final Tile[][] field, final int width, final int height, final long randomSeed) { + private Maze(@NonNull final Tile[][] field, final int width, final int height, final long randomSeed) { this.field = field; this.width = width; this.height = height; @@ -71,7 +71,7 @@ public class Labyrinth { /** * INTERNAL API. Exists only for deserialization. Not to be called from user code. */ - private Labyrinth(@NonNull final Tile[][] field, final int width, final int height, @NonNull final Position start, @NonNull final Position end, final long randomSeed) { + private Maze(@NonNull final Tile[][] field, final int width, final int height, @NonNull final Position start, @NonNull final Position end, final long randomSeed) { this.field = field; this.width = width; this.height = height; diff --git a/src/main/java/ch/fritteli/labyrinth/generator/model/Position.java b/src/main/java/ch/fritteli/maze/generator/model/Position.java similarity index 93% rename from src/main/java/ch/fritteli/labyrinth/generator/model/Position.java rename to src/main/java/ch/fritteli/maze/generator/model/Position.java index a9751e6..3adb560 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/model/Position.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Position.java @@ -1,4 +1,4 @@ -package ch.fritteli.labyrinth.generator.model; +package ch.fritteli.maze.generator.model; import lombok.NonNull; import lombok.Value; diff --git a/src/main/java/ch/fritteli/labyrinth/generator/model/Tile.java b/src/main/java/ch/fritteli/maze/generator/model/Tile.java similarity index 97% rename from src/main/java/ch/fritteli/labyrinth/generator/model/Tile.java rename to src/main/java/ch/fritteli/maze/generator/model/Tile.java index b3e9735..b79e44c 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/model/Tile.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Tile.java @@ -1,4 +1,4 @@ -package ch.fritteli.labyrinth.generator.model; +package ch.fritteli.maze.generator.model; import io.vavr.collection.Stream; import io.vavr.control.Option; diff --git a/src/main/java/ch/fritteli/labyrinth/generator/model/Walls.java b/src/main/java/ch/fritteli/maze/generator/model/Walls.java similarity index 96% rename from src/main/java/ch/fritteli/labyrinth/generator/model/Walls.java rename to src/main/java/ch/fritteli/maze/generator/model/Walls.java index c7ce5e7..3cf5ca7 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/model/Walls.java +++ b/src/main/java/ch/fritteli/maze/generator/model/Walls.java @@ -1,4 +1,4 @@ -package ch.fritteli.labyrinth.generator.model; +package ch.fritteli.maze.generator.model; import io.vavr.collection.Stream; import lombok.EqualsAndHashCode; diff --git a/src/main/java/ch/fritteli/maze/generator/renderer/Renderer.java b/src/main/java/ch/fritteli/maze/generator/renderer/Renderer.java new file mode 100644 index 0000000..1818134 --- /dev/null +++ b/src/main/java/ch/fritteli/maze/generator/renderer/Renderer.java @@ -0,0 +1,9 @@ +package ch.fritteli.maze.generator.renderer; + +import ch.fritteli.maze.generator.model.Maze; +import lombok.NonNull; + +public interface Renderer { + @NonNull + T render(@NonNull final Maze maze); +} diff --git a/src/main/java/ch/fritteli/labyrinth/generator/renderer/html/Generator.java b/src/main/java/ch/fritteli/maze/generator/renderer/html/Generator.java similarity index 72% rename from src/main/java/ch/fritteli/labyrinth/generator/renderer/html/Generator.java rename to src/main/java/ch/fritteli/maze/generator/renderer/html/Generator.java index 1fda57d..6a56a8b 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/renderer/html/Generator.java +++ b/src/main/java/ch/fritteli/maze/generator/renderer/html/Generator.java @@ -1,8 +1,8 @@ -package ch.fritteli.labyrinth.generator.renderer.html; +package ch.fritteli.maze.generator.renderer.html; -import ch.fritteli.labyrinth.generator.model.Direction; -import ch.fritteli.labyrinth.generator.model.Labyrinth; -import ch.fritteli.labyrinth.generator.model.Tile; +import ch.fritteli.maze.generator.model.Direction; +import ch.fritteli.maze.generator.model.Maze; +import ch.fritteli.maze.generator.model.Tile; import io.vavr.collection.HashSet; import io.vavr.collection.Set; import lombok.AccessLevel; @@ -11,17 +11,17 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor(access = AccessLevel.PACKAGE) class Generator { - private final Labyrinth labyrinth; + private final Maze maze; private int y = 0; boolean hasNext() { - return this.y < this.labyrinth.getHeight(); + return this.y < this.maze.getHeight(); } String next() { StringBuilder sb = new StringBuilder(""); - for (int x = 0; x < this.labyrinth.getWidth(); x++) { - final Tile currentTile = this.labyrinth.getTileAt(x, this.y).get(); + for (int x = 0; x < this.maze.getWidth(); x++) { + final Tile currentTile = this.maze.getTileAt(x, this.y).get(); sb.append(" "); diff --git a/src/main/java/ch/fritteli/labyrinth/generator/renderer/html/HTMLRenderer.java b/src/main/java/ch/fritteli/maze/generator/renderer/html/HTMLRenderer.java similarity index 91% rename from src/main/java/ch/fritteli/labyrinth/generator/renderer/html/HTMLRenderer.java rename to src/main/java/ch/fritteli/maze/generator/renderer/html/HTMLRenderer.java index c5b3aa6..21afea4 100644 --- a/src/main/java/ch/fritteli/labyrinth/generator/renderer/html/HTMLRenderer.java +++ b/src/main/java/ch/fritteli/maze/generator/renderer/html/HTMLRenderer.java @@ -1,7 +1,7 @@ -package ch.fritteli.labyrinth.generator.renderer.html; +package ch.fritteli.maze.generator.renderer.html; -import ch.fritteli.labyrinth.generator.model.Labyrinth; -import ch.fritteli.labyrinth.generator.renderer.Renderer; +import ch.fritteli.maze.generator.model.Maze; +import ch.fritteli.maze.generator.renderer.Renderer; import lombok.NonNull; public class HTMLRenderer implements Renderer { @@ -119,12 +119,12 @@ public class HTMLRenderer implements Renderer { @NonNull @Override - public String render(@NonNull final Labyrinth labyrinth) { - if (labyrinth.getWidth() == 0 || labyrinth.getHeight() == 0) { - return this.getPreamble(labyrinth) + POSTAMBLE; + public String render(@NonNull final Maze maze) { + if (maze.getWidth() == 0 || maze.getHeight() == 0) { + return this.getPreamble(maze) + POSTAMBLE; } - final Generator generator = new Generator(labyrinth); - final StringBuilder sb = new StringBuilder(this.getPreamble(labyrinth)); + final Generator generator = new Generator(maze); + final StringBuilder sb = new StringBuilder(this.getPreamble(maze)); sb.append(""); while (generator.hasNext()) { sb.append(generator.next()); @@ -134,10 +134,10 @@ public class HTMLRenderer implements Renderer { return sb.toString(); } - private String getPreamble(@NonNull final Labyrinth labyrinth) { + private String getPreamble(@NonNull final Maze maze) { return "" + "" + - "Labyrinth " + labyrinth.getWidth() + "x" + labyrinth.getHeight() + ", ID " + labyrinth.getRandomSeed() + "" + + "Maze " + maze.getWidth() + "x" + maze.getHeight() + ", ID " + maze.getRandomSeed() + "" + "" + "