-1

I'm having a problem with the output of the program. I am able to generate the grid and make pacman reorient and move, but it only moves out of the first position, and then it stops orienting or moving. Something must be wrong with the way the program reiterates, but I'm not sure what.

package javaapplication2;
import java.util.*;

public class JavaApplication2 {
    int index;
    int index2;
    final int ARRAY_SIZE = 10;
    final int ARRAY_SIZE2 = 10;
    String [][] myArray = new String [ARRAY_SIZE][ARRAY_SIZE2];
    String output;

public static void main(String[] args) 
{

     JavaApplication2 pacman = new JavaApplication2();
     pacman.createPacman();
     pacman.generateArray();
     Scanner input = new Scanner( System.in );
     int m = input.nextInt();
     pacman.orientPacman(m);



}
public void generateArray(){


    for (index = 0; index < ARRAY_SIZE; index++)
    {
        for (index2 = 0; index2 < ARRAY_SIZE2; index2++)
        {
            Random rand = new Random(); 
            int value = rand.nextInt(50);
            if (myArray[index][index2] == "<")
                myArray[index][index2] = "<";
            else if (myArray[index][index2] == " ")
                myArray[index][index2] = " ";
            else if (value < 45) 
                myArray[index][index2] = ".";
            else myArray[index][index2] = "0";
            System.out.print("   " + myArray[index][index2]);
                  if (index2 + 1 == ARRAY_SIZE)
                  {
    System.out.println();
                  }



}}
}


    public void printArray(String myArray[][]){
                for (index = 0; index < ARRAY_SIZE; index++)
    {
        for (index2 = 0; index2 < ARRAY_SIZE2; index2++)
        {
            System.out.print("   " + myArray[index][index2]);
                  if (index2 + 1 == ARRAY_SIZE)
                  {
    System.out.println();
                  }
    }}
    Scanner input = new Scanner( System.in );
    int m = input.nextInt();
    orientPacman(m);}

    public void createPacman(){
        myArray[0][0] = "<";



    }

    public void orientPacman(int m){
       for (index = 0; index < ARRAY_SIZE; index++)
    {
        for (index2 = 0; index2 < ARRAY_SIZE2; index2++)
        {
   if ((myArray[index][index2] == "<" && m == 1) | 
   (myArray[index][index2] == ">" && m == 2) |
   (myArray[index][index2] == "^" && m == 3) |   
   (myArray[index][index2] == "v" && m == 4)   )
   {
   movePacman();
   break;
   }
    else if (myArray[index][index2] == ">" | myArray[index][index2] == "^"     | myArray[index][index2] == "v" && m == 1)
   myArray[index][index2] = "<";
    else if (myArray[index][index2] == "<" | myArray[index][index2] == "^" | myArray[index][index2] == "v" && m == 2)
   myArray[index][index2] = ">";
    else if (myArray[index][index2] == "<" | myArray[index][index2] == ">" | myArray[index][index2] == "v" && m == 3)
   myArray[index][index2] = "^";
    else if (myArray[index][index2] == "<" | myArray[index][index2] == ">" | myArray[index][index2] == "^" && m == 4)
   myArray[index][index2] = "v";
  printArray(myArray);

        }   

    }}
    public void movePacman(){
       for (index = 0; index < ARRAY_SIZE; index++)
    {
        for (index2 = 0; index2 < ARRAY_SIZE2; index2++)
        {
   if (myArray[index][index2] == "<")
   {
   myArray[index][index2+1] = "<";
   myArray[index][index2] = " ";
   }
    if (myArray[index][index2] == ">")
   {
   myArray[index][index2-1] = ">";
   myArray[index][index2] = " ";
   }
    if (myArray[index][index2] == "^")
   {
   myArray[index+1][index2] = "^";
   myArray[index][index2] = " ";
  }
        if (myArray[index][index2] == "v")
   {
   myArray[index-1][index2] = "v";
   myArray[index][index2] = " ";
   }
   printArray(myArray);


}}}}
Sjokun
  • 1

1 Answers1

0

Check your break statement If its executing in the first iteration or not.

Also check your array 2nd index and 3rd index values if its empty or not.

Aammad Ullah
  • 274
  • 4
  • 11