2016-10-09 49 views
-1

我遇到了程序輸出的問題。我能夠生成網格並使pacman重新定向並移動,但它只能移出第一個位置,然後停止定向或移動。程序重申的方式肯定有問題,但我不確定是什麼。java 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] == "<" && 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); 


}}}} 

回答

0

檢查你的break語句如果它在第一次迭代中執行或沒有。

另外檢查你的數組第二個索引和第三個索引值是否爲空。

+0

試着調試一下 –