Я предполагаю, что должна появиться клавиша W
для перемещения вверх по строке. Когда вы печатаете строки с нуля, верхняя строка равна нулю, поэтому вы хотите уменьшить значение p1, а не увеличивать его для случая W
, и аналогичным образом увеличивать, а не уменьшать для случая S
.
Вы не говорите точно, что ожидаете, когда игрок перемещается, поэтому я предполагаю здесь. Ваш код будет распечатывать сетку только при ее создании. В этой точке начальная позиция всегда будет слева вверху (p1 = 0. P2 = 0). Если вы напечатаете сетку после каждого хода, вы увидите, как она меняется.
например. если ваш код в классе компонентов был:
public Components()
{
Graph();
}
void Graph() {
int Row, Col, Num1, Num2;
int p1 = 0;
int p2 = 0;
char Move;
boolean Running = true;
Scanner input = new Scanner(System.in);
// Random random = new Random();
System.out.println("Please Enter The Number Of Row:");
Row = input.nextInt();
System.out.println("Please Enter The Number Of Columns:");
Col = input.nextInt();
int Array[][] = new int[Row][Col];
// Num1 = random.nextInt(Row) + 1;
// Num2 = random.nextInt(Col) + 1;
// Don't need to do this : int[] will initialise to 0
// for(int i=0;i<Row;i++)
// {
// for(int x=0;x<Col;x++)
// {
// Array[i][x] = 0;
// }
// }
Array[p1][p2] = 1;
print(Array);
while (Running) {
Move = input.next().charAt(0);
switch (Move) {
case 'w':
case 'W':
Array[p1][p2] = 0;
Array[--p1][p2] = 1;
print(Array);
break;
case 's':
case 'S':
Array[p1][p2] = 0;
Array[++p1][p2] = 1;
print(Array);
break;
case 'd':
case 'D':
Array[p1][p2] = 0;
Array[p1][++p2] = 1;
print(Array);
break;
case 'a':
case 'A':
Array[p1][p2] = 0;
Array[p1][--p2] = 1;
print(Array);
break;
case 'l':
case 'L':
Running = false;
input.close();
break;
default:
System.out.println("Please Press Proper Keys!");
break;
}
}
}
private void print(int[][] grid) {
for (int i = 0; i < grid.length; i++) {
for (int x = 0; x < grid[0].length; x++) {
System.out.print(grid[i][x] + "\t");
}
System.out.println();
}
}
}
Запустите приложение и используйте 3 для строк и 4 для столбцов, которые вы увидите:
1 0 0 0
0 0 0 0
0 0 0 0
Если вы введете d
, вы увидите:
0 1 0 0
0 0 0 0
0 0 0 0
Затем введите s
, вы увидите:
0 0 0 0
0 1 0 0
0 0 0 0
Вам нужно объяснить, что вы ожидаете увидеть, иначе никто не сможет помочь.