From 1f1e02fd281d490b44e2e31d31f6440d93994180 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Fri, 24 Apr 2020 00:05:32 +0200 Subject: [PATCH 1/2] Ich bin net unzufrieden --- .../dungeoncrawler/control/Controller.java | 6 +- .../model/DungeonGenerator.java | 102 +++++++++++++++--- core/src/com/dungeoncrawler/model/Room.java | 6 +- 3 files changed, 96 insertions(+), 18 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 3e6965f..9a0bff9 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -60,7 +60,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ dg = new DungeonGenerator(); - d = dg.generateDungeon(0, 0, 0, new Player()); + d = dg.generateDungeon(roomX - 1, roomY - 1, 48, new Player()); dg.ichWillSpielen(d); tile = new int[2]; @@ -120,7 +120,9 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ // Render methode zum rendern der einzelnen Sprites wird aufgerufen - m.render(batch, d.getPlayer(), e, arrows, tile, level, posRoom); + Entity[] lol = d.getLevel()[level].getRooms()[posRoom[0]][posRoom[1]].getEnemies(); + + m.render(batch, d.getPlayer(), lol, arrows, tile, level, posRoom); } } } diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index 15a0404..d4ed347 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -5,7 +5,7 @@ */ package com.dungeoncrawler.model; -import com.dungeoncrawler.model.entities.Player; +import com.dungeoncrawler.model.entities.*; /** * @@ -23,14 +23,14 @@ public class DungeonGenerator { int levelAmount = tempDungeon.getLevel().length; for(int i = 0; i < levelAmount; i++){ - tempDungeon.setLevel(generateLevel(), i); + tempDungeon.setLevel(generateLevel(sizeX, sizeY, tileSize, i+1), i); } return tempDungeon; } - private Level generateLevel(){ + private Level generateLevel(int sizeX, int sizeY, int tileSize, int lvl){ int roomAmount = (int) (Math.random() * 6) + 5; Level tempLevel = new Level(roomAmount); @@ -41,7 +41,7 @@ public class DungeonGenerator { int xPos = roomAmount / 2; int yPos = roomAmount / 2; - tempLevel.setRoom(generateRoom(), xPos, yPos); + tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl), xPos, yPos); // Schleife läuft so lange, bis die entsprechende Anzahl an Räumen generiert wurde for(int i = 1; i < roomAmount;){ @@ -78,7 +78,7 @@ public class DungeonGenerator { // An der neuen Stelle vom Cursor gibt es noch keinen Raum if(tempLevel.getRooms()[xPos][yPos] == null){ - tempLevel.setRoom(generateRoom(), xPos, yPos); + tempLevel.setRoom(generateRoom(sizeX, sizeY, tileSize, lvl), xPos, yPos); // i darf nur erhöht werden, wenn auche in Raum generiert wurde i++; @@ -88,22 +88,98 @@ public class DungeonGenerator { return tempLevel; } - private Room generateRoom(){ + private Room generateRoom(int sizeX, int sizeY, int tileSize, int lvl){ int itemAmount = (int) (Math.random() * 2); int enemyAmount = (int) (Math.random() * 6); Room tempRoom = new Room(new ItemContainer[itemAmount], new Entity[enemyAmount]); + // Items werden generiert + + // Entities werden generiert + int[][] 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); + + + // 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; + } + } + + 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() * 2); + switch(id){ + case 0: + temp = new Archer(xPos, yPos, lvl); + break; + + case 1: + temp = new Swordsman(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"); + } + + tempRoom.setEnemies(temp, i); + } + return tempRoom; } - private int[] generatePos(int sizeX, int sizeY, int tileSize){ - int[] position = new int[2]; - - int xPos = (int) (Math.random() * sizeX); - int yPos = (int) (Math.random() * sizeY); - - return position; + private int generateTile(int size){ + int tile = (int) (Math.random() * size); + return tile; } public void ichWillSpielen(Dungeon d){ diff --git a/core/src/com/dungeoncrawler/model/Room.java b/core/src/com/dungeoncrawler/model/Room.java index d518b47..32cf524 100644 --- a/core/src/com/dungeoncrawler/model/Room.java +++ b/core/src/com/dungeoncrawler/model/Room.java @@ -58,7 +58,7 @@ public class Room { this.enemies = enemies; } - - - + public void setEnemies(Entity enemy, int i){ + this.enemies[i] = enemy; + } } From 0ed148d9828f1a7765d7c1ea1be49bc007bd8c92 Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Fri, 24 Apr 2020 12:44:59 +0200 Subject: [PATCH 2/2] vor merge --- core/src/com/dungeoncrawler/control/Controller.java | 5 ++--- core/src/com/dungeoncrawler/model/DungeonGenerator.java | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 9a0bff9..2c1ecef 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -112,6 +112,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ if(m != null){ if(v == null){ + e = d.getLevel()[level].getRooms()[posRoom[0]][posRoom[1]].getEnemies(); // Position des Players, etc. werden aktualisiert updateObjects(level, posRoom); @@ -120,9 +121,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ // Render methode zum rendern der einzelnen Sprites wird aufgerufen - Entity[] lol = d.getLevel()[level].getRooms()[posRoom[0]][posRoom[1]].getEnemies(); - - m.render(batch, d.getPlayer(), lol, arrows, tile, level, posRoom); + m.render(batch, d.getPlayer(), e, arrows, tile, level, posRoom); } } } diff --git a/core/src/com/dungeoncrawler/model/DungeonGenerator.java b/core/src/com/dungeoncrawler/model/DungeonGenerator.java index d4ed347..348b51b 100644 --- a/core/src/com/dungeoncrawler/model/DungeonGenerator.java +++ b/core/src/com/dungeoncrawler/model/DungeonGenerator.java @@ -178,7 +178,7 @@ public class DungeonGenerator { } private int generateTile(int size){ - int tile = (int) (Math.random() * size); + int tile = ((int) (Math.random() * size) + 1); return tile; }