題目二掃雷游戲_第1頁
題目二掃雷游戲_第2頁
題目二掃雷游戲_第3頁
題目二掃雷游戲_第4頁
題目二掃雷游戲_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、題目二掃雷游戲2.1 題目需求簡要闡述設(shè)計題目的功能要求等。首先,對游戲了解的多少分別設(shè)置了不同的級別,玩家可以隨著自己對游戲的熟悉程度不斷加深而選擇萬更高的級別,可謂趣味百出,其樂無窮?。?.2 設(shè)計的內(nèi)容及要求設(shè)計內(nèi)容:設(shè)計要求:1、掃雷游戲氛圍初級、中級、高級三個級別,掃雷英雄榜存儲每個級別的好成績,即挖出的全部地雷且用時最少者。單擊游戲菜單選擇“初級”、“中級”、“高級”或“查看英雄榜”;2、選擇級別后將出現(xiàn)相應(yīng)級別的掃雷區(qū)域,這時用戶使用鼠標(biāo)左鍵單擊雷區(qū)中的任何一個地方便啟動計時器;3、用戶要揭開某個方塊,可單擊它。若所揭方塊下有雷,用戶便輸了這一局,若所揭方塊下五雷,則顯示一個數(shù)字

2、,該數(shù)字代表方塊的周圍的8 個方塊中共有多少顆雷;4、如果用戶認(rèn)為某個方塊下埋著雷,單擊右鍵可以在方塊上標(biāo)記一個用戶可以識別的記號,級給出一個掃雷圖標(biāo)。用戶每標(biāo)記出一個掃雷標(biāo)記(無論用戶的標(biāo)記是否正確),程序?qū)@示的剩余雷數(shù)減少一個;5、掃雷勝利后(用時最少者),程序彈出保存成績的對話框。2.3 總體設(shè)計通常包括功能模塊劃分、功能模塊層次、相關(guān)類文件及類的調(diào)用關(guān)系等。在設(shè)計掃雷游戲時,需要編寫7個Java源文件:MineGame.java、MineArea.java、Block.java、BlockView.java、LayMines.java、Record.java和ShowRecord.j

3、ava。1,利用布局管理器設(shè)計計算器整體布局,整個系統(tǒng)采用borderlayout,GridLayout布局,其中使用了2個面板和一個二位數(shù)組面板。2,利用按鈕設(shè)計地雷和提示語,通過按鈕的事件處理實現(xiàn)按鈕操作功能。2.4 詳細(xì)設(shè)計及實現(xiàn)2.4.1 操作界面設(shè)計闡述軟件的運行及用戶操作的界面方案,包括窗口大小位置、控件布局、文字顏色、字體及操作邏輯等。掃雷只有一個類,這個類包含多個函數(shù),每個函數(shù)具有不同的功能,在主函數(shù)里調(diào)用,從而生成掃雷。2.4.2 類成員變量及方法設(shè)計介紹各個類的成員變量及方法的設(shè)計細(xì)節(jié),詳細(xì)闡述主要方法的算法邏輯。2.4.3 類圖及關(guān)鍵算法流程圖設(shè)置雷數(shù)初始化左右鍵點擊N失

