Hi Everyone, Here are some hints if you want to modify the Java source. 1. Ghost movements in the Java source are decided randomly, by the function MoveGhosts. To allow for smooth movements, the applet allows ghosts to be between squares. So you should leave in lines (397 & 398) reading: if (ghostx[i]%blocksize==0 && ghosty[i]%blocksize==0)) { so that you only do something when the ghost is right on a square. Instead of the large if statement to decide potential moves, you will simply select a direction from your path list (see below) and set ghostdx and ghostdy accordingly. 2. You will have to add an array (and counter) to store the intended path of your ghost. This array would be populated by symbolic constants like in the C version. So, you would add the following lines following around line 56: final int UP=0; final int DOWN=1; final int LEFT=2; final int RIGHT=3; 3. The array for a single ghost could be some more global variables, created also around line 56 following this line: int[] ghostx, ghosty, ghostdx, ghostdy, ghostspeed; May I recommend the following two lines: int[] ghostPath; int numStepsInPath; Warning: These would apply to a single ghost only, unlike the line above which is storing details of all ghosts. 4. The two new variables ghostPath and numStepsInPath would be initialised in the init() function around line 115, along with the other global vars. 5. You must be able to display the intended path of the ghost, so that I can verify your solution. I will be supplying the path drawing code in next week's (23rd August) tutorial, but it will be designed to work with the variables I have described above. If you chose to use different variables to ghostPath, numStepsInPath, the symbolic constants etc, it will be YOUR responsibility to modify the path drawing code for your implementation. Good luck! Stuart