我想为我的数独游戏实现重做和撤消功能。但它似乎不起作用。以下是我的一些代码:
数独课程:
声明,(信息在构造函数中被赋予第一个网格值,因此起始长度为1):
Board board;
String[][] redoS;
Stack<String[][]> info = new Stack<String[][]>();
撤消和重做功能:
public boolean undo(){
if(info.size()>2){
redoS=(String[][])info.pop();
board.grid=(String[][])info.pop();
return true;
}
return false;
}
public boolean redo(){
if(redoS!=null){
board.grid=(String[][])redoS;
info.push(redoS);
return true;
}
return false;
}
(添加输入法有info.push(),删除有info.pop()。)
游戏控制器文件/类:
@FXML
public void gjenta(){
if(game.redo()){
console.setText("Gjentok");
}
console1.setText(game.toString());
}
@FXML
public void angre(){
if(game.undo()){
console.setText("Angret");
}
console1.setText(game.toString());
}
获得0错误,在调用方法时,电路板不会改变。