public void actionPerformed(ActionEvent e) {
if (!haveLost && !haveWon) {
if (fistTread) {
for (int i = 0; i < r; i ++) {
for (int j = 0; j < c; j ++) {
if (e.getSource() == jbt[i][j] && !flagStatus[i][j]) {
fistTread = false;
if(r == 9 && c == 9)
easyPlayedNumber ++;
else if(r == 16 && c == 16)
middlePlayedNumber ++;
else if(r == 16 && c == 30)
hardPlayedNumber ++;
time.timeStart();
for (int k = 0; k < mineNumber; k ++) {
int m = (int)(Math.random()*r);
int n = (int)(Math.random()*c);
if (map[m][n] != -1 && !(m > i - 2 && m < i + 2 && n > j - 2 && n < j + 2)) {
map[m][n] = -1;
if (n > 0) {
if (map[m][n - 1] != -1)
map[m][n - 1] ++;
}
if (n < c - 1) {
if (map[m][n + 1] != -1)
map[m][n + 1] ++;
}
if (m > 0) {
if (map[m - 1][n] != -1)
map[m - 1][n] ++;
if (n > 0) {
if (map[m - 1][n - 1] != -1)
map[m - 1][n - 1] ++;
}
if (n < c - 1) {
if (map[m - 1][n + 1] != -1)
map[m - 1][n + 1] ++;
}
}
if (m < r - 1) {
if (map[m + 1][n] != -1)
map[m + 1][n] ++;
if (n > 0) {
if (map[m + 1][n - 1] != -1)
map[m + 1][n - 1] ++;
}
if (n < c - 1) {
if (map[m + 1][n + 1] != -1)
map[m + 1][n + 1] ++;
}
}
}
else
k --;
}
click(i, j);
}
}
}
}
else {
if (refreshFistTread){
refreshFistTread = false;
time.timeStart();
}
for (int i = 0; i < r; i ++) {
for (int j = 0; j < c; j ++) {
if (e.getSource() == jbt[i][j] && !flagStatus[i][j] && !treadStatus[i][j]) {
click(i, j);
}
}
}
}
}
这是我写的扫雷中的一段,如果需要,留下邮箱,我发给你,我做的扫雷那些【是否使用问号】、【左右键一起按】、【本地保存记录】、【切换风格(改变界面颜色)】、【计时器】、【背景音乐】都有,不过还没有添加音效,也没有写多少注释,快期末考了,只能先放一放了。
左右键一起按的话,可以用e.getModifiersEx() == (InputEvent.BUTTON1_DOWN_MASK | InputEvent.BUTTON3_DOWN_MASK) 来判定。
扫雷程序中的鼠标左右键双击如何同时获取??? 食指按鼠标左键,中指按鼠标右键,同时按下,很难吗? LZ是不是有意在搞笑??呵呵~~~LS正解