网站建设资讯

NEWS

网站建设资讯

java扫雷源代码带注释,简单扫雷源代码java

悬赏100元钱。注释一个java扫雷游戏源代码,就是把每行的意思写到后面就可以了!在线等。

import java.awt.*;

网站制作、成都网站制作,成都做网站公司-创新互联公司已向近1000家企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。

import javax.swing.*;

import java.util.Random;

import java.awt.event.*;

class Min extends JPanel //雷的类

{

//备注:鼠标的左键 = 1;右键 = 3;中键 = 2

private int flag = 0,statu = 0; //定义雷的属性 0:没有打开 1:打开 2:标示为雷 3:不确定

//flag = 0 不是雷 ; flag = 1是雷

private int but,count = 0; //but:哪一个鼠标键被按下去了 count:这个区域周围有多少个雷

private int mx = 0,my = 0,mw = 10; //定义雷的坐标和宽度

public Min() //构造函数

{

statu = 0;

}

public Min(int f,int x,int y,int w)

//构造函数

{

flag = f;

mx = x;

my = y;

mw = w;

}

public int getFlag(){return flag;}

public int getStatu(){return statu;}

public int getMx(){return mx;}

public int getMy(){return my;}

public int getMw(){return mw;}

public int getCount(){return count;}

public void setFlag(int f){flag = f;}

public void setCount(int c){count = c;}

public void setData(int f,int x,int y,int w,int s)

//传递值

{

flag = f;

mx = (x-1)*w;

my = (y-1)*w;

mw = w-1;

statu = s;

}

//根据你点击鼠标的不同来改变雷的属性

public int sendKey(int key)

{

//返回值,如果游戏结束则返回-1

int rtn = 1;

if(key == 3)

{

switch(statu)

{

case 1:

break;

case 2:

statu = 3;

break;

case 3:

statu = 0;

break;

case 0:

statu = 2;

break;

}

rtn = 1;

}

if(key == 1 statu == 0)

{

switch(flag)

{

case 0:

statu = 1;

rtn = 2;

break;

case 1:

statu = 1;

rtn = -1;

break;

}

}

return rtn;

}

}

class DrawPanel extends JPanel

{

private int i,j;

private int f = 0; //if f = 1 then game over ,if f =2 then win

private int chx = 0,chy = 0; //专门记录坐标x,y的值

private int msum = 6,ksum = 0; //msum:雷的个数,ksum:标示雷的个数

private int bx = 10,by = 10,bw = 40; //bx,by:棋盘的大小,bw:棋子的大小

public Min board[][] = {

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

};

// 画坐标为ax,ay区域的雷的状态

public void draw(Graphics g,int ax,int ay)

{

int x,y,w; // 坐标x,y;和宽度:w

int s,c,flag; //状态;雷的个数;

int cx = bw/2 - 4;

int cy = bw/2 + 4;

x = board[ax][ay].getMx();

y = board[ax][ay].getMy();

w = board[ax][ay].getMw();

s = board[ax][ay].getStatu();

c = board[ax][ay].getCount();

flag= board[ax][ay].getFlag();

switch(s)

{

case 0: //没有打开状态

{

g.setColor(Color.black);

g.fillRect(x,y,w,w);

break;

}

case 1: //打开状态

{

g.setColor(Color.blue);

g.fillRect(x,y,w,w);

if(c != 0 flag == 0) //此处没有雷

{

g.setColor(Color.red);

g.drawString(String.valueOf(c),x + cx,y + cy);

}

if(flag == 1) //此处有雷

{

g.setColor(Color.red);

g.fillRect(x,y,w,w);

g.setColor(Color.blue);

g.drawString(" 雷",x + cx,y + cy);

}

break;

}

case 2: //标雷状态

{

g.setColor(Color.green);

g.fillRect(x,y,w,w);

g.setColor(Color.blue);

g.drawString(" 旗",x + cx,y + cy);

break;

}

case 3: //不确定状态

{

g.setColor(Color.black);

g.fillRect(x,y,w,w);

g.setColor(Color.red);

g.drawString("?",x + cx,y + cy);

break;

}

default:

break;

}

}

// 没有图形器的绘图函数:画出坐标ax,ay的雷的状态和图形

public void draw(int ax,int ay)

{

Graphics g;

g = this.getGraphics();

draw(g,ax,ay);

}

//打开周围没有雷的地方,并且绘画所在区域点击左键触发

public int openNoMin(int ax,int ay)

{

int i,j;

if(ax1||ay1||axbx||ayby) return 0; //鼠标点击的区域出界了

if(board[ax][ay].getStatu() != 0) return 0; //如果此区域打开了,返回

board[ax][ay].sendKey(1); //如果返回值等于-1,就说明游戏结束

draw(ax,ay);

if(board[ax][ay].getFlag() == 1)

//如果游戏结束,把所有的雷都显示出来

{

for(i = 1;i=bx;i++)

{

for(j = 1;j = by;j++)

{

if(board[i][j].getFlag() == 1)

{

board[i][j].sendKey(1);

draw(i,j);

}

}

}

return -1;

}

//如果游戏没有结束

if(board[ax][ay].getCount() 0)

{

ksum ++;

return 1; //周围有雷,就不用打开周围地区

}

if(board[ax][ay].getCount() == 0 board[ax][ay].getFlag() == 0)

//周围没有雷,打开周围地区,直到有雷的地区

{

openNoMin(ax-1,ay-1);openNoMin(ax,ay-1);openNoMin(ax+1,ay-1);

openNoMin(ax-1,ay ); openNoMin(ax+1,ay );

openNoMin(ax-1,ay+1);openNoMin(ax,ay+1);openNoMin(ax+1,ay+1);

}

ksum ++;

return 1;

}

//计算坐标x,y的周围雷的个数

public int getCount(int ai,int aj)

{

int sum = 0;

if(board[ai][aj].getFlag() == 1)

{

return sum;

}

if(ai1aj1aibxajby)

{

sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==1aj==1)

{

sum = board[ai+1][aj ].getFlag()+

board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==1aj==by)

{

sum = board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai+1][aj ].getFlag();

}

if(ai==bxaj==1)

{

sum = board[ai-1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag();

}

if(ai==bxaj==by)

{

sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+

board[ai-1][aj ].getFlag();

}

if(ai==1aj1ajby)

{

sum = board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai+1][aj ].getFlag()+

board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==bxaj1ajby)

{

sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag();

}

if(ai1aibxaj==1)

{

sum = board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai1aibxaj==by)

{

sum = board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag();

}

return sum;

}

