//直译了哦,只有片面的代码,只能靠推测,其他你自己补充下:
//这个主要是对一个图像控件设置了键盘侦听事件,按下键盘时候对其进行坐标移位操作
//必须知道: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();
}
});
}