Bug 598 - I could not get the next direction for a ghost when using A*
Summary: I could not get the next direction for a ghost when using A*
Status: RESOLVED FIXED
Alias: None
Product: Group14-Pacman
Classification: Unclassified
Component: Game (show other bugs)
Version: 0.0.2
Hardware: PC Windows
: High enhancement
Assignee: YANG Tianxia
URL:
Depends on:
Blocks:
 
Reported: 2021-11-21 01:49 HKT by Aleksa
Modified: 2021-12-06 22:57 HKT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Aleksa 2021-11-21 01:49:46 HKT
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)
Comment 1 Aleksa 2021-11-21 01:57:10 HKT
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.