// 传入参数:几列,几行,宽度,雷数

public void initMin(int ax,int ay,int aw,int as)

{

int k = 1; //表明产生的第几个雷

Random r; //随机数

f = 0; //f=0表示游戏还没有结束

ksum = 0;

bx = ax;

by = ay;

bw = aw;

msum = as;

r = new Random();

//初始化底盘的值

for(i = 1;i = bx;i++)

{

for(j=1;j=by;j++)

{

board[i][j].setData(0,i,j,bw,0);

}

}

// 随机产生雷

while(k = msum)

{

i = r.nextInt(bx)+1;

j = r.nextInt(by)+1;

if(board[i][j].getFlag() != 1)

{

board[i][j].setFlag(1);

k++;

}

}

// 非雷区的周围有几个雷,初始化其值

for(i = 1;i = bx;i++)

{

for(j=1;j=by;j++)

{

board[i][j].setCount(getCount(i,j));

}

}

setBackground(Color.white);

repaint();

}

// 构造函数

public DrawPanel(int ax,int ay,int aw,int as)

{

initMin(ax,ay,aw,as);

addMouseListener(new MouseAdapter()

{

public void mousePressed(MouseEvent me)

{

int r;

if(f != 0) return; //如果游戏结束,返回

chx = me.getX();

chy = me.getY();

if(me.getButton() != 1)

{

board[chx/bw+1][chy/bw+1].sendKey(me.getButton());

draw(chx/bw+1,chy/bw+1);

}

else if(me.getButton() == 1)

{

if(openNoMin(chx/bw+1,chy/bw+1) == -1)

{

f = 1;

repaint();

}

else if ( ksum + msum == bx*by )

{

f = 2;

repaint();

}

}

}

}

);

}

// 重画所有的图形,包括一些修饰的图形

public void paint(Graphics g)

{

int x,y,w;

int s;

int cx = bw/2 - 4;

int cy = bw/2 + 4;

g.clearRect(0,0,600,600);

for(i=1;i=bx;i++)

{

for(j=1;j=by;j++)

{

draw(g,i,j);

}

}

if(f == 1)

{

Font f = new Font("11",1,70);

Font fo = g.getFont();

g.setColor(Color.white);

g.setFont(f);

//g.setSize();

g.drawString("Game Over",0,200);

g.setFont(fo);

}

if( f == 2 )

{

Font f = new Font("11",1,70);

Font fo = g.getFont();

g.setColor(Color.white);

g.setFont(f);

//g.setSize();

g.drawString("You win!",0,200);

g.setFont(fo);

}

}

};

// 主类和程序的入口

public class Mine extends JFrame implements ActionListener

{

Container cp = getContentPane();

JButton bt = new JButton("开局");

Label l1 = new Label("列:");

Label l2 = new Label("行:");

Label l3 = new Label("宽度:");

Label l4 = new Label("雷的个数:");

TextField tf1 = new TextField("10",2); //列

TextField tf2 = new TextField("10",2); //行

TextField tf3 = new TextField("40",2); //宽度

TextField tf4 = new TextField("15",2); //雷的个数

int x=10,y=10,w=40,sum=15;

DrawPanel dp = new DrawPanel(x,y,w,sum);

public Mine()

{

setBackground(Color.white);

cp.setLayout(null);

cp.add(dp);

cp.add(bt);

cp.add(tf1);

cp.add(tf2);

cp.add(tf3);

cp.add(tf4);

cp.add(l1);

cp.add(l2);

cp.add(l3);

cp.add(l4);

l1.setBounds(20 ,10,20,20);

tf1.setBounds(40,10,20,20);

l2.setBounds(70,10,20,20);

tf2.setBounds(90,10,20,20);

l3.setBounds(120,10,40,20);

tf3.setBounds(160,10,20,20);

l4.setBounds(190,10,60,20);

tf4.setBounds(250,10,20,20);

bt.setBounds(300,10,80,20);

dp.setBounds(20,40,x*w,y*w);

setResizable(false);

setSize(x*w+40,y*w+80);

setTitle(" 扫雷");

show();

bt.addActionListener(this);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{System.exit(0);}

}

);

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource() == bt)

{

//x = Integer.parseInt(tf1.getText());

//y = Integer.parseInt(tf2.getText());

//w = Integer.parseInt(tf3.getText());

sum = Integer.parseInt(tf4.getText());

setSize(x*w+40,y*w+80);

dp.setBounds(20,40,x*w,y*w);

show();

dp.initMin(x,y,w,sum);

}

}

public static void main(String args[])

{

new Mine();

}

};

求助Java扫雷源码注释

import java.awt.*;

import java.util.*;

import java.io.*;

import javax.swing.*;

import javax.swing.Timer;

import java.awt.event.*;

import javax.swing.border.*;

/**

* pTitle:扫雷/p

*

* pDescription:学JAVA以来做的第一个游戏,程序中可能还有些BUG,希望大家提出来供一起探讨,

* 如果要测试记录文件,可以把雷的数量改的少一点,

* arithmetic中的while(landmintTally99), button_mouseClicked中的

* if((landmineNum-1)==0),有3处,表示还剩的雷数.completeGame中的

* for (int i=0; i99; i++)/p

* pCopyright: Copyright (c) 2006/p

*

* pCompany: private /p

*

* @author cqp

* @version demo

*/