4、???勝利?YY 重新開局?退出?Y局部初始化退出2.4.4 源代碼分析詳細(xì)闡述主要功能實現(xiàn)涉及的類及方法,要求對關(guān)鍵代碼段進(jìn)行分析,簡述其設(shè)計思路。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Frame extends JFrameJTextField text;JLabel nowBomb,setBomb;int BombNum,BlockNum;/當(dāng)前雷數(shù),當(dāng)前方塊數(shù)int rightBomb,restBomb,restBlock;/找到的地雷數(shù),剩余雷數(shù),剩余方塊數(shù)/*JMenuB

5、ar Bar;JMenu fileMenu;JMenuItem 初級,中級,高級,掃雷英雄榜;*/JButton start=new JButton(重新開始);JPanel MenuPanel=new JPanel();JPanel bombPanel=new JPanel();BombbombButton;JPanel c;BorderLayout borderLayout1=new BorderLayout();GridLayout gridLayout1=new GridLayout();public Frame()trysetDefaultCloseOperation(EXIT_ON

6、_CLOSE);jbInit();catch(Exception exception)exception.printStackTrace();private void jbInit() throws Exceptionc=(JPanel)getContentPane();setTitle(掃雷);c.setBackground(Color.YELLOW);MenuPanel.setBackground(Color.GRAY);c.setLayout(borderLayout1);setSize(new Dimension(600,600);setResizable(false);/*fileM

7、enu=new JMenu(游戲);初級=new JMenuItem(初級);中級=new JMenuItem(中級);高級=new JMenuItem(高級);掃雷英雄榜=new JMenuItem(掃雷英雄榜);fileMenu.add(初級);fileMenu.add(中級);fileMenu.add(高級);fileMenu.add(掃雷英雄榜);初級.addActionListener(this);*/BlockNum=169;BombNum=10;text=new JTextField(10,2);/“10”是默認(rèn)地雷數(shù),3是文本框的長度nowBomb=new JLabel(當(dāng)前雷

8、數(shù)+:+BombNum);setBomb=new JLabel(設(shè)置地雷數(shù));start.addActionListener(new Frame1_start_actionAdapter(this);MenuPanel.add(setBomb);/設(shè)置地雷數(shù)標(biāo)簽MenuPanel.add(text);/設(shè)置地雷數(shù)文本框MenuPanel.add(start);/重新開始MenuPanel.add(nowBomb);/當(dāng)前地雷數(shù)標(biāo)簽c.add(MenuPanel,java.awt.BorderLayout.SOUTH);/設(shè)置菜單面板,下方bombPanel.setLayout(gridLayo

9、ut1);/地雷邊框gridLayout1.setColumns(int)Math.sqrt(BlockNum);gridLayout1.setRows(int)Math.sqrt(BlockNum);bombButton=new Bomb(int)Math.sqrt(BlockNum)(int)Math.sqrt(BlockNum);for(int i=0;i(int)Math.sqrt(BlockNum);i+)for(int j=0;j=10&num100)BombNum=num;startBomb();else if(num10)JOptionPane.showMessageDialo

10、g(null,您設(shè)置的地雷數(shù)太少了,請重設(shè)!,錯誤,JOptionPane.ERROR_MESSAGE);/錯誤提示num=10;BombNum=num;elseJOptionPane.showMessageDialog(null,您設(shè)置的地雷數(shù)太多了,請重設(shè)!,錯誤,JOptionPane.ERROR_MESSAGE);/錯誤提示num=10;BombNum=num;/*開始,布雷*/public void startBomb()nowBomb.setText(當(dāng)前雷數(shù)+:+BombNum);for(int i=0;i(int)Math.sqrt(BlockNum);i+)for(int j

11、=0;j(int)Math.sqrt(BlockNum);j+)bombButtonij.isBomb=false;bombButtonij.isClicked=false;bombButtonij.isRight=false;bombButtonij.BombFlag=0;bombButtonij.BombRoundCount=0;bombButtonij.setEnabled(true);bombButtonij.setText();bombButtonij.setFont(new Font(,Font.PLAIN,14);/設(shè)置字體大小bombButtonij.setForeground

12、(Color.BLUE);rightBomb=0;restBomb=BombNum;restBlock=BlockNum-BombNum;for(int i=0;iBombNum;)int x=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1);/?int y=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1);/?if(bombButtonxy.isBomb!=true)/!什么作用bombButtonxy.isBomb=true;i+;CountRoundBomb();/*計算方塊周圍雷數(shù)*/pub

13、lic void CountRoundBomb()for(int i=0;i(int)Math.sqrt(BlockNum);i+)for(int j=0;j(int)Math.sqrt(BlockNum);j+)int count=0;/當(dāng)需要檢測的單元格本身無地雷的情況下,統(tǒng)計周圍的地雷個數(shù)if(bombButtonij.isBomb!=true)for(int x=i-1;xi+2;x+)for(int y=j-1;y=0)&(y=0)&(x(int)Math.sqrt(BlockNum)&(y(int)Math.sqrt(BlockNum)if(bombButtonxy.isBomb=

14、true)count+;bombButtonij.BombRoundCount=count;/*是否挖完了所有的雷*/public void isWin()restBlock=BlockNum-BombNum;for(int i=0;i(int)Math.sqrt(BlockNum);i+)for(int j=0;j(int)Math.sqrt(BlockNum);j+)if(bombButtonij.isClicked=true)restBlock-;if(rightBomb=BombNum|restBlock=0)JOptionPane.showMessageDialog(this,您挖完

15、了所有的雷,您勝利了!,勝利,JOptionPane.INFORMATION_MESSAGE);/信息提示,標(biāo)題:勝利 。startBomb();/*當(dāng)選中的位置為空,則翻開周圍的方塊*/public void isNull(Bomb ClickedButton)int i,j;i=ClickedButton.num_x;j=ClickedButton.num_y;for(int x=i-1;xi+2;x+)for(int y=j-1;y=0)&(y=0)&(x(int)Math.sqrt(BlockNum)&(y0)ClickedButton.setText(ClickedButton.Bo

16、mbRoundCount+);elseisNull(ClickedButton);/*左鍵點擊*/public void actionPerformed(ActionEvent e)if(Bomb)e.getSource().isClicked=false&(Bomb)e.getSource().isRight=false)if(Bomb)e.getSource().isBomb=false)turn(Bomb)e.getSource();isWin();elsefor(int i=0;i(int)Math.sqrt(BlockNum);i+)for(int j=0;j0)bombSource

17、.setForeground(Color.RED);bombSource.setFont(new Font(,Font.BOLD,11);bombSource.setText(F);/玩家用鼠標(biāo)右鍵標(biāo)注發(fā)現(xiàn)的地雷 單擊bombSource.isRight=true;restBomb-;elsebombSource.BombFlag=0;else if(bombSource.BombFlag=2)restBomb+;bombSource.setText(Q);/玩家用鼠標(biāo)右鍵標(biāo)注發(fā)現(xiàn)的地雷 雙擊bombSource.isRight=false;elsebombSource.setText();i

18、f(bombSource.isBomb=true)if(bombSource.BombFlag=2)rightBomb+;else if(bombSource.BombFlag=2)rightBomb-;nowBomb.setText(當(dāng)前雷數(shù)+:+restBomb);isWin();public static void main(Stringargs)Frame frame=new Frame();frame.setVisible(true);class Frame1_start_actionAdapter implements ActionListenerprivate Frame ada

19、pter;Frame1_start_actionAdapter(Frame adapter)this.adapter=adapter;public void actionPerformed(ActionEvent e)adapter.start_actionPerformed(e);/class Bomb extends JButtonint num_x,num_y;/第幾號方塊int BombRoundCount;/周圍雷數(shù)boolean isBomb;/是否為雷boolean isClicked;/是否被點擊int BombFlag;/探雷標(biāo)記boolean isRight;/是否點擊右鍵public Bomb(int x,int y)num_x=x;num_y=y;BombFlag=0;BombRoundCount=9;isBomb=fal

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論