java pacman — цикл выполняет итерацию только один раз через массив

#arrays #pacman

#массивы #pacman

Вопрос:

У меня проблема с выводом программы. Я могу сгенерировать сетку и заставить pacman переориентироваться и перемещаться, но он перемещается только из первой позиции, а затем перестает ориентироваться или перемещаться. Что-то должно быть не так с тем, как программа повторяет, но я не уверен, что именно.

 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] == "<" amp;amp; m == 1) | 
   (myArray[index][index2] == ">" amp;amp; m == 2) |
   (myArray[index][index2] == "^" amp;amp; m == 3) |   
   (myArray[index][index2] == "v" amp;amp; m == 4)   )
   {
   movePacman();
   break;
   }
    else if (myArray[index][index2] == ">" | myArray[index][index2] == "^"     | myArray[index][index2] == "v" amp;amp; m == 1)
   myArray[index][index2] = "<";
    else if (myArray[index][index2] == "<" | myArray[index][index2] == "^" | myArray[index][index2] == "v" amp;amp; m == 2)
   myArray[index][index2] = ">";
    else if (myArray[index][index2] == "<" | myArray[index][index2] == ">" | myArray[index][index2] == "v" amp;amp; m == 3)
   myArray[index][index2] = "^";
    else if (myArray[index][index2] == "<" | myArray[index][index2] == ">" | myArray[index][index2] == "^" amp;amp; 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);


}}}}
  

Ответ №1:

Проверьте свой оператор break, выполняется ли он на первой итерации или нет.

Также проверьте значения 2-го индекса и 3-го индекса вашего массива, если он пустой или нет.

Комментарии:

1. Попробуйте немного отладить