public class shaolei extends JFrame {

/**类的属性和控件实例化*/

ImageIcon ButtonIcon; //按钮的图片;

HashMap map = new HashMap(); //雷和数字的状态,键为位置(0-479),值为状态,0-6为数字,7为雷;

HashMap flag_landmine = new HashMap(); //按钮上打的标记,如问号,对勾和取消,8为标记雷,9为问号,10为默认值空;

JMenuBar file = new JMenuBar(); //菜单栏;

JMenu game = new JMenu(); //菜单按钮;

JMenuItem start = new JMenuItem(); //菜单项;

JMenuItem record = new JMenuItem(); //菜单项;

JMenuItem quit = new JMenuItem(); //菜单项;

JMenuItem clearReocrd = new JMenuItem();//菜单项;

JMenu help = new JMenu(); //菜单按钮;

JButton[] cardsBtn = new JButton[480]; //480个按钮;

JButton beginBtn = new JButton(); //开始按钮;

JPanel pane = new JPanel(); //雷区面板;

JPanel paneTime = new JPanel(); //记数器所在的面板;

JOptionPane saveRecord = new JOptionPane(); //保存记录对话框;

JTextField landmineTally = new JTextField("99");//所剩雷的计数器;

JTextField timeTally = new JTextField("0"); //时间计数器;

GridLayout gridLayout1 = new GridLayout(); //网格布局;

Timer timer; //线程设施;

String[] landmine = new String[99]; //存放雷的位置,用来判断雷的位置是否重复;

slFrame_button_actionAdatper[] buttonClick =new slFrame_button_actionAdatper[480];//雷区按钮的事件类;

int mouseKey=0; //得到鼠标先按下的哪个键,用来判断鼠标是否同时按下了左右键;

int timeCount = 0; //时间计数器;

/**构造方法*/

public shaolei() {

try {

jbInit();

} catch (Exception exception) {

exception.printStackTrace();

}

}

/**界面设置*/

private void jbInit() throws Exception {

getContentPane().setLayout(null);

this.setJMenuBar(file);

game.setText("游戏");

start.setText("开局");

start.addActionListener(new slFrame_start_actionAdapter(this));

record.setText("排行榜");

record.addActionListener(new slFrame_record_actionAdapter(this));

quit.setText("退出");

quit.addActionListener(new slFrame_quit_actionAdapter(this));

help.setText("帮助");

clearReocrd.setText("清除记录");

clearReocrd.addActionListener(new slFrame_clearReocrd_actionAdapter(this));

landmineTally.setBounds(new Rectangle(5, 5, 40, 25));

landmineTally.setBackground(new Color(0,0,0));

landmineTally.setForeground(new Color(255,0,0));

landmineTally.setFont(new java.awt.Font("Times New Roman", Font.BOLD, 20));

landmineTally.setBorder(BorderFactory.createBevelBorder(1));

landmineTally.setEditable(false);

timeTally.setBounds(new Rectangle(520, 5, 50, 25));

timeTally.setBackground(new Color(0,0,0));

timeTally.setForeground(new Color(255,0,0));

timeTally.setHorizontalAlignment(4);

timeTally.setFont(new java.awt.Font("Times New Roman", Font.BOLD, 20));

timeTally.setBorder(BorderFactory.createBevelBorder(0));

timeTally.setEditable(false);

beginBtn.setBounds(new Rectangle(250, 5, 25, 25));

beginBtn.setBorder(BorderFactory.createBevelBorder(0));

beginBtn.addActionListener(new slFrame_beginBtn_actionAdatper(this));

beginBtn.setIcon(createImageIcon("images/laugh.jpg"));

paneTime.setBounds(new Rectangle(0, 0, 585, 35));

paneTime.setBorder(BorderFactory.createEtchedBorder());

paneTime.setLayout(null);

paneTime.add(landmineTally);

paneTime.add(timeTally);

paneTime.add(beginBtn);

pane.setBounds(new Rectangle(0, 35, 590, 320));

pane.setLayout(gridLayout1);

gridLayout1.setColumns(30);

gridLayout1.setRows(16);

file.add(game);

file.add(help);

game.add(start);

game.add(record);

game.add(quit);

help.add(clearReocrd);

this.getContentPane().add(pane);

this.getContentPane().add(paneTime);

ActionListener listener = new ActionListener(){ //自定义线程

public void actionPerformed(ActionEvent e){

timeCount++;

timeTally.setText(Integer.toString(timeCount));

}

};

timer = new Timer(1000, listener); //增加线程,并每1秒执行一次;

for (int i=0;i480;i++) //实例化480个小按钮加到面板pane中

{

cardsBtn[i] = new JButton();

cardsBtn[i].setText(""); //按钮上的文字去掉;

cardsBtn[i].setBorder(null); //按钮的边框去掉;

pane.add(cardsBtn[i]);

}

}

/**主方法*/

public static void main(String[] args) {

shaolei frame = new shaolei();

frame.setSize(580,410);

frame.setTitle("扫雷");

frame.show();

frame.setResizable(false); //不能修改窗体大小

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点关闭按钮时直

}

/**自定义方法,用来给按钮增加图片*/

protected static ImageIcon createImageIcon(String path){

java.net.URL imgURL = shaolei.class.getResource(path);

if (imgURL != null) {

return new ImageIcon(imgURL);

} else {

System.err.println("Couldn't find file: " + path);

return null;

}

}

/**菜单按钮的事件,开始游戏*/

public void start_actionPerformed(ActionEvent e) {

start(); //初始化;

arithmetic(); //计算雷的位置;

calculate(); //计算雷的分布情况;

timer.start(); //时间线程开始;

}

/**开始游戏按钮的事件*/

public void beginBtn_mouseClicked(ActionEvent e){

start_actionPerformed(e); //直接调用菜单的事件;

}

/**自定义方法,游戏从这里开始,方法里对按钮的属性和状态进行初始化;*/

void start(){

timeCount=0; //时间从0开始;

landmineTally.setText("99");//所剩雷数为99;

for (int i = 0; i480; i++){

cardsBtn[i].setIcon(null); //清除按钮上的图片;

map.put( Integer.toString(i),Integer.toString(10)); //分布状态全为10,表示为空;

flag_landmine.put( Integer.toString(i),Integer.toString(10)); //标记状态全为10;

cardsBtn[i].removeMouseListener(buttonClick[i]); //去除雷区所有按钮的鼠标事件;

}

}

/**自定义方法,用来计算雷的分布位置*/

void arithmetic(){

Calendar time = Calendar.getInstance(); //日历类,得到当前时间;

int leed = time.get(Calendar.SECOND); //得到当前时间的秒;

Random rand = new Random(leed); //把秒数当个随机数的种子;

int tempRand; //临时随机数;

int landmintTally=0; //得到多少雷的计数器;

boolean flag=false; //标记是否重复;

int tempNum;

while(landmintTally 99){ //最多只能有99颗雷;

tempRand = (int)(rand.nextFloat()*480); //得随机数;

tempNum = Integer.parseInt(map.get(Integer.toString(tempRand)).toString());

if (tempNum == 7) continue; //如果重复执行一个数字;

landmine[landmintTally] = Integer.toString(tempRand); //把得到的位置放进字符串;

map.put(Integer.toString(tempRand),Integer.toString(7)); //把得到的位置放到map集合里,值为7,表示有雷;

landmintTally++; //计数器加1;

}

}

/**计算雷的分部情况,指一个按钮周围有多少雷;*/

void calculate()

{

int num; //按钮的状态;

int sum=0; //计数器,计算周围有几颗雷;

int leftUp, up, rightUp, left, right, leftDown, down, rightDown; //定义了8个位置

for (int i = 0; i480; i++)

{

leftUp = i-31;

up = i-30;

rightUp = i-29;

left = i-1;

right = i+1;

leftDown = i+29;

down = i+30;

rightDown= i+31;

cardsBtn[i].setBorder(BorderFactory.createBevelBorder(0)); //设置按钮的边框样式;

buttonClick[i] = new slFrame_button_actionAdatper(this,i); //实例化事件类;

cardsBtn[i].addMouseListener(buttonClick[i]); //给当前按钮添加鼠标事件;

num = Integer.parseInt(map.get(Integer.toString(i)).toString());//得到当前按钮的状态;

if (num == 7){

continue; //如果这个按钮的状态为雷,跳到下个按钮;

}

if (i == 0) { //左上角第一颗雷;

num = Integer.parseInt(map.get(Integer.toString(i)).toString());

if ( Integer.parseInt(map.get(Integer.toString(right)).toString()) == 7 ) sum++; //如果是雷计数器加1;

if ( Integer.parseInt(map.get(Integer.toString(down)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(rightDown)).toString()) == 7 ) sum++;

map.put(Integer.toString(0),Integer.toString(sum)); //把得到的数字放到当前的位置;

sum=0; //计数器清零;

continue; //下个按钮;

}else if (i == 29) { //右上角第一颗雷;

if ( Integer.parseInt(map.get(Integer.toString(left)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(leftDown)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(down)).toString()) == 7 ) sum++;

map.put(Integer.toString(i),Integer.toString(sum));

sum=0;

continue;

}else if (i == 450) { //左下角第一颗雷;

if ( Integer.parseInt(map.get(Integer.toString(right)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(up)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(rightUp)).toString()) == 7 ) sum++;

map.put(Integer.toString(i),Integer.toString(sum));

sum=0;

continue;

}else if (i == 479) { //右下角第一颗雷;

if ( Integer.parseInt(map.get(Integer.toString(left)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(leftUp)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(up)).toString()) == 7 ) sum++;

map.put(Integer.toString(i),Integer.toString(sum));

sum=0;

return;

}else if (i29){ //第一行;

if ( Integer.parseInt(map.get(Integer.toString(left)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(leftDown)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(down)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(right)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(rightDown)).toString()) == 7 ) sum++;

map.put(Integer.toString(i),Integer.toString(sum));

sum=0;

continue;

}else if (i450){ //最后一行;

if ( Integer.parseInt(map.get(Integer.toString(leftUp)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(up)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(rightUp)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(left)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(right)).toString()) == 7 ) sum++;

map.put(Integer.toString(i),Integer.toString(sum));

sum=0;

continue;

}else if ( (i%30) == 0 ){ //第一列;

if ( Integer.parseInt(map.get(Integer.toString(up)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(rightUp)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(right)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(down)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(rightDown)).toString()) == 7 ) sum++;

map.put(Integer.toString(i),Integer.toString(sum));

sum=0;

continue;

}else if ( ((i+1)%30) == 0 ){ //最后一列;

if ( Integer.parseInt(map.get(Integer.toString(leftUp)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(up)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(left)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(leftDown)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(down)).toString()) == 7 ) sum++;

map.put(Integer.toString(i),Integer.toString(sum));

sum=0;

continue;

}else{ //除去四周剩下的;

if ( Integer.parseInt(map.get(Integer.toString(leftUp)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(up)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(rightUp)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(left)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(right)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(leftDown)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(down)).toString()) == 7 ) sum++;

if ( Integer.parseInt(map.get(Integer.toString(rightDown)).toString()) == 7 ) sum++;

map.put(Integer.toString(i),Integer.toString(sum));

sum=0;

continue;

}

}

}

/**鼠标点击事件,参数i为点击按钮的位置 */

public void button_mouseClicked(MouseEvent e,int i){

int mKey = e.getButton(); //点击的哪个键;

int landmineNum = Integer.parseInt(landmineTally.getText().toString()); //所剩的雷数;

int num = Integer.parseInt(map.get(Integer.toString(i)).toString()); //当前按钮的状态;

int flag = Integer.parseInt(flag_landmine.get(Integer.toString(i)).toString());//当前按钮的标记状态;

if ( (mKey == 3) ( cardsBtn[i].getBorder()!= null)){ //点击为鼠标右键,并且边框不为空(空的表示已按亮开的);

if (flag == 10){ //如果没有标记,则改为标记状态;

flag_landmine.put(Integer.toString(i),Integer.toString(8));

ButtonIcon = createImageIcon("images/8.jpg");

cardsBtn[i].setIcon(ButtonIcon);

landmineTally.setText( Integer.toString(landmineNum - 1) );

if ( (landmineNum-1) == 0) //如果标记的雷数为99;

completeGame(); //完成游戏;

}else if (flag == 8){ //如果为标记状态,则改为问号;

flag_landmine.put(Integer.toString(i),Integer.toString(9));

ButtonIcon = createImageIcon("images/9.jpg");

cardsBtn[i].setIcon(ButtonIcon);

landmineTally.setText( Integer.toString(landmineNum + 1) );

if ( (landmineNum+1) == 0) //如果标记的雷数为99;

completeGame(); //完成游戏;

}else if (flag == 9){ //如果为问号,则取消标记;

flag_landmine.put(Integer.toString(i),Integer.toString(10));

cardsBtn[i].setIcon(null);

}

}else if (mKey == 1){ //如果点击为鼠标左键;

flag_landmine.put(Integer.toString(i),Integer.toString(10)); //先清除所点击按钮的标记状态;

if ( (landmineNum+1) == 0) //如果标记的雷数为99;

completeGame(); //完成游戏;

if (num == 7){ //如果铵钮的状态为雷,则结束游戏;

overGame(i);

}else if (num == 0){ //如果雷数为空

if ( flag == 8 ){ //如果已经标记为雷,计数器加1;

landmineTally.setText( Integer.toString(landmineNum + 1) );

}

ButtonIcon = createImageIcon("images/0.jpg");

cardsBtn[i].setIcon(ButtonIcon);

cardsBtn[i].setBorder(null);

display(i); //亮开周围的按钮;

}else { //数字为1-6之间,亮开按钮,并显示数字所对应的图片;

if ( flag == 8 ){ //如果已经标记为雷,计数器加1;

landmineTally.setText( Integer.toString(landmineNum + 1) );

}

ButtonIcon = createImageIcon("images/"+num+".jpg");

cardsBtn[i].setIcon(ButtonIcon);

cardsBtn[i].setBorder(null);

}

}

if ( (mouseKey==1 mKey == 3) || (mouseKey==3 mKey == 1) ){ //鼠标左右键同时点按下;

open(i); //亮开周围的按钮(先判断);

}

mouseKey = 0;

}

/**自定义方法,用来判断是否要亮开周围的按钮*/

void open(int i){

int landmineAmount = 0; //实际的雷数;

int flagAmount=0; //标记的雷数;

int landmine_leftUp=0, landmine_up=0, landmine_rightUp=0, landmine_left=0, landmine_right=0,

landmine_leftDown=0, landmine_down=0, landmine_rightDown=0; //定义了实际雷的8个位置

int flag_leftUp=0, flag_up=0, flag_rightUp=0, flag_left=0, flag_right=0,

flag_leftDown=0, flag_down=0, flag_rightDown=0; //定义了标记雷的8个位置

//实际雷所在的8个位置和标记雷的8个位置,如果不加判断则hashMap集合会越界;

if (i 31) landmine_leftUp = Integer.parseInt(map.get(Integer.toString(i-31)).toString());

if (i 30) landmine_up = Integer.parseInt(map.get(Integer.toString(i-30)).toString());

if (i 29) landmine_rightUp = Integer.parseInt(map.get(Integer.toString(i-29)).toString());

if (i 1) landmine_left = Integer.parseInt(map.get(Integer.toString(i-1)).toString());

if (i 479) landmine_right = Integer.parseInt(map.get(Integer.toString(i+1)).toString());

if (i 450) landmine_leftDown = Integer.parseInt(map.get(Integer.toString(i+29)).toString());

if (i 449) landmine_down = Integer.parseInt(map.get(Integer.toString(i+30)).toString());

if (i 448) landmine_rightDown = Integer.parseInt(map.get(Integer.toString(i+31)).toString());

if (i 31) flag_leftUp = Integer.parseInt(flag_landmine.get(Integer.toString(i-31)).toString());

if (i 30) flag_up = Integer.parseInt(flag_landmine.get(Integer.toString(i-30)).toString());

if (i 29) flag_rightUp = Integer.parseInt(flag_landmine.get(Integer.toString(i-29)).toString());

if (i 1) flag_left = Integer.parseInt(flag_landmine.get(Integer.toString(i-1)).toString());

if (i 479) flag_right = Integer.parseInt(flag_landmine.get

太长了写不完,我把压缩包发给你吧,49905518注意查收

求一个java扫雷游戏的程序源代码,尽量多点注释,要确实可用的!急急急急急急急急急急急急!!!!!

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.Insets;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.Timer;

public class ScanLei1 extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L;

private Container contentPane;

private JButton btn;

private JButton[] btns;

private JLabel b1;

private JLabel b2;

private JLabel b3;

private Timer timer;

private int row=9;

private int col=9;

private int bon=10;

private int[][] a;

private int b;

private int[] a1;

private JPanel p,p1,p2,p3;

public ScanLei1(String title){

super(title);

contentPane=getContentPane();

setSize(297,377);

this.setBounds(400, 100, 400, 500);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

timer =new Timer(1000,(ActionListener) this);

a = new int[row+2][col+2];

initGUI();

}

public void initGUI(){

p3=new JPanel();

b=bon;

JMenuBar menuBar=new JMenuBar();

JMenu menu1=new JMenu("游戏");

JMenu menu2=new JMenu("帮助");

JMenuItem mi1=new JMenuItem("初级");

JMenuItem mi2 = new JMenuItem("中级");

JMenuItem mi3 =new JMenuItem("高级");

mi1.addActionListener(this);

menu1.add(mi1);

mi2.addActionListener(this);

menu1.add(mi2);

mi3.addActionListener(this);

menu1.add(mi3);

menuBar.add(menu1);

menuBar.add(menu2);

p3.add(menuBar);

b1=new JLabel(bon+"");

a1=new int[bon];

btn =new JButton("开始");

btn.addActionListener(this);

b2=new JLabel("0");

b3=new JLabel("");

btns=new JButton[row*col];

p=new JPanel();

p.setLayout(new BorderLayout());

contentPane.add(p);

p.add(p3,BorderLayout.NORTH);

//combo=new JComboBox(new Object[]{"初级","中级","高级"} );

//加监听

/*combo.addItemListener(new ItemListener(){

}});*/

p1=new JPanel();

//在那个位置

//(( FlowLayout)p1.getLayout()).setAlignment( FlowLayout.RIGHT);

p1.add(b1);

p1.add(btn);

p1.add(b2);

p1.add(b3);

p.add(p3,BorderLayout.NORTH);

p.add(p1,BorderLayout.CENTER);

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;irow*col;i++){

btns[i]=new JButton("");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

contentPane.add(p,BorderLayout.NORTH);

contentPane.add(p2,BorderLayout.CENTER);

}

public void go(){

setVisible(true);

}

public static void main(String[] args){

new 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].setEnabled(false); //33

for(int l=y-1;l=y+1;l++){

int m=x-1-1;

int n=l-1;

p=1;

System.out.println(a[1][2]);

if(n-1ncolm-1mrow)

{

for(int q=0;qrowp==1;q++){//col--row;

if(((n+col*q)=(m*col))((n+col*q)(m+1)*col)){

if(a[x-1][l]!=0a[x-1][l]!=10){

btns[n+col*q].setText(a[x-1][l]+"");

a[x-1][l]=10;

btns[n+col*q].setEnabled(false);

}

else if(a[x-1][l]==0){

//a[x-1][l]=10;

btns[n+col*q].setEnabled(false);

out(a,btns,e,n+col*q,x-1,l); ////55////

a[x-1][l]=10;

btns[n+col*q].setEnabled(false);

}

p=0;

}

}

}

p=1;

m=x;

if(n-1ncolm-1mcol)

{

for(int q=0;qrowp==1;q++){

if(((n+col*q)=(m*col))((n+col*q)(m+1)*col)){

if(a[x+1][l]!=0a[x+1][l]!=10){

btns[n+col*q].setText(a[x+1][l]+"");

a[x+1][l]=10;

btns[n+col*q].setEnabled(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].setEnabled(false);

}

p=0;

}

}

}

}

int m=x-1;

int n=y-1-1;

p=1;

if(n-1ncolm-1mcol)

{

for(int q=0;qrowp==1;q++){

if(((n+col*q)=(m*col))((n+col*q)(m+1)*col)){

if(a[x][y-1]!=0a[x][y-1]!=10){

btns[n+col*q].setText(a[x][y-1]+"");

a[x][y-1]=10;

btns[n+col*q].setEnabled(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].setEnabled(false);

}

p=0;

}

}

}

p=1;

m=x-1;

n=y+1-1;

if(n-1ncolm-1mcol)

{

for(int q=0;qrowp==1;q++){

if(((n+col*q)=(m*col))((n+col*q)(m+1)*col)){

if(a[x][y+1]!=0a[x][y+1]!=10){

btns[n+col*q].setText(a[x][y+1]+"");

a[x][y+1]=10;

btns[n+col*q].setEnabled(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].setEnabled(false);

}

p=0;

}

}

}

}

}

public void actionPerformed(ActionEvent e) {

if(e.getActionCommand()=="初级"){

row=9;

col=9;

bon=10;

a1=new int[bon];

b=bon;

//setSize(297,377);

a = new int[row+2][col+2];

this.remove(p2);

timer.stop();

b1.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;irow*col;i++){

btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

contentPane.add(p2,BorderLayout.CENTER);

//setSize(297,377);

this.pack();

for(int i=0;irow*col;i++){

btns[i].setText(" ");

btns[i].setEnabled(true);

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

a[i][j]=0;

}

}

}else if(e.getActionCommand()=="中级"){

row=16;

col=16;

bon=40;

//setSize(33*col,33*row+80);

a1=new int[bon];

a = new int[row+2][col+2];

b=bon;

this.remove(p2);

timer.stop();

b1.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;irow*col;i++){

btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

contentPane.add(p2,BorderLayout.CENTER);

this.pack();

//setSize(33*col,33*row+80);

for(int i=0;irow*col;i++){

btns[i].setText("");

btns[i].setEnabled(true);

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

a[i][j]=0;

}

}

}else if(e.getActionCommand()=="高级"){

row=16;

col=32;

bon=99;

setSize(33*col,33*row+80);

a1=new int[bon];

a = new int[row+2][col+2];

b=bon;

this.remove(p2);

timer.stop();

b1.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;irow*col;i++){

btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

contentPane.add(p2,BorderLayout.CENTER);

//setSize(33*col,33*row+80);

this.pack();

for(int i=0;irow*col;i++){

btns[i].setText("");

btns[i].setEnabled(true);

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

a[i][j]=0;

}

}

}

