![java_掃雷游戲課程設(shè)計(jì)報(bào)告_第1頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-7/30/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac1.gif)
![java_掃雷游戲課程設(shè)計(jì)報(bào)告_第2頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-7/30/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac2.gif)
![java_掃雷游戲課程設(shè)計(jì)報(bào)告_第3頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-7/30/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac3.gif)
![java_掃雷游戲課程設(shè)計(jì)報(bào)告_第4頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-7/30/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac4.gif)
![java_掃雷游戲課程設(shè)計(jì)報(bào)告_第5頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-7/30/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac/e0fb90f5-b028-4a8d-9fa3-3c8640e352ac5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 Java課程設(shè)計(jì)報(bào)告姓 名學(xué) 號(hào)院 系班 級(jí)專(zhuān) 業(yè) 1設(shè)計(jì)內(nèi)容及要求1.1 掃雷游戲的基本要求 Windows 2000/XP系統(tǒng)提供的掃雷游戲是一個(gè)很有趣的游戲。本章的課程設(shè)計(jì)使用Java語(yǔ)言編寫(xiě)一個(gè)與其類(lèi)似的掃雷游戲。具體要求如下: (1) 掃雷游戲分為初級(jí)、中級(jí)和高級(jí)三個(gè)級(jí)別,掃雷英雄榜存儲(chǔ)每個(gè)級(jí)別的最好成績(jī),即挖出全部的地雷且用時(shí)最少者。單擊游戲菜單可以選擇“初級(jí)”、“中級(jí)”和“高級(jí)”或“查看英雄版”。(2) 選擇級(jí)別后將出現(xiàn)相應(yīng)級(jí)別的掃雷區(qū)域,這是用戶(hù)使用鼠標(biāo)左鍵單擊雷區(qū)中任何一個(gè)方塊便啟動(dòng)計(jì)時(shí)器。(3) 用戶(hù)要揭開(kāi)某個(gè)方塊,可單擊它。若所揭方塊下有淚,用戶(hù)便輸了這一局,若所揭方塊
2、下五雷,則顯示一個(gè)數(shù)字,該數(shù)字代表方塊的周?chē)?個(gè)方塊中共有多少顆雷。(4) 如果用戶(hù)認(rèn)為某個(gè)方塊下埋著雷,單擊右鍵可以在方塊上標(biāo)識(shí)一個(gè)用戶(hù)認(rèn)為是雷的圖標(biāo),即給出一個(gè)掃雷標(biāo)記。用戶(hù)每標(biāo)記出一個(gè)掃雷標(biāo)記(無(wú)論用戶(hù)的標(biāo)記是否正確),程序?qū)@示的剩余雷數(shù)減少一個(gè)。(5) 掃雷勝利后(用時(shí)最少者),程序彈出保存成績(jī)的對(duì)話(huà)框。(6)用戶(hù)可以選擇標(biāo)記疑問(wèn)的方塊,用可以勾選游戲菜單下的標(biāo)記(或者用快捷鍵alt+G 然后M)即可,此時(shí)雙擊右鍵并可出現(xiàn)“?”標(biāo)記。另有顏色選項(xiàng),當(dāng)用戶(hù)勾選此項(xiàng)時(shí),游戲?qū)⒁宰畹蛨D像像素來(lái)顯示。(7)如果用戶(hù)需要即使提示聲,并可選中聲音選項(xiàng),此時(shí)將聽(tīng)到計(jì)時(shí)的卡塔聲。當(dāng)用戶(hù)點(diǎn)中雷時(shí),將
3、有爆炸聲產(chǎn)生,勝利時(shí),將有凱旋的旋律播放,此時(shí)企鵝出現(xiàn)歡悅表情。1.2 需實(shí)現(xiàn)的主要功能(1) 用戶(hù)可以自定義級(jí)別并且可以任意輸入雷數(shù);(2) 具有計(jì)時(shí)功能,即顯示用戶(hù)完成移動(dòng)盤(pán)子所花費(fèi)的時(shí)間;(3) 用戶(hù)可以選擇是否有音效;(4) 自動(dòng)保存掃雷英雄榜; 2需求分析2.1 掃雷棋盤(pán)的布局設(shè)計(jì)系統(tǒng)的整體布局為:CardLayout布局, 采用了菜單、按鈕、面板等組件,菜單主要包括開(kāi)始,選擇級(jí)別,標(biāo)記,掃雷英雄榜,退出, 按鈕的功能是重新開(kāi)始新的游戲。2.2 雷區(qū)的設(shè)計(jì)MineArea類(lèi)是javax.swing包中Jpanel容器的子類(lèi),實(shí)現(xiàn)了ActionListener和MouseListene
4、r接口,所創(chuàng)建的對(duì)象:mineArea是MineGame類(lèi)中最重要的成員之一,作為一個(gè)容器添加到MineGame窗口的中心。標(biāo)明MineArea類(lèi)的主要成員變量、方法以及和MineGame類(lèi)之間組合關(guān)系的UML圖如圖2-1所示。圖2-1 MineArea類(lèi)的UML圖以下是UML圖中有關(guān)數(shù)據(jù)和方法的詳細(xì)說(shuō)明。1、成員變量(1)block是Block類(lèi)型的數(shù)組,用來(lái)確定雷區(qū)有多少需進(jìn)行掃雷的方塊。(2)blockView是BlockView類(lèi)型的數(shù)組,負(fù)責(zé)為block數(shù)組中的Block對(duì)象提供視圖。(3)lay是LayMines類(lèi)型的對(duì)象,負(fù)責(zé)設(shè)置block數(shù)組中的哪些方塊是雷或不是雷。(4)re
5、cord負(fù)責(zé)提供保存成績(jī)的界面,是一個(gè)對(duì)話(huà)框,默認(rèn)不可見(jiàn)。用戶(hù)只有掃雷成功后(用時(shí)最少),才可以看見(jiàn)對(duì)話(huà)框。(5)reStart是一個(gè)按鈕對(duì)象,用戶(hù)單擊它重新開(kāi)始游戲。(6)time是計(jì)時(shí)器對(duì)象,負(fù)責(zé)計(jì)算用戶(hù)的用時(shí)。2、方法(1)initMineArea(int,int,int,int)方法可根據(jù)參數(shù)提供的數(shù)據(jù)設(shè)置雷區(qū)的寬度、高度、雷的數(shù)目以及雷區(qū)的級(jí)別。(2)actionPerformed(ActionEvent)是MineArea類(lèi)實(shí)現(xiàn)的ActionListener接口中的方法。當(dāng)用戶(hù)單擊blockView中的某個(gè)方塊時(shí),actionPerformed(ActionEvent)方法負(fù)責(zé)執(zhí)行
6、有關(guān)算法,例如,當(dāng)用鼠標(biāo)左鍵單擊方塊上的按鈕后,若該方塊下有雷,actionPerformed(ActionEvent)方法將使用戶(hù)輸?shù)舯揪?,若該方塊下無(wú)雷,actionPerformed(ActionEvent)方法將顯示blockView對(duì)象中的標(biāo)簽,該標(biāo)簽上是一個(gè)數(shù)字,該數(shù)字代表當(dāng)前方塊的周?chē)?個(gè)方塊中共有多少顆雷。(3)show()方法是一個(gè)遞歸方法。actionPerformed(ActionEvent)方法執(zhí)行時(shí)將調(diào)用show方法進(jìn)行掃雷。(4)mousePressed(MouseEvent)方法是MineArea類(lèi)實(shí)現(xiàn)的MouseListener接口中的方法,當(dāng)用戶(hù)按下鼠標(biāo)有件
7、事mousePressed(MouseEvent)方法負(fù)責(zé)讓方塊上顯示一個(gè)探雷標(biāo)記。(5)inquireWin()方法用來(lái)判斷用戶(hù)是否掃雷成功,如果成功該方法負(fù)責(zé)讓record對(duì)話(huà)框可見(jiàn)。所謂掃雷成功是指不僅找到了全部的累而且用時(shí)最少。綜上所述,MineArea創(chuàng)建的掃雷區(qū)域效果如圖2.2.2所示。2.3 音效的設(shè)計(jì)music類(lèi)是java.awt包中Frame的子類(lèi),通過(guò)構(gòu)造音效聲音方法,在MainFrame主類(lèi)中,通過(guò)ActionListener來(lái)監(jiān)視是否已開(kāi)始游戲,來(lái)決定播放計(jì)時(shí)聲,之后又通過(guò)ActionListener來(lái)監(jiān)視是否踩到雷和是否完成來(lái)決定,播放相應(yīng)的音樂(lè)。下面標(biāo)明music類(lèi)
8、的主要成員變量、方法以及和MineFrame類(lèi)之間組合關(guān)系的UML圖如圖2-2所示。圖2-2 MineArea類(lèi)的UML圖2.4 排行榜設(shè)計(jì)LogDialog是javax.swing包中Jdialog對(duì)話(huà)框的子類(lèi),并實(shí)現(xiàn)了ActiongListener接口。LogDialog創(chuàng)建的對(duì)象dialog是MainFrame類(lèi)(主類(lèi))的成員之一,當(dāng)用戶(hù)選擇查看“英雄榜”菜單項(xiàng)時(shí),該對(duì)話(huà)框可見(jiàn),提供了查看掃雷的最好成績(jī)的界面。標(biāo)明LogDialog類(lèi)的主要成員變量、方法以及和MainFrame類(lèi)之間組合關(guān)系的UML圖如圖2-3所示。圖2-3 LogDialog類(lèi)的UML圖3總體設(shè)計(jì)3.1 總體功能圖圖2
9、-4 總體功能圖3.2 總體流程圖圖2-5 總體流程圖4主要功能設(shè)計(jì)流程4.1雷區(qū)設(shè)計(jì)流程圖圖2-6 雷區(qū)設(shè)計(jì)流程圖4.2音效設(shè)計(jì)流程圖圖2-7 音效設(shè)計(jì)流程圖4.3 排行榜設(shè)計(jì)流程圖圖2-8 排行榜設(shè)計(jì)流程圖5代碼實(shí)現(xiàn)5.1 類(lèi)之間關(guān)系圖圖2-9 類(lèi)之間關(guān)系圖5.2 運(yùn)行效果圖圖2-10 運(yùn)行主界面效果圖圖2-11 游戲失敗效果圖圖2-12 自定義雷區(qū)效果圖圖2-13 游戲勝利效果圖圖2-14 掃雷英雄榜效果圖5.3 程序打包發(fā)布過(guò)程可以使用jar.exe命令制作JAR文件來(lái)發(fā)布編寫(xiě)的軟件。(1)首先用文本編輯器,如Windows下的“記事本”,編寫(xiě)一個(gè)清單文件:Mymoon.mf Mani
10、fest-Version: 1.0 Main-Class: MineGame Created-By: 1.5(Sun Microsystems Inc.) 將Mymoon.mf保存到G:Java課程設(shè)計(jì)掃雷游戲1掃雷游戲33中,即和應(yīng)用程序所用的字節(jié)碼文件保存在相同的目錄中。 注意:清單文件中的“Manifest-Version:”和1.0、“Main-Class”和主類(lèi)MineGame之間以及“Created-By:”和1.5之間必須有且只有一個(gè)空格。 (2)生成JAR文件。 G:Java課程設(shè)計(jì)掃雷游戲1掃雷游戲33jar cfm Game.jar Mymoon.mf *.class其中,
11、參數(shù)c表示要生成一個(gè)新的JAR文件,f表示要生成的JAR文件的名字,m表示清單文件的名字。 可以將Hannoi.jar復(fù)制到任何一個(gè)安裝了Java運(yùn)行環(huán)境(版本號(hào)需高于1.5的計(jì)算機(jī)上)的計(jì)算機(jī)上,用戶(hù)用鼠標(biāo)雙擊該文件的圖標(biāo)就可以運(yùn)行掃雷游戲。6總結(jié)與說(shuō)明這個(gè)掃雷游戲是完全模擬微軟系統(tǒng)自帶的掃雷游戲,所以難度是比較大了,必然在編程過(guò)程中也遇到很多問(wèn)題,有些問(wèn)題比較簡(jiǎn)單但就不知道錯(cuò)在哪里,有些大問(wèn)題之道在哪就是不知道怎么辦才好,后來(lái)經(jīng)過(guò)自己的不斷調(diào)試,這個(gè)掃雷游戲終于大功告成。經(jīng)過(guò)編寫(xiě)這個(gè)掃雷游戲,我認(rèn)識(shí)到應(yīng)該注意細(xì)節(jié)問(wèn)題,雖然是很小的問(wèn)題,但可以提高自己編程的能力,而且還可以培養(yǎng)自己編程的嚴(yán)謹(jǐn)
12、性,同時(shí)還可以為以后的編程積累經(jīng)驗(yàn)。編寫(xiě)完這個(gè)掃雷游戲,我發(fā)現(xiàn)自己有很多的不足,我想如果讓我來(lái)單獨(dú)來(lái)編寫(xiě)這個(gè)游戲,我感覺(jué)很吃力,因?yàn)檫@個(gè)游戲涉及到好多算法。感觸最深的就是我們真的要扎扎實(shí)實(shí)的打基礎(chǔ)!并且我感覺(jué)到只要我們自己肯下功夫?qū)W習(xí),我們也可以做出很好的東西,不需要每次都抄襲別人的,只有自己的才是最珍貴的!7部分原代碼(見(jiàn)附錄2)import java.awt.event.*;import java.math.*;import java.util.*;import javax.swing.*;/程序入口public class JavaClearBomb public static void
13、 main(String args)DrawInterFace DIF=new DrawInterFace();DIF.RandomMine();/生成界面class DrawInterFace/地雷標(biāo)志,0無(wú)雷,1有雷private static int fmine=new int81;/右鍵記錄標(biāo)志private static boolean rmouse;/用來(lái)存放總地雷數(shù)private static int fcount=10;/存放剩余地雷數(shù)private static int rcount;/存放隨機(jī)生成的數(shù)private static int r=new int10;/記錄標(biāo)簽是
14、否翻開(kāi)標(biāo)志private static boolean appear=new boolean81;/記錄時(shí)間private static long time=0;/標(biāo)記線(xiàn)程private boolean stop = true;/標(biāo)記又右鍵private static boolean rightclick=new boolean81;private Frame fr;private Menu m1,m2;private MenuBar mb;private MenuItem mi11,mi12,mi13,mi14,mi15,mi19,mi110,mi21,mih;private Checkbo
15、xMenuItem mi16,mi17,mi18;/用CardLayout來(lái)放置按鈕和標(biāo)簽,plbmine里包含lbmine和btmine,為了實(shí)現(xiàn)CardLayout的功能private Panel pup,pdown;private Label lbleft,lbright,lbover;private Button btagain,btexit;private JButton btstart;private static Button btmine;private static Label lbmine;private static Panel plbmine;private int m
16、inenum=0;private int mine=new int10;private static CardLayout CLayout=new CardLayout();private Dialog digOver;public DrawInterFace()/生成菜單欄fr=new Frame(掃雷);mb=new MenuBar();fr.setMenuBar(mb);m1=new Menu(游戲);m2=new Menu(幫助);mb.add(m1);mb.setHelpMenu(m2);mi11=new MenuItem(開(kāi)局);mi12=new MenuItem(初級(jí));mi13
17、=new MenuItem(中級(jí));mi14=new MenuItem(高級(jí));mi15=new MenuItem(自定義);mi16=new CheckboxMenuItem(標(biāo)記);mi17=new CheckboxMenuItem(顏色);mi18=new CheckboxMenuItem(聲音);mi19=new MenuItem(掃雷英雄榜);mi110=new MenuItem(退出);mih=new MenuItem(攀枝花學(xué)院);mi21=new MenuItem(09計(jì)算機(jī)楊科);m1.add(mi11);m1.addSeparator();m1.add(mi12);m1.a
18、dd(mi13);m1.add(mi14);m1.add(mi15);m1.addSeparator();m1.add(mi16);m1.add(mi17);m1.add(mi18);m1.addSeparator();m1.add(mi19);m1.addSeparator();m1.add(mi110);m2.add(mih);m1.addSeparator();m2.add(mi21);fr.setMenuBar(mb);mb.add(m1);mb.add(m2);fr.setResizable(false);fr.setLocation(500,200);/生成時(shí)間顯示區(qū),雷數(shù)顯示區(qū)和
19、開(kāi)始游戲按鈕pup=new Panel();pdown=new Panel();pup.setLayout(new FlowLayout();lbleft=new Label(0);lbleft.setAlignment(Label.CENTER);lbright=new Label(0);lbright.setAlignment(Label.CENTER);btstart=new JButton(,new ImageIcon(image/mine.gif);/ lbleft.setLocation(1,10);/ lbright.setLocation(250,1);/ btstart.se
20、tBounds(125,1,24,24);pup.add(lbleft);pup.add(btstart);pup.add(lbright);/對(duì)話(huà)框lbover=new Label(踩到雷了);btagain=new Button(再玩一局);btexit=new Button(算了);digOver=new Dialog(fr,你輸了);digOver.setLayout(new FlowLayout();digOver.setResizable(false);digOver.setSize(250,70);digOver.add(lbover);digOver.add(btagain);
21、digOver.add(btexit);btagain.addActionListener(new Restart();btexit.addActionListener(new Exit();digOver.setLocation(500,250);/生成雷區(qū)pdown.setLayout(new GridLayout(9,9,1,1);btmine=new Button81;lbmine=new Label81;plbmine=new Panel81;for(int i=0;i81;i+)btminei=new Button();lbminei=new Label();lbminei.set
22、Background(Color.LIGHT_GRAY);lbminei.setAlignment(Label.CENTER);/設(shè)定標(biāo)簽文字居中顯示plbminei=new Panel();for(int i=0;i81;i+)plbminei.setLayout(CLayout);plbminei.add(btminei,up);plbminei.add(lbminei,up);pdown.add(plbminei,down);/設(shè)定雷區(qū)按鈕的監(jiān)聽(tīng)for(int i=0;i81;i+)btminei.addActionListener(new BombAction();btminei.ad
23、dMouseListener(new UnitEvent(i);/設(shè)定開(kāi)始按鈕的監(jiān)聽(tīng)btstart.addActionListener(new Start();/畫(huà)出panelfr.add(pup,North);fr.add(pdown,South);fr.setSize(222,300);fr.setVisible(true);fr.addWindowListener(new WindowClosing();/初始化for(int i=0;i81;i+)fminei=0;appeari=false;rightclicki=false;rmouse=false;rcount=10;lbrigh
24、t.setText(Integer.toString(rcount);/隨機(jī)生成10個(gè)大小介于0到80之間的整數(shù)并對(duì)雷進(jìn)行標(biāo)記(算法有待優(yōu)化)public static void RandomMine()/存到fminei中,1為雷,0沒(méi)有Random rm=new Random();for(int i=0;i10;i+)ri=rm.nextInt(80);for(int j=0;ji;j+)while(ri=rj)&(i!=j)ri=rm.nextInt(80);for(int i=0;i10;i+)fmineri=1;/計(jì)算某方格周?chē)睦讛?shù)static int HowManyMine(in
25、t x)int temp=0;switch (x)/左上角case 0: temp=fminex+1+fminex+9+fminex+10;break;/右上角case 8: temp=fminex-1+fminex+8+fminex+9;break;/左下角case 72: temp=fminex-9+fminex-8+fminex+1;break;/右下角case 80: temp=fminex-10+fminex-9+fminex-1;break;/上邊case 1:case 2:case 3:case 4:case 5:case 6:case 7: temp=fminex-1+fmin
26、ex+1+fminex+8+fminex+9+fminex+10;break;/下邊case 73:case 74:case 75:case 76:case 77:case 78:case 79: temp=fminex-10+fminex-9+fminex-8+fminex-1+fminex+1;break;/左邊case 9:case 18:case 27:case 36:case 45:case 54:case 63: temp=fminex-9+fminex-8+fminex+1+fminex+9+fminex+10;break;/右邊case 17:case 26:case 35:c
27、ase 44:case 53:case 62:case 71: temp=fminex-10+fminex-9+fminex-1+fminex+8+fminex+9;break;/其余default: temp=fminex-10+fminex-9+fminex-8+fminex-1+fminex+1+fminex+8+fminex+9+fminex+10;break;return temp;/判斷標(biāo)簽是否已經(jīng)顯示/展開(kāi)雷區(qū)方法(此算法嚴(yán)重需要改進(jìn))static void ClickMine(int i)CLayout.last(plbminei);if(fminei=1) System.ou
28、t.println(踩到雷了);return;else if(HowManyMine(i)=0)CLayout.last(plbminei);appeari=true;elseCLayout.last(plbminei);appeari=true;return;btminei.setVisible(false);switch (i)/左上角case 0: if(appeari+1=false)CLayout.last(plbminei+1);ClickMine(i+1);appeari+1=true;if(appeari+9=false)CLayout.last(plbminei+9);Cli
29、ckMine(i+9);appeari+9=true;if(appeari+10=false)CLayout.last(plbminei+10);ClickMine(i+10);appeari+10=true;break;/右上角case 8: if(appeari-1=false)CLayout.last(plbminei-1);ClickMine(i-1);appeari-1=true;if(appeari+8=false)CLayout.last(plbminei+8);ClickMine(i+8);appeari+8=true;if(appeari+9=false)CLayout.la
30、st(plbminei+9);ClickMine(i+9);appeari+9=true;break;/左下角case 72: if(appeari-9=false)CLayout.last(plbminei-9);ClickMine(i-9);appeari-9=true;if(appeari-8=false)CLayout.last(plbminei-8);ClickMine(i-8);appeari-8=true;if(appeari+1=false)CLayout.last(plbminei+1);ClickMine(i+1);appeari+1=true;break;/右下角case
31、 80: if(appeari-10=false)CLayout.last(plbminei-10);ClickMine(i-10);appeari-10=true;if(appeari-9=false)CLayout.last(plbminei-9);ClickMine(i-9);appeari-9=true;if(appeari-1=false)CLayout.last(plbminei-1);ClickMine(i-1);appeari-1=true;break;/上邊case 1:case 2:case 3:case 4:case 5:case 6:case 7: if(appeari
32、-1=false)CLayout.last(plbminei-1);ClickMine(i-1);appeari-1=true;if(appeari+1=false)CLayout.last(plbminei+1);ClickMine(i+1);appeari+1=true;if(appeari+8=false)CLayout.last(plbminei+8);ClickMine(i+8);appeari+8=true;if(appeari+9=false)CLayout.last(plbminei+9);ClickMine(i+9);appeari+9=true;if(appeari+10=
33、false)CLayout.last(plbminei+10);ClickMine(i+10);appeari+10=true;break;/下邊case 73:case 74:case 75:case 76:case 77:case 78:case 79: if(appeari-10=false)CLayout.last(plbminei-10);ClickMine(i-10);appeari-10=true;if(appeari-9=false)CLayout.last(plbminei-9);ClickMine(i-9);appeari-9=true;if(appeari-8=false
34、)CLayout.last(plbminei-8);ClickMine(i-8);appeari-8=true;if(appeari-1=false)CLayout.last(plbminei-1);ClickMine(i-1);appeari-1=true;if(appeari+1=false)CLayout.last(plbminei+1);ClickMine(i+1);appeari+1=true;break;/左邊case 9:case 18:case 27:case 36:case 45:case 54:case 63: if(appeari-9=false)CLayout.last
35、(plbminei-9);ClickMine(i-9);appeari-9=true;if(appeari-8=false)CLayout.last(plbminei-8);ClickMine(i-8);appeari-8=true;if(appeari+1=false)CLayout.last(plbminei+1);ClickMine(i+1);appeari+1=true;if(appeari+9=false)CLayout.last(plbminei+9);ClickMine(i+9);appeari+9=true;if(appeari+10=false)CLayout.last(pl
36、bminei+10);ClickMine(i+10);appeari+10=true;break;/右邊case 17:case 26:case 35:case 44:case 53:case 62:case 71: if(appeari-10=false)CLayout.last(plbminei-10);ClickMine(i-10);appeari-10=true;if(appeari-9=false)CLayout.last(plbminei-9);ClickMine(i-9);appeari-9=true;if(appeari-1=false)CLayout.last(plbmine
37、i-1);ClickMine(i-1);appeari-1=true;if(appeari+8=false)CLayout.last(plbminei+8);ClickMine(i+8);appeari+8=true;if(appeari+9=false)CLayout.last(plbminei+9);ClickMine(i+9);appeari+9=true;break;/其余default: if(appeari-10=false)CLayout.last(plbminei-10);ClickMine(i-10);appeari-10=true;if(appeari-9=false)CL
38、ayout.last(plbminei-9);ClickMine(i-9);appeari-9=true;if(appeari-8=false)CLayout.last(plbminei-8);ClickMine(i-8);appeari-8=true;if(appeari-1=false)CLayout.last(plbminei-1);ClickMine(i-1);appeari-1=true;if(appeari+1=false)CLayout.last(plbminei+1);ClickMine(i+1);appeari+1=true;if(appeari+8=false)CLayou
39、t.last(plbminei+8);ClickMine(i+8);appeari+8=true;if(appeari+9=false)CLayout.last(plbminei+9);ClickMine(i+9);appeari+9=true;if(appeari+10=false)CLayout.last(plbminei+10);ClickMine(i+10);appeari+10=true;break;/內(nèi)部類(lèi)實(shí)現(xiàn)監(jiān)聽(tīng),實(shí)現(xiàn)掃雷中心算法class BombAction implements ActionListenerpublic void actionPerformed(Action
40、Event e)if(stop=true)new Clock().start();stop = false;for (int i=0;i81;i+)if (e.getSource()=btminei&rightclicki=true) return;for (int i=0;i81;i+)lbminei.setText(Integer.toString(HowManyMine(i);if(HowManyMine(i)=0) lbminei.setText();if (e.getSource()=btminei)if(fminei=1)/判斷是否失敗stop=true;digOver.setVi
41、sible(true);fr.setEnabled(false);else/實(shí)現(xiàn)展開(kāi)雷區(qū)(較難算法)ClickMine(i);/判斷是否勝利(要改進(jìn))int win=0;for(int j=0;j81;j+)if(appearj=true) win+;if(win=71)stop=true;lbover.setText(用時(shí)+time+秒);digOver.setTitle(你贏了);digOver.setVisible(true);/右鍵標(biāo)記/線(xiàn)程實(shí)現(xiàn)記時(shí)class Clock extends Threadpublic void run()while(stop=false)trysleep(1000);catch(InterruptedException e)System.out.println(e.getMessage();time+;lbleft.setText(String.valueOf(time);return;/開(kāi)始按鈕的監(jiān)聽(tīng)class
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程建設(shè)管理與施工標(biāo)準(zhǔn)化作業(yè)指導(dǎo)書(shū)
- 工程項(xiàng)目管理規(guī)范操作流程解讀
- 游戲開(kāi)發(fā)實(shí)踐作業(yè)指導(dǎo)書(shū)
- 農(nóng)業(yè)信息化技術(shù)推廣應(yīng)用作業(yè)指導(dǎo)書(shū)
- 標(biāo)準(zhǔn)鋼材購(gòu)銷(xiāo)合同
- 測(cè)繪勞務(wù)分包合同
- 出口銷(xiāo)售合同
- 小麥種子購(gòu)銷(xiāo)合同
- 員工試用勞動(dòng)合同
- 2025年呼和浩特道路貨運(yùn)從業(yè)資格證模擬考試
- 肌張力的康復(fù)治療
- 法律職業(yè)資格考試客觀題(試卷一)試題及解答參考(2024年)
- 教學(xué)的模樣讀書(shū)分享
- 油庫(kù)應(yīng)急處置培訓(xùn)
- 新環(huán)境下人力資源體系建設(shè)方案
- 2024年秋新滬科版物理八年級(jí)上冊(cè) 第二節(jié) 測(cè)量:物體的質(zhì)量 教學(xué)課件
- 火針療法緩解上寒下熱證候群焦慮抑郁情緒的研究
- 7.2維護(hù)祖國(guó)統(tǒng)一 (課件) 2024-2025學(xué)年九年級(jí)道德與法治上冊(cè) (統(tǒng)編版)
- 直播帶貨基本操作流程(直播帶貨流程完整版)
- 多旋翼無(wú)人機(jī)駕駛員執(zhí)照(CAAC)備考試題庫(kù)大全-下部分
- 管理學(xué)專(zhuān)業(yè):管理基礎(chǔ)知識(shí)試題庫(kù)(附含答案)
評(píng)論
0/150
提交評(píng)論