I ran Main.java and instructed PacMan to move until the console showed the following Maze state: P is PacMan's position * is his starting position W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W F F F F F F F F F F F F F F F F F F F F F F F F F F F W W F W W W W W W W W W W F W W W F W W W W W W W W W W F W W F W W W W W W W W W W F W W W F W W W W W W W W W W F W W F W W W W W W W F F F F W W W F F F F W W W W W W W F W W F F F F F F F W F W W W W W W W W W F W F F F F F F F W W W W W W W W F W F W W W W W W W W W F W F W W W W W W W W F W F W W W W W W W W W F W F W W F F F F F F F F F F F F F F F W W F W F W W W W W W W W W F W F W W W W W F W F W W W W W W W W W F W F W W W W W F F F F W F W W W W W W W W W F W F F F F W W F W W W W F F F F F F F F F F F W W W W F W W W W F W W W W F W W W W W W W W F W W W W F W W W W F F F F F F F F W O W F F F F F F F F W W F W W W F W W F W W F W W F W W W F W W F W W W F W W F W W F W W F W W W F W W F F F W F W W F W W W W W W W W W F W W F W F F F W W W W F W F W W F * F F F F F F W W F W F W W W W F W F W W W W W W W W W F W W W W F W F W W W W W F W F W W W W W W W W W F W W W W F W F W W W W W F F F W W W W W F F F F F F F F F F F W W W W W W W W W F W W W W W W W W W F W W W W F W W W W W W W W W F W W W W W W W W W B W W W W F W W W I W F W W W W W W W F W W W W W F W W W W W F W W W W W W W W W F W W W W W F W W W W W F W W W W W W F F F W W W W W F F F W W F F F P W W W W W W W F W W W W W W W W W F W W W W W W W W W W W W F W W W W W W W W W F W W W W W R W W W W F F F F F F F F F F F W W W W W W W W W W W W W W W W W W W W W W W W W W W W W W I got a following exception from Visual Studio Code: Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.get(ArrayList.java:459) at Game.A_star.getNextDirection(A_star.java:168) at Game.Ghost.moveToTarget(Ghost.java:119) at Game.ChaseAmbush.behave(ChaseAmbush.java:28) at Game.Game.moveGhosts(Game.java:174) at Game.Game.handleMovements(Game.java:114) at Game.Game.gameTick(Game.java:61) at Game.Main.main(Main.java:30)
It turned out that when the start and end in ArrayList<Tuple> getPath(Tuple start, Tuple end, ArrayList<Direction> possibleDirections) in class A_star are the same point, A* algorithm will return an ArrayList of size 1. After A* returned a path of size 1, I tried to access a Tuple at index 1, so I got an exception. The solution is to check the Arraylist size with conditional before trying to access out of bounds indeces.