我的问题是当我的代理到达 0,0 、 0,9 等时,我试图阻止它进入 9,0 或 9,9 等,就像在这个例子中一样
(0,0) N -1.0 (9,0)
(9,0) N -1.0 (8,0)
(8,0) W -1.0 (8,9)
我希望它在网格之间移动,而不是绕着网格返回。例如,代替 goind 形式 (0,0) 到 (9,0) 转到 (0,1) 0r (1 ,0) 等。
我尝试了类似此代码的简单操作,以检查 x 和 y 值是否大于行数和列数的 x 和 y 值,或者 x 和 y 是否小于 0
public boolean Notvalid(int x, int y) {
return (x > cr.NUM_ROWS || y > cr.NUM_COLUMNS || x < 0 || y < 0);
}
并在设置 x 和 y 坐标时调用此方法
public GridState(int xpos, int ypos) {
if (!Notvalid(x, y)) {
x = xpos;
y = ypos;
} else {
x = cr.START_ROW;
y = cr.START_COL;
}
}
有人知道处理这样的规则的更简单方法吗?