<p></p>
<p>/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/</p>
<p>/**
*
* @author Zerob13
<em>/ import java.awt.</em>;
import java.awt.event.<em>; import javax.swing.</em>;
class Mineb extends JButton {
private boolean ismine;
int x, y;
int num;
public boolean isMine() {
return ismine;
}
public void setMine(boolean a) {
ismine = a;
}
Mineb(String a, int i, int j) {
super.setText(a);
x = i;
y = j;
ismine = false;
}
}
public class Deom extends JFrame implements MouseListener {
/**
* @param args
*/
Mineb[][] b;
int last;
int elas;
class node {
int x, y;
}
int[][] dir = { { 0, 1 }, { 1, 0 }, { 1, 1 }, { -1, 1 }, { -1, -1 },
{ 1, -1 }, { -1, 0 }, { 0, -1 } };
private void gen() {
int co = 0;
elas = 81 - 9;
last = 9;
int[] hash = new int[81];
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
b[i][j].setText(“”);
b[i][j].setEnabled(true);
b[i][j].setMine(false);
}
}
for (int i = 0; i < 81; i++) {
hash[i] = 0;
}
for (; co < 9;) {
int X
= (int) (Math.
random() * 81);
if (hash[X] == 0) {
hash[X] = 1;
co++;
}
}
for (int i = 0; i < 81; i++) {
if (hash[i] == 1) {
int x = i / 10, y = i % 10;
if (x >= 9)
x = 8;
if (y >= 9)
y = 8;
b[x][y].setMine(true);
}
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
b[i][j].num = count(i, j);
}
}
state.setText(“9”);
}
Deom() {
setJMenuBar(mb);
mb.add(start);
mb.add(http);
start.add(s);
@Override
gen();
}
};
s.addActionListener(st);
b = new Mineb[9][9];
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
b[i][j] = new Mineb(“”, i, j);
b[i][j].setSize(10, 10);
b[i][j].addMouseListener(this);
add(b[i][j]);
}
}
add(state);
state.
setText(String.
valueOf(this.
last));
setSize(500, 500);
setVisible(true);
setDefaultCloseOperation
(JFrame.
EXIT_ON_CLOSE);
gen();
}
public static void main
(String[] args
) {
// TODO Auto-generated method stub
Deom frame = new Deom();
}
int count(int x, int y) {
int i;
int k = 0;
for (i = 0; i < 8; i++) {
int w = x + dir[i][0];
int z = y + dir[i][1];
if (w < 0 || z < 0 || w >= 9 || z >= 9)
continue;
if (b[w][z].isMine()) {
k++;
}
}
return k;
}
void showall() {
int i, j;</p>
<pre><code> for (i = 0; i < 9; i++) {
for (j = 0; j < 9; j++) {
if (b[i][j].isEnabled()) {
if (b[i][j].isMine()) {
if (b[i][j].getText() == "P")
b[i][j].setText("R");
else
b[i][j].setText("@");
b[i][j].setEnabled(false);
} else {
if (b[i][j].num == 0) {
if (b[i][j].getText() == "P") {
b[i][j].setText("X");
} else
b[i][j].setText("-");
} else{
if (b[i][j].getText() == "P") {
b[i][j].setText("X");
}else
b
[i
][j
].
setText(String.
valueOf(b
[i
][j
].
num));}
b[i][j].setEnabled(false);
}
}
}
}
}
void showsame(int x, int y) {
int i, j, k;
node[] queue = new node[81];
boolean[][] hash = new boolean[9][9];
for (i = 0; i < 9; i++) {
for (j = 0; j < 9; j++) {
hash[i][j] = false;
}
}
node head = new node();
node p = new node();
head.x = x;
head.y = y;
int top = 0;
int tail = 0;
queue[tail] = new node();
queue[tail].x = head.x;
queue[tail].y = head.y;
tail++;
while (tail > top) {
head = queue[top];
top++;
for (i = 0; i < 8; i++) {
int w = head.x + dir[i][0];
int z = head.y + dir[i][1];
if (w < 0 || z < 0 || w >= 9 || z >= 9)
continue;
if(b[w][z].getText()!="")
continue;
if (b[w][z].isMine())
continue;
if (hash[w][z])
continue;
hash[w][z] = true;
if (b[w][z].num == 0) {
queue[tail] = new node();
queue[tail].x = w;
queue[tail].y = z;
tail++;
if (b[w][z].isEnabled()) {
b[w][z].setEnabled(false);
elas--;
}
b[w][z].setText("-");
}
}
}
if (elas == 0) {
showall();
state.setText("WIN");
}
}
@Override
Mineb temp = (Mineb) e.getSource();
if (temp.getText() == "P" || temp.getText() == "?") {
} else {
if (temp.isMine()) {
showall();
state.setText("LOSE");
} else {
if (temp.num == 0) {
showsame(temp.x, temp.y);
temp.setText("-");
} else {
temp.
setText(String.
valueOf(temp.
num));
}
}
if (temp.isEnabled()) {
temp.setEnabled(false);
elas--;
}
if (elas == 0) {
showall();
state.setText("WIN");
}
}
if (temp.getText() == "P" || this.last == 0) {
if (temp.getText() == "P")
this.last++;
temp.setText("?");
} else if (temp.getText() == "?") {
temp.setText("");
} else {
temp.setText("P");
this.last--;
}
state.
setText(String.
valueOf(this.
last));
}
}
@Override
// TODO Auto-generated method stub
}
@Override
// TODO Auto-generated method stub
}
@Override
// TODO Auto-generated method stub
}
@Override
// TODO Auto-generated method stub
}
</code>//源代码片段来自云代码http://yuncode.net