Java扫雷源代码
导入Java . awt . container;
导入Java . awt . font;
导入Java . awt . gridlayout;
导入Java . awt . insets;
导入Java . awt . event . action event;
导入Java . awt . event . action listener;
导入Java . awt . event . mouse adapter;
导入Java . awt . event . mouse event;
导入javax . swing . jbutton;
导入javax . swing . jframe;
导入javax . swing . jlabel;
导入javax . swing . jmenu;
导入javax . swing . jmenubar;
导入javax . swing . jmenuitem;
导入javax . swing . jpanel;
导入javax . swing . timer;
公共类ScanLei1扩展JFrame实现ActionListener{
private static final long serialVersionUID = 1L;
私有容器contentPane
私有JButton btn
私有JButton[]btns;
private JLabel b 1;
列兵JLabel b2
列兵JLabel b3
私人定时器Timer;
private int row = 9;
private int col = 9;
私有int bon = 10;
private int[][]a;
私有int b;
private int[]a 1;
private JPanel p,p1,p2,P3;
公共扫描1(字符串标题){
超级(标题);
content pane = getContentPane();
setSize(297,377);
this.setBounds(400,100,400,500);
setDefaultCloseOperation(JFrame。EXIT _ ON _ CLOSE);
timer =new Timer(1000,(action listener)this);
a = new int[row+2][col+2];
init GUI();
}
public void initGUI(){
P3 = new JPanel();
b = bon
JMenuBar menuBar = new JMenuBar();
JMenu menu 1 = new JMenu(" game ");
jmenu 2 = new jmenu(" help ");
j menuitem mi 1 = new j menuitem(" primary ");
JMenuItem mi2 = new JMenuItem(" intermediate ");
JMenuItem mi3 = new JMenuItem(" advanced ");
mi 1 . addactionlistener(this);
menu 1 . add(mi 1);
mi2 . addactionlistener(this);
menu 1 . add(mi2);
mi3 . addactionlistener(this);
menu 1 . add(mi3);
menubar . add(menu 1);
menubar . add(menu 2);
p3.add(菜单栏);
b 1 = new JLabel(bon+" ");
a 1 = new int[bon];
BTN = new JButton(" start ");
BTN . addactionlistener(this);
B2 = new JLabel(" 0 ");
b3 =新JLabel(" ");
btns = new JButton[row * col];
p = new JPanel();
p . set layout(new BorderLayout());
content pane . add(p);
p.add(p3,BorderLayout。北);
//combo = new jcombobox(new object[]{ " primary "," intermediate "," advanced " });
//添加监控
/* combo . additem listener(new item listener(){
}});*/
p 1 = new JPanel();
//在那个位置
//((flow layout)p 1 . get layout())。setAlignment( FlowLayout。对);
p 1 . add(b 1);
p 1 . add(BTN);
p 1 . add(B2);
p 1 . add(B3);
p.add(p3,BorderLayout。北);
p.add(p1,BorderLayout。中心);
p2 = new JPanel();
p2.setLayout(new GridLayout(row,col,0,0));
for(int I = 0;我& lt行*列;i++){
btns[I]= new JButton(" ");
btns[i]。setMargin(new Insets(0,0,0,0));
btns[i]。setFont(新字体(空,字体。粗体,25));
btns[i]。addActionListener(this);
btns[i]。addmouse listener(new normore mouse event());
p2 . add(btns[I]);
}
contentPane.add(p,BorderLayout。北);
contentPane.add(p2,BorderLayout。中心);
}
公共void go(){
set visible(true);
}
公共静态void main(String[] args){
新ScanLei1(“扫雷”)。go();
}
public void out(int[][] a,JButton[] btns,ActionEvent e,int i,int x,int y){
int p = 1;
if(a[x][y]==0){
a[x][y]= 10;
btns[i]。set enabled(false);//33
for(int l = y-1;l & lt= y+1;l++){
int m = x-1-1;
int n = l-1;
p = 1;
system . out . println(a[1][2]);
如果(n & gt-1 & amp;& ampn & ltcol & amp& ampm & gt-1 & amp;& ampm & lt行)
{
for(int q = 0;q & lt排与排。& ampp = = 1;q++){//col-& gt;排;
if((n+col * q)& gt;=(m * col))& amp;& amp((n+col * q)& lt;(m+1)*col)){
if(a[x-1][l]!= 0 & amp& ampa[x-1][l]!=10){
btns[n+col*q]。setText(a[x-1][l]+" ");
a[x-1][l]= 10;
btns[n+col*q]。set enabled(false);
}
else if(a[x-1][l]==0){
//a[x-1][l]= 10;
btns[n+col*q]。set enabled(false);
out(a,btns,e,n+col*q,x-1,l);////55////
a[x-1][l]= 10;
btns[n+col*q]。set enabled(false);
}
p = 0;
}
}
}
p = 1;
m = x;
如果(n & gt-1 & amp;& ampn & ltcol & amp& ampm & gt-1 & amp;& ampm & ltcol)
{
for(int q = 0;q & lt排与排。& ampp = = 1;q++){
if((n+col * q)& gt;=(m * col))& amp;& amp((n+col * q)& lt;(m+1)*col)){
if(a[x+1][l]!= 0 & amp& ampa[x+1][l]!=10){
btns[n+col*q]。setText(a[x+1][l]+" ");
a[x+1][l]= 10;
btns[n+col*q]。set enabled(false);
}
else if(a[x+1][l]==0){
out(a,btns,e,n+col*q,x+1,l);///55////
a[x+1][l]= 10;
btns[n+col*q]。set enabled(false);
}
p = 0;
}
}
}
}
int m = x-1;
int n = y-1-1;
p = 1;
如果(n & gt-1 & amp;& ampn & ltcol & amp& ampm & gt-1 & amp;& ampm & ltcol)
{
for(int q = 0;q & lt排与排。& ampp = = 1;q++){
if((n+col * q)& gt;=(m * col))& amp;& amp((n+col * q)& lt;(m+1)*col)){
if(a[x][y-1]!= 0 & amp& ampa[x][y-1]!=10){
btns[n+col*q]。setText(a[x][y-1]+" ");
a[x][y-1]= 10;
btns[n+col*q]。set enabled(false);
}
else if(a[x][y-1]==0){
out(a,btns,e,n+col*q,x,y-1);
a[x][y-1]= 10;
btns[n+col*q]。set enabled(false);
}
p = 0;
}
}
}
p = 1;
m = x-1;
n = y+1-1;
如果(n & gt-1 & amp;& ampn & ltcol & amp& ampm & gt-1 & amp;& ampm & ltcol)
{
for(int q = 0;q & lt排与排。& ampp = = 1;q++){
if((n+col * q)& gt;=(m * col))& amp;& amp((n+col * q)& lt;(m+1)*col)){
if(a[x][y+1]!= 0 & amp& ampa[x][y+1]!=10){
btns[n+col*q]。setText(a[x][y+1]+" ");
a[x][y+1]= 10;
btns[n+col*q]。set enabled(false);
}
else if(a[x][y+1]==0){
out(a,btns,e,n+col*q,x,y+1);
a[x][y+1]= 10;
btns[n+col*q]。set enabled(false);
}
p = 0;
}
}
}
}
}
public void action performed(action event e){
if(e . getactioncommand()= = " elemental "){
row = 9;
col = 9;
bon = 10;
a 1 = new int[bon];
b = bon
//setSize(297,377);
a = new int[row+2][col+2];
this . remove(p2);
timer . stop();
b 1 . settext(" 10 ");
B2 . settext(" 0 ");
B3 . settext(" ");
btns = new JButton[row * col];
p2 = new JPanel();
p2.setLayout(new GridLayout(row,col,0,0));
for(int I = 0;我& lt行*列;i++){
btns[I]= new JButton(" ");
btns[i]。setMargin(new Insets(0,0,0,0));
btns[i]。setFont(新字体(空,字体。粗体,25));
btns[i]。addActionListener(this);
btns[i]。addmouse listener(new normore mouse event());
p2 . add(btns[I]);
}
contentPane.add(p2,BorderLayout。中心);
//setSize(297,377);
this . pack();
for(int I = 0;我& lt行*列;i++){
btns[i]。setText(" ");
btns[i]。setEnabled(真);
}
for(int I = 0;我& lt行+2;i++){
for(int j = 0;j & ltcol+2;j++){
a[I][j]= 0;
}
}
} else if(e . getactioncommand()= = " intermediate "){
row = 16;
col = 16;
bon = 40
//setSize(33*col,33 * row+80);
a 1 = new int[bon];
a = new int[row+2][col+2];
b = bon
this . remove(p2);
timer . stop();
b 1 . settext(" 40 ");
B2 . settext(" 0 ");
B3 . settext(" ");
btns = new JButton[row * col];
p2 = new JPanel();
p2.setLayout(new GridLayout(row,col,0,0));
for(int I = 0;我& lt行*列;i++){
btns[I]= new JButton(" ");
btns[i]。setMargin(new Insets(0,0,0,0));
btns[i]。setFont(新字体(空,字体。粗体,25));
btns[i]。addActionListener(this);
btns[i]。addmouse listener(new normore mouse event());
p2 . add(btns[I]);
}
contentPane.add(p2,BorderLayout。中心);
this . pack();
//setSize(33*col,33 * row+80);
for(int I = 0;我& lt行*列;i++){
btns[i]。setText(" ");
btns[i]。setEnabled(真);
}
for(int I = 0;我& lt行+2;i++){
for(int j = 0;j & ltcol+2;j++){
a[I][j]= 0;
}
}
} else if(e . getactioncommand()= = " advanced "){
row = 16;
col = 32
bon = 99
setSize(33*col,33 * row+80);
a 1 = new int[bon];
a = new int[row+2][col+2];
b = bon
this . remove(p2);
timer . stop();
b 1 . settext(" 99 ");
B2 . settext(" 0 ");
B3 . settext(" ");
btns = new JButton[row * col];
p2 = new JPanel();
p2.setLayout(new GridLayout(row,col,0,0));
for(int I = 0;我& lt行*列;i++){
btns[I]= new JButton(" ");
btns[i]。setMargin(new Insets(0,0,0,0));
btns[i]。setFont(新字体(空,字体。粗体,25));
btns[i]。addActionListener(this);
btns[i]。addmouse listener(new normore mouse event());
p2 . add(btns[I]);
}
contentPane.add(p2,BorderLayout。中心);
//setSize(33*col,33 * row+80);
this . pack();
for(int I = 0;我& lt行*列;i++){
btns[i]。setText(" ");
btns[i]。setEnabled(真);
}
for(int I = 0;我& lt行+2;i++){
for(int j = 0;j & ltcol+2;j++){
a[I][j]= 0;
}
}
}
if(e.getSource()==btn){
timer . start();
b = bon
B3 . settext(" ");
//system . out . println(bon);
//空的
for(int I = 0;我& lt行*列;i++){
btns[i]。setText(" ");
btns[i]。setEnabled(真);
}
for(int I = 0;我& lt行+2;i++){
for(int j = 0;j & ltcol+2;j++){
a[I][j]= 0;
}
}
//生成随机数
for(int I = 0;我& ltboni++)
{ int p = 1;
int m =(int)(math . random()* row * col);
while(p==1){
int l = 1;
int j;
for(j = 0;j & lt我& amp& ampl = = 1;j++){
if(a1[j]==m){
m =(int)(math . random()* row * col);
l = 0;
}
}
if(j==i){
a 1[I]= m;
p = 0;
}
}
}
b 1 . settext(bon+" ");
B2 . settext(" 0 ");
//我的
for(int I = 0;我& ltboni++){
int x =(a 1[I]/col+1);
int y =(a 1[I]% col+1);
a[x][y]= 100;
}
for(int I = 0;我& lt行+2;i++){
for(int j = 0;j & ltcol+2;j++){
if(I = = 0 | | j = = 0 | | I = = row+1 | | j = = col+1){
a[I][j]= 0;
}
}
}
for(int I = 1;我& lt=行;i++){
for(int j = 1;j & lt= colj++){
if(a[i][j]!=100){
for(int l = j-1;l & lt= j+1;l++){
if(a[I-1][l]= = 100){
a[I][j]++;
}
if(a[I+1][l]= = 100){
a[I][j]++;
}
}
if(a[I][j-1]= = 100){
a[I][j]++;
}
if(a[I][j+1]= = 100){
a[I][j]++;
}
}
}
}
}
if(e.getSource()==timer)
{
String time=b2.getText()。trim();
int t = integer . parse int(time);
//system . out . println(t);
if(t & gt;=600){
timer . stop();
}否则{
t++;
B2 . settext(t+" ");
}
}
for(int I = 0;我& ltcol * rowi++){
if(btns[i].getText()!="★")
{
int x = I/col+1;
int y = I % col+1;
if(e . getsource()= = btns[I]& amp;& ampa[x][y]==100){
btns[i]。setText("★");
btns[i]。set enabled(false);
a[x][y]= 10;
for(int k = 0;k & ltcol * rowk++){
int m 1 = k/col+1;
int n 1 = k % col+1;
if(a[m1][n1]!= 10 & amp;& ampbtns[k]。getText()=="★"){
btns[k]。setText(" * o * ");
}
}
for(int j = 0;j & ltcol * rowj++){
int m = j/col+1;
int n = j % col+1;
if(a[m][n]==100){
btns[j]。setText("★");
btns[j]。set enabled(false);
B3.setText("你输了!!");
}
btns[j]。set enabled(false);
a[m][n]= 10;
}
timer . stop();
}
else if(e . getsource()= = btns[I]){
if(a[x][y]==0){
out(a,btns,e,I,x,y);
a[x][y]= 10;
btns[i]。set enabled(false);
}
if(a[x][y]!= 0 & amp& ampa[x][y]!=10){
btns[i]。setText(a[x][y]+" ");
btns[i]。set enabled(false);
a[x][y]= 10;
}
}
}else if(btns[i].getText()=="★"){
}
}
}
类NormoreMouseEvent扩展了MouseAdapter{
public void mouse clicked(mouse event e){
system . out . println(b);
for(int I = 0;我& ltcol * rowi++){
int x 1 = I/col+1;
int y 1 = I % col+1;
if(e . getsource()= = btns[I]& amp;& ampbtns[i]。getText()!= "★" & amp;& ampa[x1][y1]!=10)
{
if(e.getButton()==MouseEvent。按钮3){
btns[i]。setText("★");
B-;
if(b==0){
int flag = 0;
for(int j = 0;j & ltcol * rowj++){
int x = j/col+1;
int y = j % col+1;
if(a[x][y]= = 100 & amp;& ampbtns[j]。getText()=="★"){
flag++;
}
}
if(flag==bon){
timer . stop();
B3.setText("你赢了!");
}
}
b 1 . settext(b+ " ");
}
} else if(e . getsource()= = btns[I]& amp;& ampbtns[i]。getText()= = "★" & amp;& ampa[x1][y1]!=-1){
if(e.getButton()==MouseEvent。按钮3){
btns[i]。setText(" ");
b++;
如果(b & gtbon){
b 1 . settext(bon+" ");
}
否则{
b 1 . settext(b+ " ");
}
btns[i]。setEnabled(真);
}
}
}
}
}
}