, поэтому я пытаюсь сказать int Posx;
номер, а затем, когда пользователь перемещается по меню, в зависимости от того, что они выбрали, либо добавит 1, 0 или -1 к int Posx
. Я не могу получить Posx
, чтобы сохранить номер после его добавления или вычитания. Я пытаюсь перемещаться по массиву, и я хочу сохранить 2 ints в качестве маркеров, чтобы сообщить мне, где я нахожусь в массиве относительно x и y.Как я могу получить счетчик для работы в цикле while?
tl; dr Как я могу держать счетчик внутри цикла do/while?
Вот где проблема:
//this variable will hold if we found or not the string in the puzzle
boolean found = true;
do {
//Print out the array
for (int x = 0; x < maze.length; x++) {
for (int y = 0; y < maze[0].length; y++) {
System.out.print(maze[x][y]);
}
System.out.println();
}
System.out.printf("You may:\n1) Move up\n2) Move down\n3) Move left\n4) Move right\n0) Quit\nYour Choice (0-4):\n");
int usrAns = sc2.nextInt();
if (usrAns == 0){
System.out.println("Bye!\n");
found = false;
break;
}
//arrays to hold the direction.
int[] movx ={ -1, 0, 0, 1};
int[] movy ={ 0, -1, 1, 0};
//Array to hold the position.
int Posx = 0;
int Posy = 0;
if (usrAns == 1){
if(check(Posx, Posy, maze, movx[1], movy[1])){
System.out.println("Cannot move past cave boundary! Try something else.\n");
continue;
}
else{
Posy = Posy - 1;
System.out.printf("This is Posx %d and Posy %d\n", Posx, Posy);
continue;
}
}
if (usrAns == 2){
if(check(Posx, Posy, maze, movx[2], movy[2])){
System.out.println("Cannot move past cave boundary! Try something else.\n");
continue;
}
else{
Posy= Posy + 1;
System.out.printf("This is Posx %d and Posy %d\n", Posx, Posy);
continue;
}
}
if (usrAns == 3){
if(check(Posx, Posy, maze, movx[0], movy[0])){
System.out.println("Cannot move past cave boundary! Try something else.\n");
continue;
}
else{
Posx = Posx - 1;
System.out.printf("This is Posx %d and Posy %d\n", Posx, Posy);
continue;
}
}
if (usrAns == 4){
if(check(Posx, Posy, maze, movx[3], movy[3])){
System.out.println("Cannot move past cave boundary! Try something else.\n");
continue;
}
else{
Posx =Posx + 1;
System.out.printf("This is Posx %d and Posy %d\n", Posx, Posy);
continue;
}
}
while (usrAns >= 5 || usrAns < 0){
System.out.println("Please enter a number between 0 and 4:\n");
usrAns = sc2.nextInt();
if (usrAns == 0){
System.out.println("Bye!\n");
found = false;
break;
}
}
}while(found);
Любые идеи, советы и приемы будут весьма благодарны.
Мало того, что нам не нужно инициализировать Posx и Posy внутри цикла, мы не хотим, так как он сбрасывает наше положение каждый раз, когда цикл поворачивается. – 3yakuya
@Byakuya спасибо, отредактировал мое сообщение ;-) –
Спасибо! Не могу поверить, что это было так просто ... – Drieke