#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. Попробуйте немного отладить