From 4c144772c212da923b2f045895b5278d16dc2d6b Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Mon, 6 Apr 2020 18:09:09 +0200 Subject: [PATCH] Der Generator generiert --- .../model/DungeonGenerator.java | 66 ++++++++++++++++--- core/src/com/dungeoncrawler/model/Level.java | 6 +- 2 files changed, 59 insertions(+), 13 deletions(-) diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index 895c9a3..1ca8856 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -35,14 +35,52 @@ public class DungeonGenerator { int roomAmount = (int) (Math.random() * 6) + 5; Level tempLevel = new Level(roomAmount); - for(int i = 0; i < roomAmount; i++){ - Room tempRoom = generateRoom(); - //tempLevel.setRoom(tempRoom, i); - } - // TODO: Zufällig Türen setzen - for(int i = 0; i < roomAmount; i++){ + int xPos = roomAmount / 2; + int yPos = roomAmount / 2; + tempLevel.setRoom(generateRoom(), xPos, yPos); + + for(int i = 0; i < roomAmount;){ + // Zufallszahl für die Richtung wird generiert, Oben: 0, Rechts: 1, Unten: 2, Links: 3 + int direction = (int) (Math.random() * 4); + switch (direction) { + // Oben + case 0: + if(yPos != 0){ + yPos -= 1; + } + break; + // Rechts + case 1: + if(xPos != roomAmount){ + xPos += 1; + } + break; + // Unten + case 2: + if(yPos != roomAmount){ + yPos += 1; + } + break; + // Links + case 3: + if(xPos != 0){ + xPos -= 1; + } + break; + default: + System.out.println("Die Random Methode ist kacke!!!!!!!!!!!!!!!!!!"); + break; + } + + // An der neuen Stelle vom Cursor gibt es noch keinen Raum + if(tempLevel.getRooms()[xPos][yPos] == null){ + tempLevel.setRoom(generateRoom(), xPos, yPos); + + // i darf nur erhöht werden, wenn auche in Raum generiert wurde + i++; + } } return tempLevel; @@ -50,7 +88,7 @@ public class DungeonGenerator { private Room generateRoom(){ - return null; + return new Room(null, null); } private int[] generatePos(int sizeX, int sizeY, int tileSize){ @@ -70,10 +108,18 @@ public class DungeonGenerator { Level temp = d.getLevel()[i]; System.out.println("Level " + i); - for(int j=0;j