Browse Source

Merge branch 'main' of https://gitlab.cs.hs-fulda.de/fdai7012/pacmayham

remotes/origin/ghostsbehaviour
fdai7753 11 months ago
parent
commit
56afbb031c
  1. 100
      src/main/java/pacmanGame/Map.java
  2. 54
      src/test/java/pacmanTests/MapTest.java
  3. 5
      team.md

100
src/main/java/pacmanGame/Map.java

@ -131,4 +131,104 @@ public class Map {
}
}
}
public String FindPath(Vector2 from, Vector2 to)
{
char[][] tempMap = new char[size.x][size.y];
for(int x = 0; x < size.x; x++) {
for(int y = 0; y < size.y; y++) {
Vector2 pos = new Vector2(x,y);
Cell cell = GetCell(pos);
if(cell.type.equals("wall")) {
tempMap[x][y] = 'w';
}
else {
tempMap[x][y] = 'e';
}
}
}
tempMap[to.x][to.y] = 't';
String targetChars = "tudlr";
boolean done = false;
while(!done) {
int changes = 0;
for(int x = 0; x < size.x; x++) {
for(int y = 0; y < size.y; y++) {
if(tempMap[x][y] == 'e') {
Vector2 pos = new Vector2(x,y);
char newChar = 'x';
if(targetChars.indexOf(tempMap[x + 1][y]) >= 0) {
newChar = 'r';
}
else if(targetChars.indexOf(tempMap[x - 1][y]) >= 0) {
newChar = 'l';
}
else if(targetChars.indexOf(tempMap[x][y + 1]) >= 0) {
newChar = 'u';
}
else if(targetChars.indexOf(tempMap[x][y - 1]) >= 0) {
newChar = 'd';
}
if(newChar != 'x') {
tempMap[x][y] = newChar;
changes++;
if(pos.equals(from)) {
done = true;
}
}
}
}
}
if(changes == 0) {
done = true;
}
}
if(tempMap[from.x][from.y] != 'e') {
boolean reading = true;
String path = "";
Vector2 currentReadPos = from.Clone();
while(reading) {
char currentChar = tempMap[currentReadPos.x][currentReadPos.y];
if(currentReadPos.equals(to)) {
reading = false;
}
else {
path += currentChar;
if(currentChar == 'l') {
currentReadPos = currentReadPos.Add(new Vector2(-1, 0));
}
else if(currentChar == 'r') {
currentReadPos = currentReadPos.Add(new Vector2(1, 0));
}
else if(currentChar == 'u') {
currentReadPos = currentReadPos.Add(new Vector2(0, 1));
}
else if(currentChar == 'd') {
currentReadPos = currentReadPos.Add(new Vector2(0, -1));
}
}
}
return path;
}
else {
//no path was found
return "";
}
}
}

54
src/test/java/pacmanTests/MapTest.java

@ -57,4 +57,58 @@ class MapTest {
assertThat(expectedMiddle).isEqualTo(middle);
assertThat(expectedBottomRight).isEqualTo(bottomRight);
}
@Test
void Map_getPath_returnCorrectPathSimple() {
// arrange
String[] mapTest = {
"wwwww",
"w...w",
"w.w.w",
"w.w.w",
"wwwww"
};
GameManager gameManager = new GameManager();
gameManager.map = new Map(mapTest, gameManager);
Vector2 from = new Vector2(1, 1);
Vector2 to = new Vector2(3, 1);
String expectedPath = "uurrdd";
// act
String path = gameManager.map.FindPath(from, to);
// assert
assertThat(path).isEqualTo(expectedPath);
}
@Test
void Map_getPath_returnCorrectPathComplex() {
// arrange
String[] mapTest = {
"wwwwwwwww",
"w.....w.w",
"w.www.w.w",
"w.w...w.w",
"w.w.www.w",
"w.w.....w",
"wwwwwwwww"
};
GameManager gameManager = new GameManager();
gameManager.map = new Map(mapTest, gameManager);
Vector2 from = new Vector2(4, 3);
Vector2 to = new Vector2(1, 1);
String expectedPath = "ruulllldddd";
// act
String path = gameManager.map.FindPath(from, to);
// assert
assertThat(path).isEqualTo(expectedPath);
}
}

5
team.md

@ -0,0 +1,5 @@
- fdai2751, fdai2751
- fdai7012, fdai7012
- fdai7753, fdai7753
- fdai7910, fdai7910
- Julian, fdai7012
Loading…
Cancel
Save