java扫雷源代码1.docx
- 文档编号:3922968
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:12
- 大小:17.25KB
java扫雷源代码1.docx
《java扫雷源代码1.docx》由会员分享,可在线阅读,更多相关《java扫雷源代码1.docx(12页珍藏版)》请在冰点文库上搜索。
java扫雷源代码1
packagecom.bomb.UI;
importjavax.swing.JButton;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassBombextendsJButton{
publicintnum_x,num_y; //第几号方块
publicintBombRoundCount; //周围雷数
publicbooleanisBomb; //是否为雷
publicbooleanisClicked; //是否被点击
publicintBombFlag; //探雷标记
publicbooleanisRight; //是否点击右键
publicBomb(intx,inty)
{
BombFlag=0;
num_x=x;
num_y=y;
BombRoundCount=0;
isBomb=false;
isClicked=false;
isRight=false;
}
}
packagecom.bomb.UI;
importjava.awt.event.MouseListener;
importjavax.swing.JFrame;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassMainBombextendsJFrameimplementsActionListener,MouseListener{
publicJTextFieldtext;
publicLabelnowBomb,setBomb;
publicintBlockNum,BombNum; //当前方块数当前雷数
publicIconicon_bomb=newImageIcon("Bomb.gif"); //踩雷
publicIconicon_bomb_big=newImageIcon("bomb_big.gif"); //踩雷标记
publicIconicon_flag=newImageIcon("flag.gif"); //雷标记
publicIconicon_question=newImageIcon("question.gif"); //疑惑是否有雷
publicJButtonstart=newJButton("开始");
publicPanelMenuPamel=newPanel();
publicPanelmainPanel=newPanel();
publicBomb[][]bombButton;
/*界面设计*/
publicMainBomb()
{
super("扫雷 Aaron2004制作2004.8");
BlockNum=64;
BombNum=10;
Containerc=getContentPane();
c.setBackground(Color.gray);
c.setLayout(newBorderLayout());
text=newJTextField("10",3);
nowBomb=newLabel("当前雷数"+" "+BombNum+"");
setBomb=newLabel("设置地雷数");
start.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
BombNum=Integer.parseInt(text.getText().trim());
if(BombNum>=10&&BombNum<50)
replay();
else
{
JOptionPanemsg=newJOptionPane();
JOptionPane.showMessageDialog(null,"您设置的地雷数太多了,请重设!
","错误",2);
}
}
});
MenuPamel.add(setBomb);
MenuPamel.add(text);
MenuPamel.add(start);
MenuPamel.add(nowBomb);
c.add(MenuPamel,"North");
mainPanel.setLayout(newGridLayout((int)Math.sqrt(BlockNum),(int)Math.sqrt(BlockNum)));
bombButton=newBomb[(int)Math.sqrt(BlockNum)][];
for(inti=0;i<(int)Math.sqrt(BlockNum);i++)
{
bombButton[i]=newBomb[(int)Math.sqrt(BlockNum)];
}
for(inti=0;i<(int)Math.sqrt(BlockNum);i++)
for(intj=0;j<(int)Math.sqrt(BlockNum);j++)
{
bombButton[i][j]=newBomb(i,j);
bombButton[i][j].setForeground(Color.gray);
bombButton[i][j].addActionListener(this);
bombButton[i][j].addMouseListener(this);
}
for(inti=0;i<(int)Math.sqrt(BlockNum);i++)
for(intj=0;j<(int)Math.sqrt(BlockNum);j++)
mainPanel.add(bombButton[i][j]);
c.add(mainPanel,"Center");
startBomb();
setSize(400,400);
setLocation(350,200);
setResizable(false);
}
/*布雷*/
publicvoidstartBomb()
{
for(inti=0;i { intx=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1)); inty=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1)); if(bombButton[x][y].isBomb==true) i--;//再重新来一次.呵呵 else bombButton[x][y].isBomb=true; } } /*重新开始*/ publicvoidreplay() { BombNum=Integer.parseInt(text.getText().trim()); nowBomb.setText("当前雷数"+" "+BombNum+""); for(inti=0;i<(int)Math.sqrt(BlockNum);i++) for(intj=0;j<(int)Math.sqrt(BlockNum);j++) { bombButton[i][j].isBomb=false; bombButton[i][j].isClicked=false; bombButton[i][j].setEnabled(true); bombButton[i][j].setText(""); bombButton[i][j].setIcon(null); } startBomb(); } /*是否挖完了所有的雷*/ publicvoidisWin() { intfindBomb=0; //找到的地雷数 for(inti=0;i<(int)Math.sqrt(BlockNum);i++) for(intj=0;j<(int)Math.sqrt(BlockNum);j++) { if(bombButton[i][j].isBomb==true&&bombButton[i][j].isRight==true) findBomb++; } if(findBomb==Integer.parseInt(text.getText().trim())) { JOptionPanemsg=newJOptionPane(); JOptionPane.showMessageDialog(this,"您挖完了所有的雷,您胜利了! ","您胜利了",2); } } /*计算方块周围雷数*/ publicvoidCountRoundBomb() { for(inti=0;i<(int)Math.sqrt(BlockNum);i++){ for(intj=0;j<(int)Math.sqrt(BlockNum);j++){ intcount=0; //当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数 if(bombButton[i][j].isBomb! =true){ if((i-1>=0)&&(j-1>=0)){ if(bombButton[i-1][j-1].isBomb==true){ count+=1;//检测左上方空格是否是地雷 } } if((i-1>=0)){ if(bombButton[i-1][j].isBomb==true){ count+=1;//检测上方空格是否为地雷 } } if((i-1>=0)&&(j+1<=(int)Math.sqrt(BlockNum)-1)){ if(bombButton[i-1][j+1].isBomb==true){ count+=1;//检测右上方是否为地雷 } } if((j-1>=0)){ if(bombButton[i][j-1].isBomb==true){ count+=1;//检测左边是否为地雷 } } if((i>=0)&&(j+1<=(int)Math.sqrt(BlockNum)-1)){ if(bombButton[i][j+1].isBomb==true){ count+=1;//右边 } } if((j-1>=0)&&(i+1<=(int)Math.sqrt(BlockNum)-1)){ if(bombButton[i+1][j-1].isBomb==true){ count+=1;//左下 } } if((i+1<=(int)Math.sqrt(BlockNum)-1)){ if(bombButton[i+1][j].isBomb==true){ count+=1;//下 } if((j+1<=(int)Math.sqrt(BlockNum)-1)&&(i+1<=Math.sqrt(BlockNum)-1)){ if(bombButton[i+1][j+1].isBomb==true){ count+=1;//右下 } } bombButton[i][j].BombRoundCount=count; } } } } } /**当选中的位置为空,则翻开周围的地图**/ publicvoidisNull(Bomb[][]bombButton,BombClickecButton) { inti,j; i=ClickecButton.num_x; j=ClickecButton.num_y; if(ClickecButton.isBomb==true){ } else{ if((i-1>=0)&&(j-1>=0)){//检测左上方空格是否是空 if(bombButton[i-1][j-1].isBomb==false&&bombButton[i-1][j-1].isClicked==false&&bombButton[i-1][j-1].isRight==false){ bombButton[i-1][j-1].setText((bombButton[i-1][j-1].BombRoundCount)+""); bombButton[i-1][j-1].setEnabled(false); bombButton[i-1][j-1].isClicked=true; } } if((i-1>=0)){//检测上方空格是否为空 if(bombButton[i-1][j].isBomb==false&&bombButton[i-1][j].isClicked==false&&bombButton[i-1][j].isRight==false){ bombButton[i-1][j].setText((bombButton[i-1][j].BombRoundCount)+""); bombButton[i-1][j].setEnabled(false); bombButton[i-1][j].isClicked=true; } } if((i-1>=0)&&(j+1<=((int)Math.sqrt(BlockNum)-1))){//检测右上方是否为空 if(bombButton[i-1][j+1].isBomb==false&&bombButton[i-1][j+1].isClicked==false&&bombButton[i-1][j+1].isRight==false){ bombButton[i-1][j+1].setText((bombButton[i-1][j+1].BombRoundCount)+""); bombButton[i-1][j+1].setEnabled(false); bombButton[i-1][j+1].isClicked=true; } } if((j-1>=0)){//检测左边是否为空 if(bombButton[i][j-1].isBomb==false&&bombButton[i][j-1].isClicked==false&&bombButton[i][j-1].isRight==false){ bombButton[i][j-1].setText((bombButton[i][j-1].BombRoundCount)+""); bombButton[i][j-1].setEnabled(false); bombButton[i][j-1].isClicked=true; } } if((i>=0)&&(j+1<=((int)Math.sqrt(BlockNum)-1))){//检测右边空格是否是空 if(bombButton[i][j+1].isBomb==false&&bombButton[i][j+1].isClicked==false&&bombButton[i][j+1].isRight==false){ bombButton[i][j+1].setText((bombButton[i][j+1].BombRoundCount)+""); bombButton[i][j+1].setEnabled(false); bombButton[i][j+1].isClicked=true; } } if((j-1>=0)&&(i+1<=((int)Math.sqrt(BlockNum)-1))){//检测左下空格是否是空 if(bombButton[i+1][j-1].isBomb==false&&bombButton[i+1][j-1].isClicked==false&&bombButton[i+1][j-1].isRight==false){ bombButton[i+1][j-1].setText((bombButton[i+1][j-1].BombRoundCount)+""); bombButton[i+1][j-1].setEnabled(false); bombButton[i+1][j-1].isClicked=true; } } if((i+1<=((int)Math.sqrt(BlockNum)-1))){//检测下边空格是否是空 if(bombButton[i+1][j].isBomb==false&&bombButton[i+1][j].isClicked==false&&bombButton[i+1][j].isRight==false){ bombButton[i+1][j].setText((bombButton[i+1][j].BombRoundCount)+""); bombButton[i+1][j].setEnabled(false); bombButton[i+1][j].isClicked=true; } } if((j+1<=((int)Math.sqrt(BlockNum)-1))&&(i+1<=((int)Math.sqrt(BlockNum)-1))){//检测右下边空格是否是空 if(bombButton[i+1][j+1].isBomb==false&&bombButton[i+1][j+1].isClicked==false&&bombButton[i+1][j+1].isRight==false){ bombButton[i+1][j+1].setText((bombButton[i+1][j+1].BombRoundCount)+""); bombButton[i+1][j+1].setE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 扫雷 源代码