我试着用Java做一个扫雷游戏,但是我总是遇到这个错误。此函数将当前正方形设置为已单击,并将任何相邻正方形设置为要单击并递归继续。当它用完方块时,它应该会停止,但即使我将字段大小设置为2x2,并且没有矿,它也会溢出。
public void setClicked(boolean clicked){
this.clicked = clicked;
if(adjacentMines == 0)
for(mine m : adjacent){
if(!m.isClicked() && !m.isMine()){
setClicked(true); //Should be m.setClicked(true);
}
}
}问题解决了,我错过了“m”在我的方法调用中。感谢大家的帮助。
发布于 2011-07-12 22:25:04
你需要在邻近的矿上调用setClicked,而不是在原来的矿上,否则,你会一次又一次地调用源矿的setClicked(true)
public void setClicked(boolean clicked){
this.clicked = clicked;
if(adjacentMines == 0)
for(mine m : adjacent){
if(!m.isClicked() && !m.isMine()){
m.setClicked(true); // setClicked should be called on the adjacent mine, not on itself!
}
}
}发布于 2011-07-12 22:25:30
您正在同一个矿上调用setClicked,而不是在相邻的矿上调用。
更改为:
public void setClicked(boolean clicked){
this.clicked = clicked;
if(adjacentMines == 0)
for(mine m : adjacent){
if(!m.isClicked() && !m.isMine()){
//missing the "m."
m.setClicked(true);
}
}
}发布于 2011-07-12 22:26:34
我只能猜测setClicked()方法是mine的成员,但是您不应该在条件中调用m.setClicked(true)而不仅仅是setClicked(true)吗
https://stackoverflow.com/questions/6665711
复制相似问题