Я пытаюсь запрограммировать ошибку для перемещения по массиву, прикрепленному к пользовательскому объекту Room, сохраняя при этом счет того, сколько раз на каждую плитку наступал шаг.
Объект Room работает нормально, так же как и движение и счет. Однако координаты ошибки bugX
и bugY
возвращаются к 0
после выхода из метода nextMove
. Их значения возвращаются только при выходе из метода; даже последняя строка кода в самом методе nextMove
использует их новые значения.
Соответствующая часть метода прилагается, но другие разделы могут быть добавлены по запросу.
if (dirNum == 0 && bugY < length-1) //Move up
bugY++;
else if (dirNum == 1 && bugX < width-1) //Move right
bugX++;
else if (dirNum == 2 && bugY > 0) //Move down
bugY--;
else if (dirNum == 3 && bugX > 0) //Move left
bugX--;
else {
System.out.println("Error: Cannot move " + direction + ".");
canMove = false;
dirNum = generator.nextInt(4);
continue;
}
Это контекст самой команды.
while (endSim == false) {
nextMove(bugX, bugY);
System.out.print(room.printRoom() + "\n\nNext move? (y/n) ");
simSentinel = in.next();
if (simSentinel.charAt(0) == 'n')
endSim = true;
}
Объявления, где назначены начальные координаты, не находятся внутри каких-либо циклов, не говоря уже о том, где вызывается сама переменная.