diff --git a/src/main/java/pacmanGame/GameManager.java b/src/main/java/pacmanGame/GameManager.java index 739359c..d7c22d3 100644 --- a/src/main/java/pacmanGame/GameManager.java +++ b/src/main/java/pacmanGame/GameManager.java @@ -12,7 +12,7 @@ public class GameManager { } public void setupGame(){ - map = new Map(); + map = new Map(this); visualizer = new VisualizerPlainText(this); player = new Player(this); player.Spawn(); diff --git a/src/main/java/pacmanGame/Ghost.java b/src/main/java/pacmanGame/Ghost.java index 9e7f6b3..26e9845 100644 --- a/src/main/java/pacmanGame/Ghost.java +++ b/src/main/java/pacmanGame/Ghost.java @@ -4,6 +4,7 @@ public class Ghost { public Vector2 position; public final GameManager gameManager; public final int ghostNumber; + public Ghost(GameManager gameManager, int ghostNumber) { this.gameManager = gameManager; diff --git a/src/main/java/pacmanGame/Map.java b/src/main/java/pacmanGame/Map.java index 8468537..2379e89 100644 --- a/src/main/java/pacmanGame/Map.java +++ b/src/main/java/pacmanGame/Map.java @@ -41,7 +41,7 @@ public class Map { public Vector2[] ghostSpawns; public String ghostSpawnChars = "0123456789"; - + public final HashMap mapTypes = new HashMap(){{ this.put("e", "empty"); @@ -53,6 +53,7 @@ public class Map { this.put(i+"", "empty"); } }}; + public GameManager gameManager; public Cell[][] cells; public Vector2 size; @@ -60,12 +61,14 @@ public class Map { public Vector2 playerSpawn = new Vector2(2,2); public char playerSpawnChar = 's'; - public Map() { + public Map(GameManager gameManager) { + initializeGhostSpawns(); GenerateMap(mapClassic); + this.gameManager = gameManager; } - - public Map(String[] mapData) { + public Map(String[] mapData,GameManager gameManager) { GenerateMap(mapData); + this.gameManager = gameManager; } public void GenerateMap(String[] mapData) { @@ -87,6 +90,8 @@ public class Map { cells[x][y] = new Cell(cellPos, cellType); + //for(int i = 0; i < gameManager.ghosts.length; i++) + if(cellChar == playerSpawnChar) { playerSpawn = cellPos.Clone(); } @@ -105,4 +110,25 @@ public class Map { } } + private void initializeGhostSpawns() { + int count = 0; + for (int y = 0; y < mapClassic.length; y++) { + for (int x = 0; x < mapClassic[y].length(); x++) { + char cellChar = mapClassic[y].charAt(x); + if (ghostSpawnChars.indexOf(cellChar) != -1) { + count++; + } + } + } + ghostSpawns = new Vector2[count]; + count = 0; + for (int y = 0; y < mapClassic.length; y++) { + for (int x = 0; x < mapClassic[y].length(); x++) { + char cellChar = mapClassic[y].charAt(x); + if (ghostSpawnChars.indexOf(cellChar) != -1) { + ghostSpawns[count++] = new Vector2(x, mapClassic.length - 1 - y); + } + } + } + } } diff --git a/src/test/java/pacmanTests/MapTest.java b/src/test/java/pacmanTests/MapTest.java index cc94256..2f91479 100644 --- a/src/test/java/pacmanTests/MapTest.java +++ b/src/test/java/pacmanTests/MapTest.java @@ -21,12 +21,13 @@ class MapTest { String expectedTopLeft = "wall"; String expectedMiddle = "dot"; String expectedBottomRight = "dot"; + GameManager gameManager = new GameManager(); // act - Map testMap = new Map(mapTest); + gameManager.map = new Map(mapTest, gameManager); - String topLeft = testMap.cells[0][2].type; - String middle = testMap.cells[1][1].type; - String bottomRight = testMap.cells[2][0].type; + String topLeft = gameManager.map.cells[0][2].type; + String middle = gameManager.map.cells[1][1].type; + String bottomRight = gameManager.map.cells[2][0].type; // assert assertThat(expectedTopLeft).isEqualTo(topLeft); assertThat(expectedMiddle).isEqualTo(middle); @@ -41,7 +42,10 @@ class MapTest { "w..", "ee." }; - Map testMap = new Map(mapTest); + GameManager gameManager = new GameManager(); + // act + gameManager.map = new Map(mapTest, gameManager); + Map testMap = gameManager.map; Cell expectedTopLeft = testMap.cells[0][2]; Cell expectedMiddle = testMap.cells[1][1]; Cell expectedBottomRight = testMap.cells[2][0]; diff --git a/src/test/java/pacmanTests/VisualizerPlainTextTest.java b/src/test/java/pacmanTests/VisualizerPlainTextTest.java index 92276e2..e73225c 100644 --- a/src/test/java/pacmanTests/VisualizerPlainTextTest.java +++ b/src/test/java/pacmanTests/VisualizerPlainTextTest.java @@ -20,7 +20,7 @@ class VisualizerPlainTextTest { }; GameManager gameManager = new GameManager(); - gameManager.map = new Map(mapTest); + gameManager.map = new Map(mapTest, gameManager); VisualizerPlainText vpt = new VisualizerPlainText(gameManager); String expected = "" @@ -44,7 +44,7 @@ class VisualizerPlainTextTest { }; GameManager gameManager = new GameManager(); - gameManager.map = new Map(mapTest); + gameManager.map = new Map(mapTest, gameManager); VisualizerPlainText vpt = new VisualizerPlainText(gameManager); gameManager.ghosts[0].position = new Vector2(1, 1);