From f285b36c57c5f7c609b1658938ff8e52a102d175 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Sun, 17 May 2020 11:28:31 +0200 Subject: [PATCH] gegner generieren gefixt --- .../model/DungeonGenerator.java | 316 +++++++++--------- 1 file changed, 159 insertions(+), 157 deletions(-) diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index 862e8a0..d00f159 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -45,7 +45,7 @@ public class DungeonGenerator { int xPos = roomAmount / 2; int yPos = roomAmount / 2; - tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl), xPos, yPos); + tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl, false), xPos, yPos); // Schleife läuft so lange, bis die entsprechende Anzahl an Räumen generiert wurde for(int i = 1; i < roomAmount;){ @@ -82,7 +82,7 @@ public class DungeonGenerator { // An der neuen Stelle vom Cursor gibt es noch keinen Raum if(tempLevel.getRooms()[xPos][yPos] == null){ - tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl), xPos, yPos); + tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl, true), xPos, yPos); // i darf nur erhöht werden, wenn auch ein Raum generiert wurde i++; @@ -148,7 +148,7 @@ public class DungeonGenerator { // An der neuen Stelle vom Cursor gibt es noch keinen Raum if(tempLevel.getRooms()[xPos][yPos] == null){ - tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl), xPos, yPos); + tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl, false), xPos, yPos); tempLevel.setExit(xPos, 0); tempLevel.setExit(yPos, 1); @@ -161,182 +161,184 @@ public class DungeonGenerator { return tempLevel; } - private Room generateRoom(int sizeX, int sizeY, int tileSize, int lvl){ + private Room generateRoom(int sizeX, int sizeY, int tileSize, int lvl, boolean allowEnemies){ int itemAmount = (int) (Math.random() * 2); int enemyAmount = (int) (Math.random() * 5); Room tempRoom = new Room(new ArrayList(itemAmount), new Entity[15]); - // Items werden generiert - int[][] belegt = new int[itemAmount][2]; - for(int j = 0; j < belegt.length; j++){ - belegt[j][0] = -1; - belegt[j][1] = -1; - } - - for(int i = 0; i < itemAmount; i++){ - - int xTile; - int yTile; - - boolean istFertig = false; - do { - System.out.println("läuft"); - - // Tiles des Entities werden generiert + if(allowEnemies){ + // Items werden generiert + int[][] belegt = new int[itemAmount][2]; + for(int j = 0; j < belegt.length; j++){ + belegt[j][0] = -1; + belegt[j][1] = -1; + } - xTile = generateTile(sizeX); - yTile = generateTile(sizeY); + for(int i = 0; i < itemAmount; i++){ - - // Test, ob Tiles bereits belegt - boolean hatGeklappt = true; - for(int j = 0; j < belegt.length; j++){ - if(j != i){ - if(xTile == belegt[j][0] && yTile == belegt[j][1]){ - hatGeklappt = false; - break; + int xTile; + int yTile; + + boolean istFertig = false; + do { + System.out.println("läuft"); + + // Tiles des Entities werden generiert + + xTile = generateTile(sizeX); + yTile = generateTile(sizeY); + + + // Test, ob Tiles bereits belegt + boolean hatGeklappt = true; + for(int j = 0; j < belegt.length; j++){ + if(j != i){ + if(xTile == belegt[j][0] && yTile == belegt[j][1]){ + hatGeklappt = false; + break; + } } } - } - - if(hatGeklappt == true){ - // Tiles zum Array hinzufügen - for(int j = 0; j < belegt.length; j++){ - if(belegt[j][0] == -1){ - belegt[j][0] = xTile; - belegt[j][1] = yTile; + + if(hatGeklappt == true){ + // Tiles zum Array hinzufügen + for(int j = 0; j < belegt.length; j++){ + if(belegt[j][0] == -1){ + belegt[j][0] = xTile; + belegt[j][1] = yTile; + } } + + istFertig = true; } - - istFertig = true; + + } while(!istFertig); + + + // Berechnung der Positionen + + int xPos = xTile * tileSize; + int yPos = yTile * tileSize; + + // Typ des Entities wird generiert + + Item tempItem; + + int id = (int) (Math.random() * 2); + switch(id){ + case 0: + tempItem = new Amulet(lvl); + break; + + case 1: + tempItem = new Potion(lvl); + break; + + default: + tempItem = null; } - - } while(!istFertig); - - - // Berechnung der Positionen - - int xPos = xTile * tileSize; - int yPos = yTile * tileSize; - - // Typ des Entities wird generiert - - Item tempItem; - - int id = (int) (Math.random() * 2); - switch(id){ - case 0: - tempItem = new Amulet(lvl); - break; - - case 1: - tempItem = new Potion(lvl); - break; - - default: - tempItem = null; - } - - if(tempItem == null){ - System.out.println("Es gibt Probleme, schau mal beim Raumgenerator nach. Es sind sogar sehr problematische Probleme mit den Items"); + + if(tempItem == null){ + System.out.println("Es gibt Probleme, schau mal beim Raumgenerator nach. Es sind sogar sehr problematische Probleme mit den Items"); + } + + if(tempItem != null){ + ItemContainer tempContainer; + tempContainer = new ItemContainer(xPos, yPos, tempItem); + tempRoom.getItems().add(tempContainer); + } + + } - - if(tempItem != null){ - ItemContainer tempContainer; - tempContainer = new ItemContainer(xPos, yPos, tempItem); - tempRoom.getItems().add(tempContainer); + + // Entities werden generiert + belegt = new int[enemyAmount][2]; + for(int j = 0; j < belegt.length; j++){ + belegt[j][0] = -1; + belegt[j][1] = -1; } - - - } - - // Entities werden generiert - belegt = new int[enemyAmount][2]; - for(int j = 0; j < belegt.length; j++){ - belegt[j][0] = -1; - belegt[j][1] = -1; - } - - for(int i = 0; i < enemyAmount; i++){ - - int xTile; - int yTile; - - boolean istFertig = false; - do { - System.out.println("läuft"); - - // Tiles des Entities werden generiert - xTile = generateTile(sizeX); - yTile = generateTile(sizeY); + for(int i = 0; i < enemyAmount; i++){ - - // Test, ob Tiles bereits belegt - boolean hatGeklappt = true; - for(int j = 0; j < belegt.length; j++){ - if(j != i){ - if(xTile == belegt[j][0] && yTile == belegt[j][1]){ - hatGeklappt = false; - break; + int xTile; + int yTile; + + boolean istFertig = false; + do { + System.out.println("läuft"); + + // Tiles des Entities werden generiert + + xTile = generateTile(sizeX); + yTile = generateTile(sizeY); + + + // Test, ob Tiles bereits belegt + boolean hatGeklappt = true; + for(int j = 0; j < belegt.length; j++){ + if(j != i){ + if(xTile == belegt[j][0] && yTile == belegt[j][1]){ + hatGeklappt = false; + break; + } } } - } - - if(hatGeklappt == true){ - // Tiles zum Array hinzufügen - for(int j = 0; j < belegt.length; j++){ - if(belegt[j][0] == -1){ - belegt[j][0] = xTile; - belegt[j][1] = yTile; + + if(hatGeklappt == true){ + // Tiles zum Array hinzufügen + for(int j = 0; j < belegt.length; j++){ + if(belegt[j][0] == -1){ + belegt[j][0] = xTile; + belegt[j][1] = yTile; + } } + + istFertig = true; } - - istFertig = true; + + } while(!istFertig); + + + // Berechnung der Positionen + + int xPos = xTile * tileSize; + int yPos = yTile * tileSize; + + // Typ des Entities wird generiert + + Entity temp; + + int id = (int) (Math.random() * 6); + switch(id){ + case 0: + temp = new Archer(xPos, yPos, lvl); + break; + case 1: + temp = new Swordsman(xPos, yPos, lvl); + break; + case 2: + temp = new Wizard(xPos, yPos, lvl); + break; + case 3: + temp = new Firewizard(xPos, yPos, lvl); + break; + case 4: + temp = new Earthwizard(xPos, yPos, lvl); + break; + case 5: + temp = new Fireswordsman(xPos, yPos, lvl); + break; + default: + temp = null; } - - } while(!istFertig); - - - // Berechnung der Positionen - - int xPos = xTile * tileSize; - int yPos = yTile * tileSize; - - // Typ des Entities wird generiert - - Entity temp; - - int id = (int) (Math.random() * 6); - switch(id){ - case 0: - temp = new Archer(xPos, yPos, lvl); - break; - case 1: - temp = new Swordsman(xPos, yPos, lvl); - break; - case 2: - temp = new Wizard(xPos, yPos, lvl); - break; - case 3: - temp = new Firewizard(xPos, yPos, lvl); - break; - case 4: - temp = new Earthwizard(xPos, yPos, lvl); - break; - case 5: - temp = new Fireswordsman(xPos, yPos, lvl); - break; - default: - temp = null; - } - - if(temp == null){ - System.out.println("Es gibt Probleme, schau mal beim Raumgenerator nach. Es sind sogar sehr problematische Probleme"); + + if(temp == null){ + System.out.println("Es gibt Probleme, schau mal beim Raumgenerator nach. Es sind sogar sehr problematische Probleme"); + } + + tempRoom.setEnemies(temp, i); } - - tempRoom.setEnemies(temp, i); } return tempRoom;