2016-10-09 2 views
-1

Ich habe ein Problem mit der Ausgabe des Programms. Ich bin in der Lage, das Gitter zu erzeugen und Pacman umzuorientieren und zu bewegen, aber es bewegt sich nur aus der ersten Position, und dann hört es auf, sich zu orientieren oder zu bewegen. Irgendetwas stimmt nicht mit der Art und Weise, wie das Programm wiederholt, aber ich bin mir nicht sicher was.Java Pacman - Schleife iteriert nur einmal durch Array

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); 


}}}} 

Antwort

0

Überprüfen Sie Ihre Break-Anweisung Wenn es in der ersten Iteration ausgeführt wird oder nicht.

Überprüfen Sie auch Ihre Array 2. Index und 3. Index-Werte, wenn es leer ist oder nicht.

+0

Versuchen Sie ein bisschen zu debuggen –