Zuerst benötigen Sie eine Datenstruktur, die Ihr Labyrinth darstellt. Dann kannst du dir Sorgen machen, es zu zeichnen.
würde ich eine Klasse wie folgt vorschlagen:
class Maze {
public enum Tile { Start, End, Empty, Blocked };
private final Tile[] cells;
private final int width;
private final int height;
public Maze(int width, int height) {
this.width = width;
this.height = height;
this.cells = new Tile[width * height];
Arrays.fill(this.cells, Tile.Empty);
}
public int height() {
return height;
}
public int width() {
return width;
}
public Tile get(int x, int y) {
return cells[index(x, y)];
}
public void set(int x, int y, Tile tile) {
Cells[index(x, y)] = tile;
}
private int index(int x, int y) {
return y * width + x;
}
}
Dann würde ich dieses Labyrinth mit Blöcken (Quadrate) ziehen, anstatt Linien. Ein dunkler Block für blockierte Kacheln und ein freier Block für leere Kacheln.
Um zu malen, tun Sie so etwas.
public void paintTheMaze(graphics g) {
final int tileWidth = 32;
final int tileHeight = 32;
g.setColor(Color.BLACK);
for (int x = 0; x < maze.width(); ++x) {
for (int y = 0; y < maze.height(); ++y) {
if (maze.get(x, y).equals(Tile.Blocked)) (
g.fillRect(x*tileWidth, y*tileHeight, tileWidth, tileHeight);
}
}
)
}
Sie möchten zufällige Labyrinthe oder ein festgelegtes Labyrinth erstellen? Haben Sie schon eine Form der Kollisionserkennung? – ggfela
Nur ein festgelegtes Labyrinth. – Michelle