-1
プログラムの出力に問題があります。私はグリッドを生成し、パクマンの向きを変えて移動させることができますが、それは最初の位置から移動した後、方向付けまたは移動を停止します。何かが間違っている必要がありますプログラムが繰り返す方法で、私は何がわからない。java pacman - ループは配列を通して1回だけ反復する
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);
}}}}
少しデバッグしてみてください –