




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
裝訂線目 錄目 錄11 實(shí)訓(xùn)目的22 掃雷系統(tǒng)的分析與設(shè)計(jì)22.1 系統(tǒng)功能描述22.2 系統(tǒng)模塊設(shè)計(jì)23 主要代碼清單34 程序運(yùn)行與測試35 實(shí)訓(xùn)總結(jié)4附:圖表的格式:413課程實(shí)訓(xùn)報(bào)告書掃雷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)1 實(shí)訓(xùn)目的Java程序設(shè)計(jì)實(shí)訓(xùn)是計(jì)算機(jī)專業(yè)一門重要的專業(yè)技術(shù)基礎(chǔ)實(shí)踐課程。為了能夠較好的完成實(shí)訓(xùn)任務(wù),學(xué)生應(yīng)具備軟件開發(fā)技術(shù)的基礎(chǔ)知識(shí),實(shí)訓(xùn)的主要目的在于將理論與實(shí)際應(yīng)用相結(jié)合,使用程序設(shè)計(jì)語言java,以及相關(guān)軟件MyEclipse 6.0.1設(shè)計(jì)開發(fā)知識(shí)完成軟件的設(shè)計(jì)開發(fā)任務(wù)。本實(shí)訓(xùn)課程通過對(duì)掃雷小游戲的設(shè)計(jì)開發(fā)將為整個(gè)專業(yè)的學(xué)習(xí)以及軟件設(shè)計(jì)水平的提高打下良好的基礎(chǔ),提高學(xué)生項(xiàng)目分析、設(shè)計(jì)、編寫、調(diào)試和測試的能力,并培養(yǎng)基本的、良好的團(tuán)隊(duì)合作能力。2 掃雷系統(tǒng)的分析與設(shè)計(jì)2.1 系統(tǒng)功能描述通過此系統(tǒng)可以實(shí)現(xiàn)如下功能:1)進(jìn)行游戲游戲分為初級(jí)、中級(jí)、高級(jí)三個(gè)等級(jí),可以進(jìn)行選擇游戲。2)統(tǒng)計(jì)時(shí)間 當(dāng)鼠標(biāo)點(diǎn)擊雷區(qū)開始計(jì)時(shí),直到點(diǎn)到雷或找出全部的雷時(shí),計(jì)時(shí)結(jié)束。3)雷數(shù)、高度和寬度可自定義4)實(shí)時(shí)的顯示未掃出的雷數(shù)5)實(shí)現(xiàn)掃雷英雄榜 當(dāng)找出全部的雷破紀(jì)錄時(shí),跳出對(duì)話框“請(qǐng)留下大名”,此時(shí)單擊確定會(huì)將你的時(shí)間和名稱記錄到掃雷英雄榜中。6)改變界面顏色 分為黑色和白色兩種。2.2 系統(tǒng)模塊設(shè)計(jì)1、界面設(shè)計(jì)包括主窗口界面:菜單設(shè)計(jì)、面板panel1的設(shè)計(jì)(添加控件)、面板panel2的設(shè)計(jì)(布雷);附屬對(duì)話框(或窗口)界面:自定義對(duì)話框、掃雷英雄榜對(duì)話框、請(qǐng)留下大名對(duì)話框、掃雷幫助窗口。2、功能模塊設(shè)計(jì)包括實(shí)現(xiàn)游戲初級(jí)、中級(jí)、高級(jí)轉(zhuǎn)換、使用線程計(jì)時(shí)、自定義雷區(qū)方塊數(shù)及 雷數(shù)、記錄下破紀(jì)錄時(shí)的人名和所用時(shí)間、改變面板的背景顏色。3 主要代碼清單全部代碼定義了三個(gè)類,其中dialog_zidingyi類是定義“自定義”對(duì)話框并對(duì)其添加部分單擊事件;SaoleiJFrame類是主類,除dialog_zidingyi類和Bomb類中的內(nèi)容外,包含其他所有的操作及定義(包括對(duì)dialog_zidingyi類和Bomb類進(jìn)行對(duì)象初始化)。class Bomb extends JButton /定義雷類 public int num_x,num_y; /第幾號(hào)方塊 public int BombRoundCount; /周圍雷數(shù) public boolean isBomb; /是否為雷 public boolean isClicked; /是否被點(diǎn)擊 public int BombFlag; /探雷標(biāo)記 public boolean isRight; /是否點(diǎn)擊右鍵 public Bomb(int x,int y) BombFlag = 0; num_x = x; num_y = y; BombRoundCount = 0; isBomb = false; isClicked = false; isRight = false;class dialog_zidingyi extends JDialog implements ActionListener .public class SaoleiJFrame extends JFrame implements ActionListener,MouseListener,WindowListener /主類./定義控件的代碼在這里不詳細(xì)列出了public SaoleiJFrame()height=9;weight=9;num =10;mineDim=18;/默認(rèn)雷區(qū)尺寸及類數(shù)目 replay();. class Timestart extends Thread. public void startBomb() . public void replay() . public void isWin() . public void CountRoundBomb(). public void isNull(Bomb bombButton,Bomb ClickecButton) . public void actionPerformed(ActionEvent e). public void mouseClicked(MouseEvent e). ./其它事件不詳細(xì)列出了public static void main(String args)new SaoleiJFrame();3.1 界面設(shè)計(jì) 1、功能:添加菜單、面板及面板上的控件、定義雷區(qū) 代碼:public SaoleiJFrame() super(掃雷); /默認(rèn)BorderLayout布局this.setResizable(false);this.setDefaultCloseOperation(EXIT_ON_CLOSE);JMenuBar menubar=new JMenuBar(); /菜單欄this.setJMenuBar(menubar);JMenu menu_game=new JMenu(游戲(G);menu_game.setMnemonic(G);menubar.add(menu_game); popupmenu=new JPopupMenu(); /快捷菜單對(duì)象menuitem_start=new JMenuItem(開始(N);menuitem_start.setMnemonic(N);menuitem_start.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,InputEvent.BUTTON1_MASK);popupmenu.add(menuitem_start);menu_game.add(menuitem_start);menuitem_start.addActionListener(this); menu_game.addSeparator(); /加分隔線 。 。其它菜單以同樣的方式添加 。 。panel1=new JPanel(); label_1eishu=new JLabel();label_1eishu.setSize(50,25);label_1eishu.setHorizontalAlignment(JLabel.CENTER); label_1eishu.setVerticalAlignment(JLabel.CENTER); button=new JButton();button.setSize(25,25); button.setIcon(new ImageIcon(src/qq1.gif);button.setBackground(Color.lightGray );button.setBorder(BorderFactory.createRaisedBevelBorder(); button.addActionListener(this);/突出了label_jishi=new JLabel(0);label_jishi.setSize(50,25); label_jishi.setHorizontalAlignment(JLabel.CENTER); label_jishi.setVerticalAlignment(JLabel.CENTER);/界面布局panel2=new JPanel();panel2.setBackground(Color.lightGray ); panel2.setBorder(BorderFactory.createLoweredBevelBorder();. 2、功能:掃雷英雄榜對(duì)話框(9個(gè)label放在一個(gè)面板panel_dialog_h1上,2個(gè)button在面板panel_dialog_h2上)及破紀(jì)錄對(duì)話框(label、text、button各一個(gè),在一個(gè)3行1列的面板上) 代碼:dialog_pojilu=new JDialog(dialog_hero,請(qǐng)留下大名); 。 。其它代碼此處不詳細(xì)列出了。 圖: 3、功能:計(jì)時(shí)4、功能:自定義對(duì)話框(類dialog_zidingyi中),對(duì)話框中用到3個(gè)面板,各放3個(gè)label、3個(gè)text、2個(gè)button(此處控件添加不詳細(xì)列出了);主要 代碼:public dialog_zidingyi(JFrame SaoleiJFrame) super(SaoleiJFrame,自定義雷區(qū),true);this.setSize(200, 140); this.setResizable(false);this.setLayout(new GridLayout(1,3); weightnum=9; heightnum=9; BombNum=10;public void actionPerformed(ActionEvent e) if(e.getSource()=button_dialog_z1) try weightnum=Integer.parseInt(text_dialog_z2.getText(); heightnum=Integer.parseInt(text_dialog_z1.getText(); BombNum=Integer.parseInt(text_dialog_z3.getText();/對(duì)輸入數(shù)據(jù)進(jìn)行判斷,是否有效賦值給boolean型變量judge judge=(heightnum24|heightnum30|weightnumheightnum*weightnum-24|BombNum0); /對(duì)非法、有效兩種情況作響應(yīng)處理 if (judge) messageBox.showMessageDialog(null,輸入超出范圍,錯(cuò)誤!,JOptionPane.ERROR_MESSAGE); heightnum=9; weightnum=9; BombNum=10; setVisible(false); catch(NumberFormatException e1) messageBox.showMessageDialog(null,輸入數(shù)據(jù)格式有錯(cuò)!,錯(cuò)誤!,JOptionPane.ERROR_MESSAGE); setVisible(false); if(e.getSource()=button_dialog_z2) setVisible(false); /Dialog的三個(gè)方法,用于返回有效的輸入值 public int getH() return heightnum; public int getW() return weightnum; public int getN() return BombNum;3.2 雷區(qū)設(shè)計(jì) 1、功能:布雷(startBomb())、初始化(replay())、代碼:public void startBomb() for(int i=0;inum;i+) int x =(int)(Math.random()*(int)(height-1); int y =(int)(Math.random()*(int)(weight-1); if(bombButton x y .isBomb=true) i-; else bombButton x y .isBomb=true ; public void replay() loseJudge=false; winJudge=false;/輸贏標(biāo)志初始化 bombhavenum=0;/已找到的雷數(shù)目初始化 leftNum=num;/剩余的雷數(shù)目初始化 label_1eishu.setText(String.valueOf(leftNum);panel1.removeAll(); panel2.removeAll(); panel1.setBackground(Color.lightGray );panel1.setBorder(BorderFactory.createLoweredBevelBorder();/凹下去啦this.setLayout(null); panel1.setLayout(null); panel2.setLayout(new GridLayout(height,weight); this.setSize(mineDim*weight,mineDim*height+60+20); panel1.setBounds(0,0,mineDim*weight,30); panel2.setBounds(0,30,mineDim*weight,mineDim*height); label_1eishu.setBounds(mineDim*weight/4-26,0,50,30); button.setBounds(mineDim*weight/2-16,0,30,30); label_jishi.setBounds(mineDim*weight/4*3-26,0,50,30); bombButton=new Bombheightweight; /設(shè)置雷區(qū)for(int i = 0 ; i height; i+ ) for(int j = 0 ; j weight; j+ ) bombButton i j =new Bomb(i,j); bombButtonij.setBackground(Color.white);bombButton i j .setBorder(BorderFactory.createRaisedBevelBorder(); bombButton i j .addActionListener(this); bombButton i j .addMouseListener(this); bombButton i j .setSize(mineDim,mineDim);panel2.add(bombButton i j );panel1.add(label_jishi);panel1.add(button);panel1.add(label_1eishu);this.add(panel1,North);this.add(panel2);this.show(true);startBomb(); /布雷 2、功能:判斷是否贏了(即找出所有的雷)代碼:public void isWin() int findBomb=0; /找到的地雷數(shù) for(int i = 0;i height; i+) for(int j = 0;j weight; j+) if(bombButton i j .isBomb = true & bombButton i j .isRight = true) findBomb+; if(findBomb=num) thread1.b=false;button.setIcon(new ImageIcon(src/qq3.gif);dialog_pojilu.setVisible(true);replay(); 3、功能:計(jì)算一個(gè)方塊周圍雷數(shù),假設(shè)bombButton i j 這個(gè)位置沒有雷時(shí),分別判斷它周圍八個(gè)位置是否有雷。代碼:public void CountRoundBomb()for (int i = 0; i height; i+) for (int j = 0; j = 0) & (j - 1 = 0) /檢測左上方空格是否是地雷 if (bombButtoni - 1j - 1.isBomb = true) count += 1; 。 。其他方向同理。 。bombButton i j .BombRoundCount = count; 4、功能:當(dāng)選中位置為空,翻開周圍的地圖,顯示其周圍有多少雷。也是站在一個(gè)位置當(dāng)沒點(diǎn)到雷時(shí),判斷它周圍八個(gè)位置是否為空;再站在它的周圍八個(gè)位置上,看它們各自周圍八個(gè)位置是否為空,以此類推。代碼:public void isNull(Bomb bombButton,Bomb ClickecButton) int i,j; i=ClickecButton.num_x; j=ClickecButton.num_y; if (ClickecButton.isBomb=true) else if ( (i - 1 = 0) & (j - 1 = 0) /檢測左上方空格是否是空 if (bombButtoni - 1j - 1.isBomb = false & bombButtoni - 1j - 1.isClicked = false & bombButtoni - 1j - 1.isRight = false) bombButtoni - 1j - 1.setText(bombButtoni - 1j 1.BombRoundCount)+); bombButtoni - 1j - 1.setEnabled(false); bombButtoni - 1j - 1.isClicked=true; 。 。其余七個(gè)位置以相同方式判斷。 。if ( (i - 1 = 0) & (j - 1 = 0)/檢測在左上位置上時(shí),它周圍的八個(gè)位置isNull(bombButton,bombButtoni - 1j - 1); 。 。其余七個(gè)位置以相同方式判斷。 。 5、功能:是寫在雷區(qū)的單擊事件中,當(dāng)鼠標(biāo)點(diǎn)擊雷區(qū)時(shí)觸發(fā)。 代碼:CountRoundBomb(); if(Bomb)e.getSource().isBomb=false & (Bomb)e.getSource().isClicked = false) (Bomb)e.getSource().isClicked=true;(Bomb)e.getSource().setEnabled(false); (Bomb)e.getSource().setText( (Bomb)e.getSource().BombRoundCount )+); (Bomb)e.getSource().setIcon(null); if(Bomb)e.getSource().BombRoundCount) = 0) isNull(bombButton,(Bomb)e.getSource(); isWin(); /當(dāng)翻開為空時(shí) else if(Bomb)e.getSource().isBomb = true) for(int i=0;iheight;i+) for(int j=0;j 0 & bombSource.isRight = false ) bombSource.se
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 村民就業(yè)問題的現(xiàn)狀與挑戰(zhàn)分析
- 廣東省湛江雷州市2024年化學(xué)九上期末復(fù)習(xí)檢測模擬試題含解析
- 江蘇省無錫市錫山區(qū)錫東片2025屆化學(xué)九上期末質(zhì)量檢測模擬試題含解析
- 河北滄州泊頭市蘇屯初級(jí)中學(xué)2024年七上數(shù)學(xué)期末教學(xué)質(zhì)量檢測模擬試題含解析
- 江蘇省常州市溧陽市2025屆八上數(shù)學(xué)期末達(dá)標(biāo)測試試題含解析
- 智能物流產(chǎn)業(yè)發(fā)展及技術(shù)創(chuàng)新研究報(bào)告
- 2025至2030靜脈留置針行業(yè)項(xiàng)目調(diào)研及市場前景預(yù)測評(píng)估報(bào)告
- 寫字樓消防通道保潔要求
- 2025至2030數(shù)字金融行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國自動(dòng)滴咖啡機(jī)行業(yè)市場占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 實(shí)驗(yàn)室培育鉆石行業(yè)技術(shù)發(fā)展趨勢(shì)報(bào)告
- 2025年領(lǐng)英大制造行業(yè)人才全球化報(bào)告-馬來西亞篇
- 專題:閱讀理解 30篇 中考英語高分提升之新題速遞第二輯【含答案+解析】
- 企業(yè)面試題目和答案大全
- 抖音房產(chǎn)直播課件
- 2025至2030中國近視眼治療儀市場競爭力剖析及企業(yè)經(jīng)營形勢(shì)分析報(bào)告
- 日本所有番號(hào)分類
- 國際壓力性損傷-潰瘍預(yù)防和治療臨床指南(2025年版)解讀課件
- 降低手術(shù)患者術(shù)中低體溫發(fā)生率
- 患者跌倒墜床風(fēng)險(xiǎn)評(píng)估流程防范措施
- 病理生理學(xué)試題及答案
評(píng)論
0/150
提交評(píng)論