if(e.getSource()==btn){

timer.start();

b=bon;

b3.setText("");

//System.out.println(bon);

//清空

for(int i=0;irow*col;i++){

btns[i].setText("");

btns[i].setEnabled(true);

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

a[i][j]=0;

}

}

//产生随机数

for(int i=0;ibon;i++)

{ int p=1;

int m=(int)(Math.random()*row*col);

while(p==1){

int l=1;

int j;

for( j=0;jil==1;j++){

if(a1[j]==m){

m=(int)(Math.random()*row*col);

l=0;

}

}

if(j==i){

a1[i]=m;

p=0;

}

}

}

b1.setText(bon+"");

b2.setText("0");

//布雷

for(int i=0;ibon;i++){

int x=(a1[i]/col+1);

int y=(a1[i]%col+1);

a[x][y]=100;

}

for(int i=0;irow+2;i++){

for(int j=0;jcol+2;j++){

if(i==0||j==0||i==row+1||j==col+1){

a[i][j]=0;

}

}

}

for(int i=1;i=row;i++){

for(int j=1;j=col;j++){

if(a[i][j]!=100){

for(int l=j-1;l=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.parseInt(time);

//System.out.println(t);

if(t=600){

timer.stop();

}else{

t++;

b2.setText(t+"");

}

}

for(int i=0;icol*row;i++){

if(btns[i].getText()!="★")

{

int x=i/col+1;

int y=i%col+1;

if(e.getSource()==btns[i]a[x][y]==100){

btns[i].setText("★");

btns[i].setEnabled(false);

a[x][y]=10;

for(int k=0;kcol*row;k++){

int m1=k/col+1;

int n1=k%col+1;

if(a[m1][n1]!=10btns[k].getText()=="★"){

btns[k].setText("*o*");

}

}

for(int j=0;jcol*row;j++){

int m=j/col+1;

int n=j%col+1;

if(a[m][n]==100){

btns[j].setText("★");

btns[j].setEnabled(false);

b3.setText("你输了 !!");

}

btns[j].setEnabled(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].setEnabled(false);

}

if(a[x][y]!=0a[x][y]!=10){

btns[i].setText(a[x][y]+"");

btns[i].setEnabled(false);

a[x][y]=10;

}

}

}else if(btns[i].getText()=="★"){

}

}

}

class NormoreMouseEvent extends MouseAdapter{

public void mouseClicked(MouseEvent e) {

System.out.println(b);

for(int i=0;icol*row;i++){

int x1=i/col+1;

int y1=i%col+1;

if(e.getSource()==btns[i]btns[i].getText()!="★"a[x1][y1]!=10)

{

if(e.getButton()==MouseEvent.BUTTON3){

btns[i].setText("★");

b--;

if(b==0){

int flag=0;

for(int j=0;jcol*row;j++){

int x=j/col+1;

int y=j%col+1;

if(a[x][y]==100btns[j].getText()=="★"){

flag++;

}

}

if(flag==bon){

timer.stop();

b3.setText("你赢了!");

}

}

b1.setText(b+"");

}

}else if(e.getSource()==btns[i]btns[i].getText()=="★"a[x1][y1]!=-1){

if(e.getButton()==MouseEvent.BUTTON3){

btns[i].setText("");

b++;

if(bbon){

b1.setText(bon+"");

}

else{

b1.setText(b+"");

}

btns[i].setEnabled(true);

}

}

}

}

}

}


文章名称:java扫雷源代码带注释,简单扫雷源代码java
网页链接:http://njwzjz.com/article/hspjgs.html