Java编写的扫雷小程序Word格式.docx
- 文档编号:7798659
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:22
- 大小:397.64KB
Java编写的扫雷小程序Word格式.docx
《Java编写的扫雷小程序Word格式.docx》由会员分享,可在线阅读,更多相关《Java编写的扫雷小程序Word格式.docx(22页珍藏版)》请在冰点文库上搜索。
privateContainermyContainer
privateGridLayoutmyLayout;
implements
ActionListener{
privateprivateprivateprivateprivateprivateprivateprivateprivateprivate
JPanelmyPanelMain;
JPanelmyPanel;
JToolBarmyTool;
JLabeltime;
JLabellabelTime;
JLabelbombNum;
JLabellabelBombNumJMenuBarmenuBar;
JMenumenuE,menuH;
JMenuItemmenuItemCZ
menuItemSZ
private
intnumBomb,
countTime,
leaveBomb
intmyRows,
myColumns;
intxis,yis
J
Timertimer;
ExtendButton[]
myButton
=null;
//初始化窗体
privatevoidInitView(){
numEnd;
//菜单初始化
this
.menuBar
=newJMenuBar();
.menuE=
newJMenu(
"
菜单(E)"
.menuH=
帮助(H)"
this.menuItemCZ=newJMenuItem(
);
重置"
);
ent.VK_C,InputEvent.
CTRL_MASK));
.menuItemCZ
.addActionListener(
.menuE.add(
this.menuItemCZ);
1
.menuItemSZ
=newJMenuItem(
设置
this.menuItemCZ.setAccelerator(KeyStroke.
this.menuItemCZ.setAccelerator(KeyStroke.ent.VK_S,InputEvent.CTRL_MASK));
this.menuItemSZ.addActionListener(
this.menuE.add(this.menuItemSZ);
this.menuBar.add(this.menuE);
this.menuBar.add(this.menuH);
setJMenuBar(this.menuBar);
//时间信息初始化
this.myTool=newJToolBar();
this.myTool.setLayout(this.myTool.setFloatable(BorderLayoutborderLayout=newGridLayout(1,4));
false);
newBorderLayout();
this.myPanelMain=newJPanel(borderLayout);
this.labelTime=newJLabel("
时间:
"
this.time=newJLabel();
this.time.setForeground(Color.RED);
PLAIN,20));
this.time.setFont(newFont("
font"
Font.
this.labelBombNum=newJLabel("
雷数:
this.bombNum=newJLabel();
//初始化myButton
privatevoidInitButton(){
BorderLayoutborderLayout=newBorderLayout();
this.leaveBomb=this.numBomb;
this.numEnd=(this.myRows*this.myColumns)-
this.leaveBomb
.myContainer=this.getContentPane();
.myLayout=newGridLayout(this.myRows,this
1,1);
ShowNum(10)).getImageIcon());
this.myButtonthis.myButtonthis.myButton//设置右键监听标记雷
[i].setButton_num(0);
[i].SetVisited(false);
[i].SetStatus(false);
this.myButton[i].addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEventevt){
if((evt.getModifiers()==
InputEvent.BUTTON3_MASK)){
intn二
((ExtendButton)evt.getSource()).getButton_num();
if(n==1){-
if(!
((ExtendButton)evt.getSource()).GetVisited()){
((ExtendButton)evt.getSource()).setButton_num(0);
((ExtendButton)evt.getSource()).setlcon((new
ShowNum(10)).getImageIcon());
leaveBomb++;
bombNum.setText(String.valueOf(leaveBomb));
}
}else{
((ExtendButton)evt.getSource()).setButton_num
(1);
ShowNum(11)).getImageIcon());
leaveBomb--;
});
this.myPanel.add(this.myButton[i]);
this.myButton[i].addActionListener(this);
System.gc();
this.SetBomb(this.numBomb);
show();
//时钟设置
intdelay=1000;
//创建一个监听事件
ActionListenerdrawClock=newActionListener(){
publicvoidactionPerformed(ActionEventevt){
countTime++;
time.setText(String.repaint();
valueOf(countTime));
};
//创建一个时间计数器,每一秒触发一次
this.timer=newTimer(delay,drawClock);
this.timer.start();
//重新初始化方法
(int
i=0;
i<
(
this.
myRows*this
[i].SetVisited(
false)
[i].SetStatus(
false);
[i].setText(
null);
[i].setIcon((
new
.myColumns);
i++){
privatevoidSetExtendButton(){for
.SetBomb(numBomb);
.countTime=0;
.timer.start();
.leaveBomb=numBomb;
.bombNum.setText(String.
valueOf(this.numBomb));
//布雷方法
.numEnd=(this.myRows*
this.myColumns)-leaveBomb
privateintint
voidSetBomb(intcount){counter=0;
tempint;
while(counter!
=count){
tempint=(int)(Math.random()*(this.myRows*this.myColumns));
this.myButton[tempint].GetStatus()){
this.myButton[tempint].SetStatus(true);
counter++;
//显示雷得方法
privatevoidShowBomb(){
for(inti=0;
(if(this.myButtonthis.myButtonShowNum(9)).getImageIcon());
this.myRows*this[i].GetStatus()){[i].setIcon((new
//监听点击扫雷方法
是否要继续?
privatevoidCheckButton(ExtendButtonTempButton){if(TempButton.GetStatus()){this.timer.stop();
JOptionPane.
Game"
JOptionPane.
this.ShowBomb();
II
inti=JOptionPane.showConfirmDialog(null,"
消息"
JOptionPane.YES_NO_OPTION);
if(JOptionPane.YES_OPTION==i){SetExtendButton();
this.dispose();
return;
CircleNum[6]=(CircleNum[6]>
(this.myRows*this.myColumns-1))?
-1:
CircleNum[6];
CircleNum[7]=TempButton.GetPostion()+this.myColumns+1;
CircleNum[7]=(CircleNum[7]>
(this.myRows*this.myColumns-1)||CircleNum[7]%this.myColumns==0)?
-1CircleNum[7];
8;
i++){if(CircleNum[i]!
=-1){if(myButton[CircleNum[i]].GetStatus()
&
!
myButton[CircleNum[i]].GetVisited()){
temp++;
//显示button图片过程
if(temp>
0){
TempButton.SetVisited(true);
TempButton.setIcon((new
ShowNum(temp)).getImageIcon());
temp=0;
}elseif(temp==0){
ShowNum(0)).getImageIcon());
if(CircleNum[i]!
=-1
CheckButton(myButton[CircleNum[i]]);
this.numEnd--;
if(this.numEnd==0){this.timer.stop();
恭喜你!
"
消息
JOptionPane.showMessageDialog(this"
JOptionPane.INFORMATION_MESSAGE);
ShowBomb();
//构造方法
publicGame(){
Dimensiondimension=
Toolkit.getDefaultToolkit().getScreenSize();
intx=(int)((dimension.getWidth()-400)/2);
inty=(int)((dimension.getHeight()-500)/2);
this.xis=300;
this.yis=400;
this.setBounds(x,y,this.xis,this.yis);
this.setTitle("
扫雷"
this.numBomb=10;
this.myRows=9;
this.myColumns=9;
this.InitView();
this.InitButton();
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}一一
publicGame(introw,intcolumn,intnumbomb){
Dimensiondimension二
intx=(int)((dimension.getWidth()-400)/2);
this.xis=310*column/9;
this.yis=300*row/9+100;
this.myRows=row;
this.myColumns=column;
this.numBomb=numbomb;
//监听方法
publicvoidactionPerformed(ActionEvente){
//对(this.myRows*this.myColumns)个button的监听进行处理
for(inti=0;
(this.myRows*this.myColumns);
if(e.getSource()==myButton[i]){
CheckButton((ExtendButton)e.getSource());
//重置按钮监听
if(e.getSource()==menultemCZ){
SetExtendButton();
//设置按钮进行监听
}elseif(e.getSource()==menultemSZ){
newViewReSet(this.myRows,this.myColumns,
this.numBomb);
this.dispose。
;
publicstaticvoidmain(String[]args){newGame();
/*****************************************************
创建一个button的实体类
*/packagecom.dhl.saolei;
importjavax.swing.JButton;
publicclassExtendButtonextendsJButton{
intButton_pos
intButton_num
boolean
Button
.Status
Button_
.Visited
public
intgetButton_num(){
returnButton_num
publicvoidsetButton_num(intbutton_num){
this.Button_num=button_num;
publicintSetPostion(intpos){
this.Button_pos=(pos>
=0)?
pos:
0;
returnthis.Button_pos;
}_
publicintGetPostion(){returnthis.Button_pos;
/*************************************************************
******
设置button显示图片
importjava.awt.Image;
importjavax.swing.lmageIcon;
publicclassShowNum{
privateintnum;
publicShowNum(intn){
this.num=n;
publicImageIcongetImageIcon(){
ImageIconimagelcon;
switch(num){
case0:
imageIcon二newImageIcon(
break;
case1:
case2:
case3:
case4:
case5:
case6:
case7:
imageIcon二new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 编写 扫雷 程序