我知道,我知道。这已被问了很多次。我不是在寻找一种算法。我认为我的算法工作不正常。扫雷随机产生地雷算法不正确
这里是我使用的算法:
public void onFirstMove (int moveX, int moveY) {
setFirstMove (false);
Random r = new Random();
for (int i = 0 ; i < 10 ; i++) {
int x;
int y;
do {
x = r.nextInt (9);
y = r.nextInt (9);
} while (tileMatrix[x][y].hasMine() &&
moveX == x && moveY == y);
tileMatrix[x][y].setMine();
}
timer.startTimer();
}
我把它放在onFirstMove方法,因为我不想让球员失去了先机。正如你所看到的,我一直试图寻找x和y坐标,而它与第一步的位置相同。
while (tileMatrix[x][y].hasMine() &&
moveX == x && moveY == y);
而现在它有2个已知的bug:
它有时会产生9个矿山,而不是10。我知道这是因为,当我输了,它会显示所有的地雷。
有时候确实在第一步移动的位置产生一个地雷。
有兴趣的人士,我解决了这个第一XD http://chat.stackoverflow.com/transcript/message/25104533 #25104533 – Rishav