📄 bumb.java
字号:
b1.addActionListener(this);
JButton b2=new JButton("确定");
b2.addActionListener(this);
ta=new JTextArea();
ta.setSize(265,80);
b1.setSize(90,20);
b2.setSize(60,20);
ta.setText(data);
h.add(ta,"North");
h.add(b1);
b1.setLocation(40,80);
b2.setLocation(180,80);
h.add(b2);
h.setVisible(true);
}
if(e.getActionCommand()=="目录(C) F1")//选择菜单栏中的目录选项来打开目录文件
{
try
{
Runtime.getRuntime().exec("cmd.exe /c start file//help.chm");
}
catch(IOException f)
{
}
}
if(e.getActionCommand()=="使用帮助主题(S)...")//选择菜单栏中的使用帮助主题选项
{
try
{
Runtime.getRuntime().exec("cmd.exe /c start file//help.chm");
}
catch(IOException f)
{
}
}
if(e.getActionCommand()=="使用帮助(H)")//选择菜单栏中的目使用帮助选项来打开帮助文件
{
try
{
Runtime.getRuntime().exec("cmd.exe /c start file//mine.chm");
}
catch(IOException f)
{
}
}
if(e.getActionCommand()=="关于扫雷(A)")
{
try
{
Runtime.getRuntime().exec("cmd.exe /c start image//扫雷玩法.bmp");
}
catch(IOException f)
{
}
}
}
//********************************************************************************************//定义结束
//********************************************************************************************//对MouseListener接口进行定义
public void mouseDragged(MouseEvent e)//鼠标拖动事件
{
}
public void mouseMoved(MouseEvent e)//鼠标移动事件
{
}
public void mousePressed(MouseEvent e)//鼠标按下事件
{
if(e.getButton()==MouseEvent.BUTTON1)
{
ImageIcon unknown=new ImageIcon("Image/unknown.jpg");//设置左键按下去时label的显示状态
for(int i=0;i<81;i++)
{
if(e.getSource().equals(label[i])&&haveFlag[i]==false)
label[i].setIcon(unknown);
}
ImageIcon pressed=new ImageIcon("Image/pressed.jpg");//设置左键按下去时标签按钮的显示状态
b.setIcon(pressed);
}
if(e.getButton()==MouseEvent.BUTTON3)//鼠标按下右键
{
for(int i=0;i<81;i++)
{
if(e.getSource().equals(label[i]))
{
if(haveFlag[i]==false)//该雷还没有插上小旗
{
if(sign==false)//假如没有标记的情况
{
if(haveSign[i]==true)//在取消标记但是标记仍然存在的情况下
{
ImageIcon gray=new ImageIcon("Image/gray.jpg");
label[i].setIcon(gray);
haveFlag[i]=false;
haveSign[i]=false;
}
else
{
ImageIcon flag=new ImageIcon("Image/flag.jpg");
label[i].setIcon(flag);
String s=label1.getText();
int amount=Integer.parseInt(s);
amount--;
if(amount>=0)
s="00"+String.valueOf(amount);
if(amount<0)
s="-0"+String.valueOf(amount*(-1));
if(amount<=-10)
s="-"+String.valueOf(amount*(-1));
label1.setText(s);
haveFlag[i]=true;
}
}
else //在有标记的情况下
{
if(haveSign[i]==false)//假如有雷上面没有问号
{
ImageIcon flag=new ImageIcon("Image/flag.jpg");
label[i].setIcon(flag);
String s=label1.getText();
int amount=Integer.parseInt(s);
amount--;
if(amount>=0)
s="00"+String.valueOf(amount);
if(amount<0)
s="-0"+String.valueOf(amount*(-1));
if(amount<=-10)
s="-"+String.valueOf(amount*(-1));
label1.setText(s);
haveFlag[i]=true;
haveSign[i]=false;
}
else //假如雷上有问号
{
ImageIcon gray=new ImageIcon("Image/gray.jpg");
label[i].setIcon(gray);
haveFlag[i]=false;
haveSign[i]=false;
}
}
}
else //雷上有小旗的情况
{
if(sign==false)//没有标记时的情况
{
ImageIcon gray=new ImageIcon("image/gray.jpg");
label[i].setIcon(gray);
String s=label1.getText();
int amount=Integer.parseInt(s);
amount++;
s="00"+String.valueOf(amount);
if(amount==10)
s="010";
if(amount<0)
s="-0"+String.valueOf(amount*(-1));
if(amount<=-10)
s="-"+String.valueOf(amount*(-1));
label1.setText(s);
haveFlag[i]=false;
}
else //有标记的情况
{
ImageIcon qs_up=new ImageIcon("image/qs_up.jpg");
label[i].setIcon(qs_up);
String s=label1.getText();
int amount=Integer.parseInt(s);
amount++;
s="00"+String.valueOf(amount);
if(amount==10)
s="010";
if(amount<0)
s="-0"+String.valueOf(amount*(-1));
if(amount<=-10)
s="-"+String.valueOf(amount*(-1));
label1.setText(s);
haveFlag[i]=false;
haveSign[i]=true;
}
}
break;//退出循环
}
}
}
}
public void mouseReleased(MouseEvent e)//鼠标释放事件
{
if(e.getButton()==e.BUTTON1)
{
int x=0,y=0,i;
int amount=0;//定义一个方格周围的雷的个数
for( i=0;i<81;i++)
{
if(e.getSource().equals(label[i]))
{
x=i%9;
y=i/9;
break;
}
}
if(haveFlag[i]==true)
{
ImageIcon smile=new ImageIcon("image/smile.jpg");
b.setIcon(smile);
}
if(timeThread==null)//启用计时器
{
label2.setText("001");
timeThread=new Thread(this);
timeThread.start();
}
if(position[y][x]==1&&haveFlag[i]==false) //踩到了地雷
{
timeThread.stop();
if(haveSound)
{
try
{
InputStream in=new FileInputStream("sound/lost.WAV");
AudioStream aslost=new AudioStream(in);
AudioPlayer.player.start(aslost);
}
catch(FileNotFoundException f)
{
}
catch(IOException g)
{
}
}
ImageIcon lost=new ImageIcon("image/lost.jpg");
b.setIcon(lost);
ImageIcon blown=new ImageIcon("image/blown.jpg");
ImageIcon wrong=new ImageIcon("image/wrong.jpg");
label[i].setIcon(blown);
for(int k=0;k<9;k++)
for(int j=0;j<9;j++)
{
if(position[k][j]==1)//判断正确的情况下
{
ImageIcon bumb=new ImageIcon("image/bumb.jpg");
label[k*9+j].setIcon(bumb);
}
if(position[k][j]==0&&haveFlag[k*9+j])
{
label[k*9+j].setIcon(wrong);
}
}
label[i].setIcon(blown);
for(int temp=0;temp<81;temp++)//取消监听器
label[temp].removeMouseListener(this);
}
if(position[y][x]==0&&haveFlag[i]==false)//没有踩到地雷的情况
{
ImageIcon smile=new ImageIcon("image/smile.jpg");
b.setIcon(smile);
search(x,y);//探寻该雷周围的情况
}
//*******************************************************************************//判断扫雷是否扫雷胜利
int judge[][]=new int[9][9];
win=true;
for(int k=0;k<9;k++)
for(int j=0;j<9;j++)
{
if(haveFlag[k*9+j])
judge[k][j]=1;
else
{
if(isAlive[k][j])
{
judge[k][j]=2;
}
}
}
outer: for(int k=0;k<9;k++)
for(int j=0;j<9;j++)
if(judge[k][j]!=position[k][j])
{
win=false;
break outer;
}
if(win)//胜利的情况下
{
timeThread.stop();
second=time;
if(haveSound)
{
try
{
InputStream in=new FileInputStream("sound/win.WAV");
AudioStream aswin=new AudioStream(in);
AudioPlayer.player.start(aswin);
}
catch(FileNotFoundException f)
{
}
catch(IOException g)
{
}
}
ImageIcon win=new ImageIcon("image/win.jpg");
b.setIcon(win);
for(int k=0;k<81;k++)
label[k].removeMouseListener(this);
try
{
BufferedReader bw=new BufferedReader(new FileReader("data.txt"));
bw.readLine();
int temp=Integer.parseInt(bw.readLine());
if(time<temp)//打破记录
{
fm=new JFrame("win");
fm.setSize(140,200);
fm.setLayout(null);
JTextArea t1=new JTextArea();
t1.setText("你已经破初级记录\n请输入尊姓大名");
t2=new JTextField("匿名");
t1.setEditable(false);
t1.setSize(200,40);
t2.setEditable(true);
t2.setForeground(Color.CYAN);
t2.setSize(100,20);
fm.setVisible(true);
fm.add(t1);
fm.add(t2);
t1.setLocation(20,40);
t2.setLocation(20,80);
JButton b=new JButton("确定 ");
b.addActionListener(this);
b.setSize(70,20);
fm.add(b);
b.setLocation(20,110);
}
}//判断是否打破记录
catch(FileNotFoundException f)
{
}
catch(IOException f)
{
}
}
}
//*******************************************************************************//定义结束
//*******************************************************************************//判断扫雷是否扫雷胜利
else
{
int judge[][]=new int[9][9];
win=true;
for(int k=0;k<9;k++)
for(int j=0;j<9;j++)
{
if(haveFlag[k*9+j])
judge[k][j]=1;
else
{
if(isAlive[k][j])
{
judge[k][j]=2;
}
}
}
outer: for(int k=0;k<9;k++)
for(int j=0;j<9;j++)
if(judge[k][j]!=position[k][j])
{
win=false;
break outer;
}
if(win)//胜利的情况下
{
second=time;
timeThread.stop();
if(haveSound)
{
try
{
InputStream in=new FileInputStream("sound/win.WAV");
AudioStream aswin=new AudioStream(in);
AudioPlayer.player.start(aswin);
}
catch(FileNotFoundException f)
{
}
catch(IOException g)
{
}
try
{
BufferedReader bw=new BufferedReader(new FileReader("data.txt"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -