2016-10-09 3 views
-1

프로그램의 출력에 문제가 있습니다. 그리드를 생성하고 팩맨의 방향을 재조정하고 이동할 수는 있지만 첫 번째 위치에서 벗어나서 방향을 바꾸거나 움직이는 것을 멈출 수 있습니다. 프로그램이 되풀이하는 방식에 뭔가 잘못 될 것입니다. 그러나 나는 무엇이 확실하지 않습니다. 그것의 첫 번째 반복의 여부를 실행하면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

조금만 디버깅 해보세요. –

관련 문제