版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 成 績(jī) 評(píng) 定 表</b></p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p><b> 目 錄</b></p><p> 1.設(shè)計(jì)目的 ---------------------------------------------------------
2、-------------------- 4</p><p> 2.總體設(shè)計(jì) ----------------------------------------------------------------------------- 4</p><p> 3.關(guān)鍵技術(shù) -----------------------------------------------------------
3、------------------ 5</p><p> 4.程序流程 ----------------------------------------------------------------------------- 8</p><p> 5.主要源代碼 ------------------------------------------------------------
4、-------------- 8</p><p> 6.運(yùn)行結(jié)果及結(jié)論 ------------------------------------------------------------------- 26</p><p> 7.參考文獻(xiàn) -----------------------------------------------------------------------
5、---- 29</p><p><b> 1.設(shè)計(jì)目的</b></p><p> 通過選擇掃雷游戲軟件設(shè)計(jì),這個(gè)綜合性的題目作為本次的課程設(shè)計(jì)。可以讓我們更加熟悉Java程序設(shè)計(jì)這門課程,學(xué)會(huì)熟練使用Java這個(gè)軟件,加深對(duì)Java語言的掌握,提高編程水平。同時(shí)培養(yǎng)獨(dú)立思考和同學(xué)間團(tuán)結(jié)合作的能力,為畢業(yè)設(shè)計(jì)以及將來的工作打下堅(jiān)實(shí)的基礎(chǔ)。</p>&l
6、t;p><b> 2.總體設(shè)計(jì)</b></p><p><b> 2.1 設(shè)計(jì)需求</b></p><p> 在設(shè)計(jì)掃雷游戲時(shí),需要編寫7個(gè)源文件:MineGame.java,MineArea.java,Block.java,BlockView.java,LayMines.java,ShowRecord.java,Record.jav
7、a 除了這七個(gè)源文件外,還需要Java系統(tǒng)提供一些重要的類,如File,JButton和JLabel等類。</p><p> 2.2 系統(tǒng)功能設(shè)計(jì)流程圖</p><p> 2.3 類的組合關(guān)系</p><p><b> 3.關(guān)鍵技術(shù)</b></p><p> 3.1 MineGame.java(主類):</
8、p><p> 3.1.1 成員變量</p><p> bar和fileMenu 提供菜單操作,單擊菜單操作中的選項(xiàng)為“初級(jí)”,“中級(jí)”,“高級(jí)”或“掃雷英雄榜”;mineArea 是掃雷區(qū)域,提供有關(guān)雷的主要功能;英雄榜”負(fù)責(zé)存放三個(gè)級(jí)別的掃雷最好成績(jī);showHeroRecord負(fù)責(zé)顯示英雄榜中的數(shù)據(jù)</p><p><b> 3.1.2 方法<
9、/b></p><p> MineGame()是構(gòu)造窗口,負(fù)責(zé)完成窗口的初始化。</p><p> ActionPerformed(ActionEvent)方法是MineGame類實(shí)現(xiàn)的ActionListener接口中的方法,該方法負(fù)責(zé)執(zhí)行菜單發(fā)出的有關(guān)命令。用戶選擇菜單中的菜單項(xiàng)可觸發(fā)ActionEvent事件,導(dǎo)致actionPerformed(ActionEvent)方法
10、執(zhí)行相應(yīng)的操作。</p><p> Main(String[])方法是程序運(yùn)行的入口方法。</p><p> 3.2 MineArea.java:</p><p> 3.2.1 成員變量</p><p> block和Block類型的數(shù)組,用來確定雷區(qū)有多少需進(jìn)行掃雷的方塊;</p><p> blockVi
11、ew是BlockView類型的數(shù)組,負(fù)責(zé)block數(shù)組中Block對(duì)象提供視圖;</p><p> lay是LayMines類型的對(duì)象,負(fù)責(zé)設(shè)置block數(shù)組中的哪些方塊不是雷;</p><p> record負(fù)責(zé)提供保存成績(jī)的界面,是一個(gè)對(duì)話框,默認(rèn)為不可見,用戶只有掃雷成功后,才可以看見該對(duì)話框;</p><p> reStart是一個(gè)按鈕對(duì)象,用戶單擊它
12、重新開始游戲;</p><p> time是計(jì)時(shí)器對(duì)象,負(fù)責(zé)計(jì)算用戶用時(shí)。</p><p><b> 3.2.2 方法</b></p><p> initMineArea(int,int,int,int)方法可根據(jù)參數(shù)提供的數(shù)據(jù)設(shè)置雷區(qū)的寬度,高度,類的數(shù)目以及雷區(qū)的級(jí)別。</p><p> actionPerf
13、ormed(actionEvent)是MineArea類實(shí)現(xiàn)的ActionListener接口中的方法。當(dāng)用戶單擊blockView中的某個(gè)方塊時(shí)actionPerformed(actionEvent)執(zhí)行有關(guān)算法。</p><p> Show()方法是一個(gè)遞歸方法,actionPerformed(actionEvent)方法執(zhí)行將調(diào)用show方法進(jìn)行掃雷。</p><p> mous
14、ePressed(mouseEvent)方法是MineArea類實(shí)現(xiàn)的MouseListener接口中的方法,當(dāng)用戶按下鼠標(biāo)右鍵時(shí),mousePressed(mouseEvent)方法負(fù)責(zé)讓方塊上顯示一個(gè)探雷標(biāo)記。</p><p> inquireWin()方法用來判斷用戶掃雷是否成功,如果成功該方法負(fù)責(zé)讓record對(duì)話框可見。</p><p> 3.3 Block.java:<
15、;/p><p> 3.3.1 成員變量</p><p> name方塊上的名字</p><p> aroundMineNumber是方塊周圍雷的數(shù)目</p><p> mineIcon是方塊上雷的圖標(biāo)</p><p> isMine用來表示方塊是否是雷</p><p> isMark用來
16、表示方塊是否被標(biāo)記</p><p> isOpen用來表示方塊是否被挖開</p><p><b> 3.3.2 方法</b></p><p> setAroundMineNumber(int)方法用來設(shè)置aroundMineNumber的值;getAroundMineNumber()方法用來獲取aroundMineNumber的值。<
17、;/p><p> 3.4 BlockView.java</p><p> 3.4.1 成員變量</p><p> blockNameOrIcon用來顯示Block對(duì)象的name,number和mineIcon屬性;blockCover用來遮擋blockNameOrIcon;card卡片式布局。</p><p><b> 3.4.
18、2 方法</b></p><p> giveView(Block block)方法給參數(shù)指定的Block對(duì)象提供視圖;seeBlockNameOrIcon()方法讓用戶看見視圖中的標(biāo)簽,無法看見按鈕;seeBlockCover()方法讓用戶看見視圖中的按鈕,無法看見標(biāo)簽。</p><p> 3.5LayMines.java:</p><p> 3.
19、5.1 成員變量</p><p> mineIcon用來存放一個(gè)格式為gif的圖像。</p><p><b> 3.5.2 方法</b></p><p> layMinesForBlock(Block[][],int)方法對(duì)參數(shù)指定的Block數(shù)組進(jìn)行設(shè)置,其中int參數(shù)指定雷的數(shù)目。</p><p> 3.6R
20、ecord.java:</p><p> 3.6.1 成員變量</p><p> textName提供用戶掃雷優(yōu)勝者出入姓名;用戶單擊“確定”按鈕,可以保存成績(jī)。</p><p><b> 3.6.2 方法</b></p><p> actionPerformed(ActionEvent)方法是Record類實(shí)現(xiàn)
21、的ActionListener接口中的方法,當(dāng)用戶單擊“確定”按鈕后,該方法被執(zhí)行,所執(zhí)行的操作就是獲取用戶輸入的名字和用時(shí),然后調(diào)用writeRecord(String,String)方法將信息寫入英雄榜中;writeRecord(String,String)負(fù)責(zé)將有關(guān)信息寫入“英雄榜”文件。</p><p> 3.7 ShowRecord:</p><p> 3.7.1 成員變量&
22、lt;/p><p> file存放文件的引用,用戶單擊“顯示成績(jī)”按鈕,可以查看各個(gè)級(jí)別的最好成績(jī);用戶單擊“重新計(jì)分”按鈕,可以將“英雄榜”中的成績(jī)恢復(fù)為初始值。</p><p><b> 3.7.2 方法</b></p><p> actionPerformed(ActionEvent)方法是ShowRecord類實(shí)現(xiàn)的ActionLis
23、tener接口中的方法,當(dāng)用戶單擊“顯示成績(jī)”按鈕后,該方法被執(zhí)行,所執(zhí)行的操作就是調(diào)用readAndShow()方法;readAndShow()方法負(fù)責(zé)讀取存放在文件中的各個(gè)級(jí)別的掃雷最好成績(jī)以及掃雷者姓名,并顯示這些相關(guān)信息。</p><p><b> 4.程序流程</b></p><p><b> 5.主要源代碼</b></p&g
24、t;<p> import java.awt.event.*;</p><p> import java.awt.*;</p><p> import javax.swing.*;</p><p> import javax.swing.border.*;</p><p> import java.util.*;<
25、;/p><p> import java.io.*;</p><p> public class MineGame extends JFrame implements ActionListener{</p><p> JMenuBar bar;</p><p> JMenu fileMenu;</p><p>
26、JMenuItem 初級(jí),中級(jí),高級(jí),掃雷英雄榜;</p><p> MineArea mineArea=null;</p><p> File 英雄榜=new File("英雄榜.txt");</p><p> Hashtable hashtable=null;</p><p> ShowRecord showH
27、eroRecord=null;</p><p> MineGame(){</p><p> mineArea=new MineArea(16,16,40,1);</p><p> add(mineArea,BorderLayout.CENTER);</p><p> bar=new JMenuBar();</p><
28、;p> fileMenu=new JMenu("游戲");</p><p> 初級(jí)=new JMenuItem("初級(jí)");</p><p> 中級(jí)=new JMenuItem("中級(jí)");</p><p> 高級(jí)=new JMenuItem("高級(jí)");</p>
29、;<p> 掃雷英雄榜=new JMenuItem("掃雷英雄榜"); </p><p> fileMenu.add(初級(jí));</p><p> fileMenu.add(中級(jí));</p><p> fileMenu.add(高級(jí));</p><p> fileMenu.add(掃雷英雄榜);&l
30、t;/p><p> bar.add(fileMenu);</p><p> setJMenuBar(bar);</p><p> 初級(jí).addActionListener(this);</p><p> 中級(jí).addActionListener(this);</p><p> 高級(jí).addActionListen
31、er(this);</p><p> 掃雷英雄榜.addActionListener(this);</p><p> hashtable=new Hashtable();</p><p> hashtable.put("初級(jí)","初級(jí)#"+999+"#匿名"); </p><p&g
32、t; hashtable.put("中級(jí)","中級(jí)#"+999+"#匿名");</p><p> hashtable.put("高級(jí)","高級(jí)#"+999+"#匿名");</p><p> if(!英雄榜.exists()) {</p><p&g
33、t; try{ FileOutputStream out=new FileOutputStream(英雄榜);</p><p> ObjectOutputStream objectOut=new ObjectOutputStream(out);</p><p> objectOut.writeObject(hashtable);</p><p> objec
34、tOut.close();</p><p> out.close();</p><p><b> }</b></p><p> catch(IOException e){}</p><p><b> }</b></p><p> showHeroRecord=new
35、 ShowRecord(this,hashtable);</p><p> setBounds(100,100,280,380);</p><p> setVisible(true);</p><p> setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> validate(
36、);</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e){</p><p> if(e.getSource()==初級(jí)){</p><p> mineArea.initMineArea(8,8,10,1);</p>
37、;<p> setBounds(100,100,200,280); </p><p><b> }</b></p><p> if(e.getSource()==中級(jí)){</p><p> mineArea.initMineArea(16,16,40,2);</p><p> setBounds(
38、100,100,280,380);</p><p><b> }</b></p><p> if(e.getSource()==高級(jí)){</p><p> mineArea.initMineArea(22,22,99,3);</p><p> setBounds(100,100,350,390);</p&g
39、t;<p><b> }</b></p><p> if(e.getSource()==掃雷英雄榜){ </p><p> if(showHeroRecord!=null)</p><p> showHeroRecord.setVisible(true);</p><p><b> }&
40、lt;/b></p><p> validate();</p><p><b> }</b></p><p> public static void main(String args[]){</p><p> new MineGame();</p><p><b> }&
41、lt;/b></p><p><b> }</b></p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import javax.swing.*;</p><p> public class
42、MineArea extends JPanel implements ActionListener,MouseListener{</p><p> JButton reStart;</p><p> Block [][] block;</p><p> BlockView [][] blockView;</p><p> LayMin
43、es lay;</p><p> int row,colum,mineCount,markMount;//雷區(qū)的行數(shù)、列數(shù)以及地雷個(gè)數(shù)和用戶給出的標(biāo)記數(shù)</p><p> ImageIcon mark;</p><p> int grade; </p><p> JPanel pCenter,pNorth;</p>&l
44、t;p> JTextField showTime,showMarkedMineCount; //顯示用時(shí)以及標(biāo)記數(shù)</p><p> Timer time; //計(jì)時(shí)器</p><p> int spendTime=0;</p><p> Record record;</p><p> public MineArea(int
45、 row,int colum,int mineCount,int grade) {</p><p> reStart=new JButton("重新開始");</p><p> mark=new ImageIcon("mark.gif"); //探雷標(biāo)記</p><p> time=new Timer(1000,thi
46、s);</p><p> showTime=new JTextField(5);</p><p> showMarkedMineCount=new JTextField(5);</p><p> showTime.setHorizontalAlignment(JTextField.CENTER);</p><p> showMarke
47、dMineCount.setHorizontalAlignment(JTextField.CENTER);</p><p> showMarkedMineCount.setFont(new Font("Arial",Font.BOLD,16));</p><p> showTime.setFont(new Font("Arial",Font.BO
48、LD,16)); </p><p> pCenter=new JPanel();</p><p> pNorth=new JPanel();</p><p> lay=new LayMines(); </p><p> initMineArea(row,colum,mineCount,grade
49、); //初始化雷區(qū),見下面的LayMines()</p><p> reStart.addActionListener(this);</p><p> pNorth.add(showMarkedMineCount);</p><p> pNorth.add(reStart);</p><p> pNorth.add(showTime
50、);</p><p> setLayout(new BorderLayout());</p><p> add(pNorth,BorderLayout.NORTH);</p><p> add(pCenter,BorderLayout.CENTER);</p><p><b> }</b></p>
51、<p> public void initMineArea(int row,int colum,int mineCount,int grade){</p><p> pCenter.removeAll();</p><p> spendTime=0;</p><p> markMount=mineCount;</p><p>
52、; this.row=row;</p><p> this.colum=colum;</p><p> this.mineCount=mineCount; </p><p> this.grade=grade; </p><p> block=new Block[row][colum];</p><p>
53、for(int i=0;i<row;i++){</p><p> for(int j=0;j<colum;j++)</p><p> block[i][j]=new Block();</p><p><b> }</b></p><p> lay.layMinesForBlock(block,mine
54、Count); </p><p> blockView=new BlockView[row][colum];</p><p> pCenter.setLayout(new GridLayout(row,colum));</p><p> for(int i=0;i<row;i++) {</p><p> for(int j
55、=0;j<colum;j++) {</p><p> blockView[i][j]=new BlockView(); </p><p> blockView[i][j].giveView(block[i][j]); //給block[i][j]提供視圖</p><p> pCenter.add(blockView[i][j]);</p>
56、<p> blockView[i][j].getBlockCover().addActionListener(this);</p><p> blockView[i][j].getBlockCover().addMouseListener(this);</p><p> blockView[i][j].seeBlockCover();</p><p>
57、; blockView[i][j].getBlockCover().setEnabled(true);</p><p> blockView[i][j].getBlockCover().setIcon(null);</p><p><b> }</b></p><p><b> }</b></p>&
58、lt;p> showMarkedMineCount.setText(""+markMount); </p><p> validate();</p><p><b> }</b></p><p> public void setRow(int row){</p><p> this.r
59、ow=row;</p><p><b> }</b></p><p> public void setColum(int colum){</p><p> this.colum=colum;</p><p><b> }</b></p><p> public vo
60、id setMineCount(int mineCount){</p><p> this.mineCount=mineCount;</p><p><b> }</b></p><p> public void setGrade(int grade) {</p><p> this.grade=grade;&l
61、t;/p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> if(e.getSource()!=reStart&&e.getSource()!=time) {</p><p> time.star
62、t(); </p><p> int m=-1,n=-1; </p><p> for(int i=0;i<row;i++) {</p><p> for(int j=0;j<colum;j++) {</p><p> if(e.getSource()==blockView[i][j].getBlockCover()){
63、</p><p><b> m=i;</b></p><p><b> n=j;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }<
64、/b></p><p><b> }</b></p><p> if(block[m][n].isMine()) {</p><p> for(int i=0;i<row;i++) {</p><p> for(int j=0;j<colum;j++) {</p><p>
65、; blockView[i][j].getBlockCover().setEnabled(false);</p><p> if(block[i][j].isMine())</p><p> blockView[i][j].seeBlockNameOrIcon(); </p><p><b> }</b></p><
66、p><b> }</b></p><p> time.stop();</p><p> spendTime=0;</p><p> markMount=mineCount;</p><p><b> }</b></p><p><b> else
67、{ </b></p><p> show(m,n); //見本類后面的show方法</p><p><b> }</b></p><p><b> }</b></p><p> if(e.getSource()==reStart) {</p>&l
68、t;p> initMineArea(row,colum,mineCount,grade);</p><p><b> }</b></p><p> if(e.getSource()==time){</p><p> spendTime++;</p><p> showTime.setText("
69、"+spendTime);</p><p><b> }</b></p><p> inquireWin();</p><p><b> }</b></p><p> public void show(int m,int n) {</p><p> if(
70、block[m][n].getAroundMineNumber()>0&&block[m][n].getIsOpen()==false){</p><p> blockView[m][n].seeBlockNameOrIcon();</p><p> block[m][n].setIsOpen(true);</p><p><b>
71、; return;</b></p><p><b> }</b></p><p> else if(block[m][n].getAroundMineNumber()==0&&block[m][n].getIsOpen()==false){</p><p> blockView[m][n].seeBlockN
72、ameOrIcon();</p><p> block[m][n].setIsOpen(true);</p><p> for(int k=Math.max(m-1,0);k<=Math.min(m+1,row-1);k++) {</p><p> for(int t=Math.max(n-1,0);t<=Math.min(n+1,colum-1)
73、;t++)</p><p> show(k,t);</p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><p> public void mousePresse
74、d(MouseEvent e){</p><p> JButton source=(JButton)e.getSource();</p><p> for(int i=0;i<row;i++) {</p><p> for(int j=0;j<colum;j++) {</p><p> if(e.getModifiers(
75、)==InputEvent.BUTTON3_MASK&&</p><p> source==blockView[i][j].getBlockCover()){</p><p> if(block[i][j].getIsMark()) {</p><p> source.setIcon(null);</p><p> b
76、lock[i][j].setIsMark(false);</p><p> markMount=markMount+1;</p><p> showMarkedMineCount.setText(""+markMount);</p><p><b> }</b></p><p><b>
77、; else{</b></p><p> source.setIcon(mark);</p><p> block[i][j].setIsMark(true);</p><p> markMount=markMount-1;</p><p> showMarkedMineCount.setText(""
78、;+markMount);</p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p><b>
79、 }</b></p><p> public void inquireWin(){</p><p> int number=0;</p><p> for(int i=0;i<row;i++) {</p><p> for(int j=0;j<colum;j++) {</p><p>
80、 if(block[i][j].getIsOpen()==false)</p><p><b> number++;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(number==mineCount){<
81、;/p><p> time.stop();</p><p> record=new Record();</p><p> switch(grade){</p><p> case 1: record.setGrade("初級(jí)");</p><p><b> break;</b&
82、gt;</p><p> case 2: record.setGrade("中級(jí)");</p><p><b> break;</b></p><p> case 3: record.setGrade("高級(jí)");</p><p><b> break;</
83、b></p><p><b> }</b></p><p> record.setTime(spendTime);</p><p> record.setVisible(true); </p><p><b> }</b></p><p><b>
84、}</b></p><p> public void mouseReleased(MouseEvent e){}</p><p> public void mouseEntered(MouseEvent e){}</p><p> public void mouseExited(MouseEvent e){}</p><p>
85、; public void mouseClicked(MouseEvent e){}</p><p><b> }</b></p><p> import javax.swing.ImageIcon;</p><p> public class Block {</p><p> String name;
86、 //名字,比如"雷"或數(shù)字</p><p> int aroundMineNumber; //周圍雷的數(shù)目</p><p> ImageIcon mineIcon; //雷的圖標(biāo)</p><p> boolean isMine=false; //是否是雷</p><p>
87、 boolean isMark=false; //是否被標(biāo)記</p><p> boolean isOpen=false; //是否被挖開</p><p> public void setName(String name) { </p><p> this.name=name; </p><p><b> }</b
88、></p><p> public void setAroundMineNumber(int n) { </p><p> aroundMineNumber=n;</p><p><b> }</b></p><p> public int getAroundMineNumber() {</p>
89、<p> return aroundMineNumber;</p><p><b> }</b></p><p> public String getName() { </p><p> return name; </p><p><b> }</b></p>
90、<p> public boolean isMine() {</p><p> return isMine;</p><p><b> } </b></p><p> public void setIsMine(boolean b) {</p><p><b> isMine=b;<
91、/b></p><p><b> }</b></p><p> public void setMineIcon(ImageIcon icon){</p><p> mineIcon=icon;</p><p><b> }</b></p><p> publi
92、c ImageIcon getMineicon(){</p><p> return mineIcon;</p><p><b> }</b></p><p> public boolean getIsOpen() {</p><p> return isOpen;</p><p><
93、;b> } </b></p><p> public void setIsOpen(boolean p) {</p><p><b> isOpen=p;</b></p><p><b> }</b></p><p> public boolean getIsMark()
94、 {</p><p> return isMark;</p><p><b> }</b></p><p> import javax.swing.*;</p><p> import java.awt.*;</p><p> public class BlockView extends
95、 JPanel{ </p><p> JLabel blockNameOrIcon; //用來顯示Block對(duì)象的name、number和mineIcon屬性</p><p> JButton blockCover; //用來遮擋blockNameOrIcon.</p><p> CardLayout card; //卡片式布局</
96、p><p> BlockView(){</p><p> card=new CardLayout();</p><p> setLayout(card);</p><p> blockNameOrIcon=new JLabel("",JLabel.CENTER);</p><p> block
97、NameOrIcon.setHorizontalTextPosition(AbstractButton.CENTER);</p><p> blockNameOrIcon.setVerticalTextPosition(AbstractButton.CENTER); </p><p> blockCover=new JButton(); </p><p> a
98、dd("cover",blockCover);</p><p> add("view",blockNameOrIcon);</p><p><b> }</b></p><p> public void giveView(Block block){</p><p> if(
99、block.isMine){</p><p> blockNameOrIcon.setText(block.getName());</p><p> blockNameOrIcon.setIcon(block.getMineicon());</p><p><b> }</b></p><p><b>
100、 else {</b></p><p> int n=block.getAroundMineNumber();</p><p><b> if(n>=1)</b></p><p> blockNameOrIcon.setText(""+n);</p><p><b>
101、 else</b></p><p> blockNameOrIcon.setText(" ");</p><p><b> }</b></p><p><b> }</b></p><p> public void seeBlockNameOrIcon(){
102、</p><p> card.show(this,"view");</p><p> validate();</p><p><b> }</b></p><p> public void seeBlockCover(){</p><p> card.show(thi
103、s,"cover");</p><p> validate();</p><p><b> }</b></p><p> public JButton getBlockCover(){</p><p> return blockCover;</p><p><b&
104、gt; } </b></p><p><b> }</b></p><p> import java.util.*;</p><p> import javax.swing.*;</p><p> public class LayMines{ </p><p> Ima
105、geIcon mineIcon; </p><p> LayMines() {</p><p> mineIcon=new ImageIcon("mine.gif");</p><p><b> }</b></p><p> public void layMinesForBlock(Block
106、 block[][],int mineCount){</p><p> int row=block.length;</p><p> int column=block[0].length;</p><p> LinkedList<Block> list=new LinkedList<Block>(); </p><p
107、> for(int i=0;i<row;i++) {</p><p> for(int j=0;j<column;j++)</p><p> list.add(block[i][j]);</p><p><b> } </b></p><p> while(mineCount>0){&l
108、t;/p><p> int size=list.size(); // list返回節(jié)點(diǎn)的個(gè)數(shù)</p><p> int randomIndex=(int)(Math.random()*size);</p><p> Block b=list.get(randomIndex);</p><p> b.setIsMin
109、e(true);</p><p> b.setName("雷");</p><p> b.setMineIcon(mineIcon);</p><p> list.remove(randomIndex); //list刪除索引值為randomIndex的節(jié)點(diǎn)</p><p> mineCount--;
110、</p><p><b> } </b></p><p> for(int i=0;i<row;i++){</p><p> for(int j=0;j<column;j++){</p><p> if(block[i][j].isMine()){</p><p> bloc
111、k[i][j].setIsOpen(false);</p><p> block[i][j].setIsMark(false);</p><p><b> }</b></p><p><b> else {</b></p><p> int mineNumber=0;</p>
112、<p> for(int k=Math.max(i-1,0);k<=Math.min(i+1,row-1);k++) {</p><p> for(int t=Math.max(j-1,0);t<=Math.min(j+1,column-1);t++){</p><p> if(block[k][t].isMine())</p><p>
113、 mineNumber++; </p><p><b> }</b></p><p><b> }</b></p><p> block[i][j].setIsOpen(false); </p><p> block[i][j].setIsMark(false); </p
114、><p> block[i][j].setName(""+mineNumber);</p><p> block[i][j].setAroundMineNumber(mineNumber);</p><p><b> }</b></p><p><b> } </b><
115、/p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p> import java.io.*;</p><p> import java.util.*;</p>
116、;<p> import javax.swing.*;</p><p> import java.awt.event.*;</p><p> import java.awt.*;</p><p> public class Record extends JDialog implements ActionListener{</p>
117、<p> int time=0;</p><p> String grade=null;</p><p> String key=null;</p><p> String message=null;</p><p> JTextField textName; </p><p> JLabel l
118、abel=null; </p><p> JButton 確定,取消;</p><p> public Record(){</p><p> setTitle("記錄你的成績(jī)");</p><p> this.time=time; </p><p> this.grade=grade;&l
119、t;/p><p> setBounds(100,100,240,160);</p><p> setResizable(false);</p><p> setModal(true); </p><p> 確定=new JButton("確定");</p><p> 取消=new JButto
120、n("取消");</p><p> textName=new JTextField(8);</p><p> textName.setText("匿名");</p><p> 確定.addActionListener(this);</p><p> 取消.addActionListener(th
121、is);</p><p> setLayout(new GridLayout(2,1));</p><p> label=new JLabel("您現(xiàn)在是...高手,輸入您的大名上榜");</p><p> add(label);</p><p> JPanel p=new JPanel();</p>
122、<p> p.add(textName);</p><p> p.add(確定);</p><p> p.add(取消);</p><p><b> add(p);</b></p><p> setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);</p&
123、gt;<p><b> }</b></p><p> public void setGrade(String grade){</p><p> this.grade=grade;</p><p> label.setText("您現(xiàn)在是"+grade+"高手,輸入您的大名上榜");&
124、lt;/p><p><b> }</b></p><p> public void setTime(int time){</p><p> this.time=time;</p><p><b> }</b></p><p> import java.io.*;<
125、/p><p> import java.util.*;</p><p> import javax.swing.*;</p><p> import java.awt.event.*;</p><p> import java.awt.*;</p><p> public class ShowRecord ext
126、ends JDialog implements ActionListener{</p><p> File file=new File("英雄榜.txt");</p><p> String name=null;</p><p> Hashtable hashtable=null;</p><p> JButton
127、 顯示,重新記分;</p><p> JLabel label初級(jí)[],label中級(jí)[],label高級(jí)[];</p><p> public ShowRecord(JFrame frame,Hashtable h) {</p><p> setTitle("掃雷英雄榜");</p><p> hashtable
128、=h;</p><p> setBounds(100,100,320,185);</p><p> setResizable(false);</p><p> setVisible(false);</p><p> setModal(true); </p><p> label初級(jí)=new JLabel[3]
129、;</p><p> label中級(jí)=new JLabel[3];</p><p> label高級(jí)=new JLabel[3];</p><p> for(int i=0;i<3;i++) {</p><p> label初級(jí)[i]=new JLabel();</p><p> label初級(jí)[i].
130、setBorder(null);</p><p> label中級(jí)[i]=new JLabel();</p><p> label中級(jí)[i].setBorder(null);</p><p> label高級(jí)[i]=new JLabel();</p><p> label高級(jí)[i].setBorder(null);</p>
131、<p><b> } </b></p><p> label初級(jí)[0].setText("初級(jí)");</p><p> label初級(jí)[1].setText(""+999); </p><p> label初級(jí)[1].setText("匿名"); </p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)--基于java的動(dòng)物換位游戲軟件設(shè)計(jì)
- java課程設(shè)計(jì)-掃雷游戲
- 基于java的動(dòng)物換位游戲軟件設(shè)計(jì)
- java掃雷游戲課程設(shè)計(jì)
- 基于java的掃雷游戲課程設(shè)計(jì)
- 基于java的連連看游戲軟件設(shè)計(jì)
- java課程設(shè)計(jì)--掃雷游戲報(bào)告
- 基于java的動(dòng)物換位游戲軟件設(shè)計(jì)說明
- 基于java的動(dòng)物換位游戲軟件設(shè)計(jì)說明
- java課程設(shè)計(jì)報(bào)告-掃雷小游戲
- java掃雷課程設(shè)計(jì)
- java 課程設(shè)計(jì) 掃雷
- 基于java的掃雷課程設(shè)計(jì)
- 基于java的掃雷課程設(shè)計(jì)
- java課程設(shè)計(jì)---基于java的記事本軟件設(shè)計(jì)
- 【資料下載】基于java的動(dòng)物換位游戲軟件設(shè)計(jì)[原創(chuàng)精品]
- 畢業(yè)論文--掃雷游戲軟件設(shè)計(jì)與實(shí)現(xiàn)
- java_掃雷游戲課程設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- java課程設(shè)計(jì)--基于java的24點(diǎn)游戲
- 基于java的掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論