Я пытаюсь написать программу, в которой персонаж движется через двумерный массив, и на пути его взаимодействия существуют определенные препятствия. Лабиринт выглядит так (хотя расположение препятствий меняется при каждом запуске):
x | \
/ / \
\
/ / \
\ \ | |
Символ х обозначает игрока, и каждую секунду он перемещается на одну позицию дальше вправо. Если он вступает в контакт с «/», он перемещается на один пробел вправо и на один пробел вниз. Если он вступает в контакт с «\», он перемещается на одну позицию вправо и на одну позицию вверх. И если он вступает в контакт с «|», он автоматически умирает. Тем не менее, программа, похоже, не распознает, когда на пути игрока есть препятствие. Он просто все время движется прямо и в конце выглядит так:
x x x x x x x x
/ / \
\
/ / \
\ \ | |
Вот мой код, который должен проверять наличие препятствий:
if (maze[l][f].equals("/")) {
if ((l-1) < 0) {
System.out.println("You died on column " + (f + 1));
System.exit(0);
y+=1;
} else {
l-=1;
f+=1;
maze[l][f] = "x";
y+=1;
}
} else if (maze[l][f].equals("\\")) {
if ((l+1) >= rows){
System.out.println("You died on column " + (f + 1));
System.exit(0);
y+=1;
} else {
l+=1;
f+=1;
maze[l][f] = "x";
y+=1;
}
} else if (maze[l][f].equals("|")) {
System.out.println("You died on column" + (f+1));
System.exit(0);
y+=1;
} else {
f+=1;
maze[l][f] = "x";
y+=1;
}
А вот код, который создает лабиринт:
private static int rows;
private static int columns;
public static String[][] maze = new String[5][8];
public String[][] grid() {
Random rand = new Random();
int prob;
String obstacle = "";
boolean enabled = true;
for (int r = 0; r < rows; r++) {
for (int c = 0; c < columns; c++) {
if (enabled == true) {
prob = rand.nextInt(9) + 1;
if (prob == 1) {obstacle = "|"; enabled = false;}
else if (prob == 2 || prob == 3) {obstacle = "/"; enabled = false;}
else if (prob == 4 || prob == 5) {obstacle = "\\"; enabled = false;}
else {obstacle = ""; enabled = true;}
}
else {enabled = true; obstacle = "";}
maze[r][c] = obstacle;
}
}
return maze;
}
Я не вижу, что с этим не так. Если у вас есть идеи, дайте мне знать.
Спасибо