Java編寫的掃雷小程序_第1頁
Java編寫的掃雷小程序_第2頁
Java編寫的掃雷小程序_第3頁
Java編寫的掃雷小程序_第4頁
Java編寫的掃雷小程序_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

整個程序使用了4個類:Game用于啟動程序,界面的布置,各種行列的算法。ExtendButton繼承了Jbutton用于新建button的各種屬性ShowNum監(jiān)聽到某個button后,計算出此button周圍有幾個雷,不同的雷對應(yīng)不通的圖片,類得到button上應(yīng)加載的圖片地址ViewReSet此類用于新建一個窗口,用戶輸入自己想要的行、列、雷數(shù),然后用新的行列雷數(shù)new一個新的Gamebiaosedise1dise2dise3dise4dise5dise6dise7dise8diseleibiaoji/****************************************************************運行類創(chuàng)建游戲主窗體*/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; 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(); //時鐘設(shè)置 intdelay=1000;// 創(chuàng)建一個監(jiān)聽事件 ActionListenerdrawClock=newActionListener(){ publicvoidactionPerformed(ActionEventevt){ countTime++; time.setText(String.valueOf(countTime)); repaint(); } };// 創(chuàng)建一個時間計數(shù)器,每一秒觸發(fā)一次 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()); } } } //監(jiān)聽點擊掃雷方法 privatevoidCheckButton(ExtendButtonTempButton){ if(TempButton.GetStatus()){ this.timer.stop(); JOptionPane.showMessageDialog(null,"YouFailed!","Game",JOptionPane.INFORMATION_MESSAGE); this.ShowBomb();inti=JOptionPane.showConfirmDialog(null,"是否要繼續(xù)?","消息",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(); } } } // 構(gòu)造方法 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(); intx=(int)((dimension.getWidth()-400)/2); inty=(int)((dimension.getHeight()-500)/2); this.xis=310*column/9; this.yis=300*row/9+100; this.setBounds(x,y,this.xis,this.yis); this.setTitle("掃雷"); this.myRows=row; this.myColumns=column; this.numBomb=numbomb; this.InitView(); this.InitButton(); this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); } //監(jiān)聽方法 publicvoidactionPerformed(ActionEvente){ //對(this.myRows*this.myColumns)個button的監(jiān)聽進行處理 for(inti=0;i<(this.myRows*this.myColumns);i++){ if(e.getSource()==myButton[i]){ CheckButton((ExtendButton)e.getSource()); } } //重置按鈕監(jiān)聽 if(e.getSource()==menuItemCZ){ SetExtendButton(); //設(shè)置按鈕進行監(jiān)聽 }elseif(e.getSource()==menuItemSZ){ newViewReSet(this.myRows,this.myColumns,this.numBomb); this.dispose(); } }publicstaticvoidmain(String[]args){ newGame();}}/***********************************************************創(chuàng)建一個button的實體類*/packagecom.dhl.saolei;importjavax.swing.JButton;publicclassExtendButtonextendsJButton{ privateintButton_pos; privateintButton_num; privatebooleanButton_Status; privatebooleanButton_Visited; publicintgetButton_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; } publicbooleanSetStatus(booleansta){ this.Button_Status=sta; returnthis.Button_Status; } publicbooleanGetStatus(){ returnthis.Button_Status; } publicbooleanSetVisited(booleanvis){ this.Button_Visited=vis; returnthis.Button_Visited; } publicbooleanGetVisited(){ returnthis.Button_Visited; } }/*******************************************************************設(shè)置button顯示圖片*/packagecom.dhl.saolei;importjava.awt.Image;importjavax.swing.ImageIcon;publicclassShowNum{ privateintnum; publicShowNum(intn){ this.num=n; } publicImageIcongetImageIcon(){ ImageIconimageIcon; switch(num){ case0: imageIcon=newImageIcon("./class/images/dise.jpg"); break; case1: imageIcon=newImageIcon("./class/images/dise1.jpg"); break; case2: imageIcon=newImageIcon("./class/images/dise2.jpg"); break; case3: imageIcon=newImageIcon("./class/images/dise3.jpg"); break; case4: imageIcon=newImageIcon("./class/images/dise4.jpg"); break; case5: imageIcon=newImageIcon("./class/images/dise5.jpg"); break; case6: imageIcon=newImageIcon("./class/images/dise6.jpg"); break; case7: imageIcon=newImageIcon("./class/images/dise7.jpg"); break; case8: imageIcon=newImageIcon("./class/images/dise8.jpg"); break; case9: imageIcon=newImageIcon("./class/images/lei.jpg"); break; case10: imageIcon=newImageIcon("./class/images/biaose.jpg"); break; case11: imageIcon=newImageIcon("./class/images/leibj.jpg"); break; default:imageIcon=newImageIcon("./class/images/dise.jpg"); break; } returnimageIcon; }}/********************************************************************創(chuàng)建一個新窗口,輸入新的行、列、雷數(shù),然后用新數(shù)據(jù)重新new一個Game窗口*/packagecom.dhl.saolei;importjava.awt.Container;importjava.awt.Dimension;importjava.awt.GridBagConstraints;importjava.awt.GridBagLayout;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextField;publicclassViewReSetextendsJDialogimplementsActionListener{ privateJFrameframe=null; privateJPanelmyPanel=null; privateJLabelmyLabel=null; privateJLabelmyLabelRow=null; privateJLabelmyLabelColum=null; privateJLabelmyLabelBombNum=null; privateJTextFieldmyFieldRow=null; privateJTextFieldmyFieldColum=null; privateJTextFieldmyFieldBombNum=null; privateJButtonbuttonOK=null; privateJButtonbuttonReset=null; privateintrow; privateintcolumn; privateintbombNum; privateint[]myrcb=newint[3]; privatevoidcreateView(){ Containercontainer=this.getContentPane(); this.myPanel=newJPanel(newGridBagLayout()); container.add(this.myPanel); GridBagConstraintsgbc=newGridBagConstraints(); gbc.gridx=1; gbc.gridy=0; this.myLabel=newJLabel("窗口行列設(shè)置"); this.myPanel.add(this.myLabel,gbc); gbc.gridx=0; gbc.gridy=1; this.myLabelRow=newJLabel("行數(shù):"); this.myPanel.add(this.myLabelRow,gbc); gbc.gridx=1; gbc.gridy=1; this.myFieldRow=newJTextField(10); this.myPanel.add(this.myFieldRow,gbc); gbc.gridx=0; gbc.gridy=2; this.myLabelColum=newJLabel("列數(shù):"); this.myPanel.add(this.myLabelColum,gbc); gbc.gridx=1; gbc.gridy=2; this.myFieldColum=newJTextField(10); this.myPanel.add(this.myFieldColum,gbc); gbc.gridx=0; gbc.gridy=3; this.myLabelBombNum=newJLabel("雷數(shù):"); this.myPanel.add(this.myLabelBombNum,gbc); gbc.gridx=1; gbc.gridy=3; this.myFieldBombNum=newJTextField(10); this.myPanel.add(this.myFieldBombNum,gbc); JPanelbtnPanel=newJPanel(); btnPanel.setOpaque(false); this.buttonOK=newJButton("確定"); this.buttonOK.addActionListener(this); btnPanel.add(this.buttonOK); this.buttonReset=newJButton("重置"); this.buttonReset.addActionListener(this);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論