我是编程的初学者,并坚持在SlidingPuzzles上完成作业。以下功能想要操纵每个可能的方向的板。发生的事情是,在一个目录中改变之后,改变的s也用于下一个目录。而不是使用原来的。
public Collection<Configuration> successors() {
List<Configuration> succs = new LinkedList<>();
SlidingGame t = new SlidingGame(this.board);
for (Direction dir : Direction.values()) {
if (t.canMove(dir)) {
SlidingGame s = new SlidingGame(this.board);
s.holeX = t.holeX+dir.getDX();
s.holeY = t.holeY+dir.getDY();
s.board[t.holeX][t.holeY] = t.board[s.holeX][s.holeY];
s.board[s.holeX][s.holeY] = HOLE;
succs.add(s);
}
}
return succs;
}
甚至改变,我根本不操纵。 这是使用的构造函数:
public SlidingGame(int[][] board){
this.board = board;
for(int i = 0; i < N ; i++){
for(int j = 0 ; j < N; j++){
if(board[i][j] == HOLE){
holeX = i;
holeY = j;
}
}
}
}
我很抱歉这个菜鸟问题,但我现在已经停留了很长时间。谢谢你的帮助!