求大佬讲解一下这段java代码

我目前上大一,软件工程专业,科目太多学不过来。 明天要答辩讲解java代码算平时成绩,平时成绩综合期末卷面成绩,才是最终成绩。 分组做一个迷宫项目,这一段代码是同组的其他人写的。谁来给我讲一下这段代码的含义,我明天答辩时用。
public void control(int[][] num,ImageView iv) {
iv.setOnKeyPressed(e->{
int m= 30;
try {

if(e.getCode()==KeyCode.S && row+1<num.length && num[row+1][col]!=0) {iv.setY(iv.getY() + m);row++;}
if(e.getCode()==KeyCode.W && row-1>=0 && num[row-1][col]!=0) {iv.setY(iv.getY() - m);row--;}
if(e.getCode()==KeyCode.A && col-1>=0 && num[row][col-1]!=0) {iv.setX(iv.getX() - m);col--;}
if(e.getCode()==KeyCode.D && col+1<num[0].length && num[row][col+1]!=0) {iv.setX(iv.getX() + m);col++;}
}

catch(Exception n) {
}
if(row == num.length-1 && col == num[0].length-1) {
win();
}
});
}

//直译了哦,只有片面的代码,只能靠推测,其他你自己补充下:
//这个主要是对一个图像控件设置了键盘侦听事件,按下键盘时候对其进行坐标移位操作
//必须知道:ImageView图像控件,显示图片或者其他;num是一个二位数组,这里可以理解成矩阵地图;
public void control(int[][] num, ImageView iv) {
//对控件设置键盘侦听,
iv.setOnKeyPressed(e -> {
//设置一个变量,从下面使用看,这个应该是一个图像步进单位
int m = 30;
//以下为:try catch封装的键盘四向按键判断
try {
//字面意义推测:row应该是行,col应该是列,这是用二维数组画了一个矩阵地图,0不能走,1可以走;
//如果键盘按下的键是s,并且"行+1"小于地图中的行的个数,并且:地图[row+1行][col列]的值不等于0
if (e.getCode() == KeyCode.S && row + 1 < num.length && num[row + 1][col] != 0) {
//就设置图像y坐标(在原有坐标的基础上进行一个步进单位的叠加)
iv.setY(iv.getY() + m);
//行递增1:row=row+1;
row++;
}
//其实这里与下面与上面都是一个道理,仅仅判断的条件与按键不同罢了
if (e.getCode() == KeyCode.W && row - 1 >= 0 && num[row - 1][col] != 0) {
    iv.setY(iv.getY() - m);
   //行递减1
    row--;
  }
//同上
if (e.getCode() == KeyCode.A && col - 1 >= 0 && num[row][col - 1] != 0) {
    iv.setX(iv.getX() - m);
    //列递减1
    col--;
}
//同上
if (e.getCode() == KeyCode.D && col + 1 < num[0].length && num[row][col + 1] != 0) {
    iv.setX(iv.getX() + m);
    //列递增1
    col++;
  }
}catch (Exception n) {}
//如果行等于地图"行"的最大的索引值,并且列等于第一行数组的最大索引值
if (row == num.length - 1 && col == num[0].length - 1) {
    //就调用win函数;
    win();
}
    });
}

温馨提示:答案为网友推荐,仅供参考
相似回答