Java编写的扫雷小程序doc.docx

上传人:b****8 文档编号:11074736 上传时间:2023-02-24 格式:DOCX 页数:26 大小:97.81KB
下载 相关 举报
Java编写的扫雷小程序doc.docx_第1页
第1页 / 共26页
Java编写的扫雷小程序doc.docx_第2页
第2页 / 共26页
Java编写的扫雷小程序doc.docx_第3页
第3页 / 共26页
Java编写的扫雷小程序doc.docx_第4页
第4页 / 共26页
Java编写的扫雷小程序doc.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Java编写的扫雷小程序doc.docx

《Java编写的扫雷小程序doc.docx》由会员分享,可在线阅读,更多相关《Java编写的扫雷小程序doc.docx(26页珍藏版)》请在冰豆网上搜索。

Java编写的扫雷小程序doc.docx

Java编写的扫雷小程序doc

整个程序使用了4个类:

Game用于启动程序,界面的布置,各种行列的算法。

ExtendButton继承了Jbutton用于新建button的各种属性

ShowNum监听到某个button后,计算出此button周围有几个雷,不同的雷对应不通的图片,类得到button上应加载的图片地址

ViewReSet此类用于新建一个窗口,用户输入自己想要的行、列、雷数,然后用新的行列雷数new一个新的Game

biaose

dise1

dise2

dise3

dise4

dise5

dise6

dise7

dise8

dise

lei

biaoji

 

/****************************************************************

运行类创建游戏主窗体

*/

packagecom.dhl.saolei;

importjava.awt.BorderLayout;

importjava.awt.Color;

importjava.awt.Container;

importjava.awt.Dimension;

importjava.awt.Font;

importjava.awt.GridLayout;

importjava.awt.Toolkit;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.InputEvent;

importjava.awt.event.KeyEvent;

importjava.awt.event.MouseAdapter;

importjava.awt.event.MouseEvent;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JMenu;

importjavax.swing.JMenuBar;

importjavax.swing.JMenuItem;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

importjavax.swing.JToolBar;

importjavax.swing.KeyStroke;

importjavax.swing.Timer;

publicclassGameextendsJFrameimplementsActionListener{

privateContainermyContainer;

privateGridLayoutmyLayout;

privateJPanelmyPanelMain;

privateJPanelmyPanel;

privateJToolBarmyTool;

privateJLabeltime;

privateJLabellabelTime;

privateJLabelbombNum;

privateJLabellabelBombNum;

privateJMenuBarmenuBar;

privateJMenumenuE,menuH;

privateJMenuItemmenuItemCZ,menuItemSZ;

privateintnumBomb,countTime,leaveBomb,numEnd;

privateintmyRows,myColumns;

privateintxis,yis;

privateTimertimer;

privateExtendButton[]myButton=null;

//初始化窗体

privatevoidInitView(){

//菜单初始化

this.menuBar=newJMenuBar();

this.menuE=newJMenu("菜单(E)");

this.menuH=newJMenu("帮助(H)");

this.menuItemCZ=newJMenuItem("重置");

this.menuItemCZ.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));

this.menuItemCZ.addActionListener(this);

this.menuE.add(this.menuItemCZ);

this.menuItemSZ=newJMenuItem("设置");

this.menuItemCZ.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));

this.menuItemSZ.addActionListener(this);

this.menuE.add(this.menuItemSZ);

this.menuBar.add(this.menuE);

this.menuBar.add(this.menuH);

setJMenuBar(this.menuBar);

//时间信息初始化

this.myTool=newJToolBar();

this.myTool.setLayout(newGridLayout(1,4));

this.myTool.setFloatable(false);

BorderLayoutborderLayout=newBorderLayout();

this.myPanelMain=newJPanel(borderLayout);

this.labelTime=newJLabel("时间:

");

this.time=newJLabel();

this.time.setForeground(Color.RED);

this.time.setFont(newFont("font",Font.PLAIN,20));

this.labelBombNum=newJLabel("雷数:

");

this.bombNum=newJLabel();

this.bombNum.setText(String.valueOf(this.numBomb));

this.bombNum.setForeground(Color.RED);

this.bombNum.setFont(newFont("font",Font.PLAIN,20));

this.myTool.add(this.labelTime);

this.myTool.add(this.time);

this.myTool.add(this.labelBombNum);

this.myTool.add(this.bombNum);

this.myPanelMain.add(this.myTool,borderLayout.NORTH);

}

//初始化myButton

privatevoidInitButton(){

BorderLayoutborderLayout=newBorderLayout();

this.leaveBomb=this.numBomb;

this.numEnd=(this.myRows*this.myColumns)-this.leaveBomb;

this.myContainer=this.getContentPane();

this.myLayout=newGridLayout(this.myRows,this.myColumns,1,1);

this.myPanel=newJPanel();

this.myPanel.setVisible(true);

this.myPanel.setLayout(myLayout);

this.myPanelMain.add(this.myPanel,borderLayout.CENTER);

this.myContainer.add(this.myPanelMain);

this.myButton=newExtendButton[(this.myRows*this.myColumns)];

for(inti=0;i<(this.myRows*this.myColumns);i++){

this.myButton[i]=newExtendButton();

this.myButton[i].SetPostion(i);

this.myButton[i].setIcon((newShowNum(10)).getImageIcon());

this.myButton[i].setButton_num(0);

this.myButton[i].SetVisited(false);

this.myButton[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()).setIcon((newShowNum(10)).getImageIcon());

leaveBomb++;

bombNum.setText(String.valueOf(leaveBomb));

}

}else{

if(!

((ExtendButton)evt.getSource()).GetVisited()){

((ExtendButton)evt.getSource()).setButton_num

(1);

((ExtendButton)evt.getSource()).setIcon((newShowNum(11)).getImageIcon());

leaveBomb--;

bombNum.setText(String.valueOf(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.valueOf(countTime));

repaint();

}

};

//创建一个时间计数器,每一秒触发一次

this.timer=newTimer(delay,drawClock);

this.timer.start();

}

//重新初始化方法

privatevoidSetExtendButton(){

for(inti=0;i<(this.myRows*this.myColumns);i++){

this.myButton[i].SetVisited(false);

this.myButton[i].SetStatus(false);

this.myButton[i].setText(null);

this.myButton[i].setIcon((newShowNum(10)).getImageIcon());

}

this.SetBomb(numBomb);

this.countTime=0;

this.timer.start();

this.leaveBomb=numBomb;

this.bombNum.setText(String.valueOf(this.numBomb));

this.numEnd=(this.myRows*this.myColumns)-leaveBomb;

}

//布雷方法

privatevoidSetBomb(intcount){

intcounter=0;

inttempint;

while(counter!

=count){

tempint=(int)(Math.random()*(this.myRows*this.myColumns));

if(!

this.myButton[tempint].GetStatus()){

this.myButton[tempint].SetStatus(true);

counter++;

}

}

}

//显示雷得方法

privatevoidShowBomb(){

for(inti=0;i<(this.myRows*this.myColumns);i++){

if(this.myButton[i].GetStatus()){

this.myButton[i].setIcon((newShowNum(9)).getImageIcon());

}

}

}

//监听点击扫雷方法

privatevoidCheckButton(ExtendButtonTempButton){

if(TempButton.GetStatus()){

this.timer.stop();

JOptionPane.showMessageDialog(null,"YouFailed!

","Game",JOptionPane.INFORMATION_MESSAGE);

this.ShowBomb();

inti=JOptionPane.showConfirmDialog(null,"是否要继续?

","消息",JOptionPane.YES_NO_OPTION);

if(JOptionPane.YES_OPTION==i){

SetExtendButton();

}else{

this.dispose();

}

return;

}

int[]CircleNum=newint[8];

inttemp=0;

if(!

TempButton.GetVisited()){

CircleNum[0]=TempButton.GetPostion()-this.myColumns-1;

CircleNum[0]=(CircleNum[0]<0||(CircleNum[0]+1)%this.myColumns==0)?

-1:

CircleNum[0];

CircleNum[1]=TempButton.GetPostion()-this.myColumns;

CircleNum[1]=(CircleNum[1]<0)?

-1:

CircleNum[1];

CircleNum[2]=TempButton.GetPostion()-this.myColumns+1;

CircleNum[2]=(CircleNum[2]<0||CircleNum[2]%this.myColumns==0)?

-1:

CircleNum[2];

CircleNum[3]=TempButton.GetPostion()-1;

CircleNum[3]=((CircleNum[3]+1)%this.myColumns==0)?

-1:

CircleNum[3];

CircleNum[4]=TempButton.GetPostion()+1;

CircleNum[4]=(CircleNum[4]%this.myColumns==0)?

-1:

CircleNum[4];

CircleNum[5]=TempButton.GetPostion()+this.myColumns-1;

CircleNum[5]=(CircleNum[5]>(this.myRows*this.myColumns-1)||(CircleNum[5]+1)%this.myColumns==0)?

-1:

CircleNum[5];

CircleNum[6]=TempButton.GetPostion()+this.myColumns;

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)?

-1:

CircleNum[7];

for(inti=0;i<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((newShowNum(temp)).getImageIcon());

temp=0;

}elseif(temp==0){

TempButton.SetVisited(true);

TempButton.setIcon((newShowNum(0)).getImageIcon());

for(inti=0;i<8;i++){

if(CircleNum[i]!

=-1&&!

myButton[CircleNum[i]].GetVisited()){

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=Toolkit.getDefaultToolkit().getScreenSize();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1