freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-基于java的掃雷游戲設計(編輯修改稿)

2025-02-08 12:06 本頁面
 

【文章內(nèi)容簡介】 ].getFlag() != 1) { board[i][j].setFlag(1)。 k++。 } } //非雷區(qū)的周圍有幾個雷,初始化其 值 for(i = 1。i = bx。i++) { for(j=1。j=by。j++) { board[i][j].setCount(getCount(i,j))。 } } setBackground()。 repaint()。 } 模塊 3 圖形界面的設計,具體實現(xiàn)函數(shù)如下示: public class Mine extends JFrame implements ActionListener { Container cp = getContentPane()。 JButton bt = new JButton(^_^)。 Label l1 = new Label(列 :)。 Label l2 = new Label(行 :)。 Label l3 = new Label(寬度 :)。 Label l4 = new Label(雷的個數(shù) :)。 TextField tf1 = new TextField(10,2)。 //列 TextField tf2 = new TextField(10,2)。 //行 TextField tf3 = new TextField(40,2)。 //寬度 TextField tf4 = new TextField(15,2)。 //雷的個數(shù) int x=10,y=10,w=40,sum=15。 DrawPanel dp = new DrawPanel(x,y,w,sum)。 public Mine() { setBackground()。 (null)。 (dp)。 (bt)。 (tf1)。 (tf2)。 (tf3)。 (tf4)。 (l1)。 (l2)。 (l3)。 (l4)。 (20 ,10,20,20)。 (40,10,20,20)。 (70,10,20,20)。 (90,10,20,20)。 (120,10,40,20)。 (160,10,20,20)。 (190,10,60,20)。 (250,10,20,20)。 (300,10,80,20)。 (20,40,x*w,y*w)。 setResizable(false)。 setSize(x*w+40,y*w+80)。 setTitle(掃雷 )。 show()。 (this)。 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {(0)。} })。 } public void actionPerformed(ActionEvent e) { if(() == bt) { //x = (())。 //y = (())。 //w = (())。 sum = (())。 setSize(x*w+40,y*w+80)。 (20,40,x*w,y*w)。 show()。 (x,y,w,sum)。 } } 模塊 4 游戲勝利和失敗的條件創(chuàng) 建,當所有雷都被找出時勝利,當左鍵點擊到雷時失敗,具體實現(xiàn)函數(shù)如下示: public void paint(Graphics g) { int x,y,w。 int s。 int cx = bw/2 4。 int cy = bw/2 + 4。 (0,0,600,600)。 for(i=1。i=bx。i++) { for(j=1。j=by。j++) { draw(g,i,j)。 } } if(f == 1) { Font f = new Font(11,1,70)。 Font fo = ()。 ()。 (f)。 //()。 (Game Over,0,200)。 (fo)。 } if( f == 2 ) { Font f = new Font(11,1,70)。 Font fo = ()。 ()。 (f)。 //()。 (You win!,0,200)。 (fo)。 } } 模塊 5 鍵盤事件的監(jiān)聽,使用 Q 鍵退出圖形界面,具體實現(xiàn)函數(shù)如下示: public void getQ() { int keyCode。 (new KeyAdapter() { public void keyPressed(KeyEvent e) { if(()==39。Q39。||()==39。q39。) { (0)。 } } })。 public static void main(String args[]) { Mine nowMine=new Mine()。 ()。 }。 5 程序流程圖的設計 6 運行結果 1 運行程序,生成指定行列數(shù)的掃雷游戲的圖形界面,運行結果如圖所示 2 鼠標左鍵點擊到雷時,失敗,游戲結束,運行結果如圖所示: 3 改變雷的個數(shù),從 15 個雷改為 20 個雷,開始游戲,運行結果如圖所示: 4 所有雷都被找出時,游戲勝利,運行結果如圖所示: 7 總結 這不是我第一次做課程設計,但這個掃雷游戲我平常也會經(jīng)常的玩,所以對于做這個掃雷游戲的課程設計我也是很興奮,雖然這設計過程中遇到很多困難,但都在盡力的克服,對于我自己做出的這個程序我還是比較滿意的,基本功能基本都實現(xiàn)了,圖形界面雖然不能說是非常友好,但好象也至少能看的過去,通過這個課程設計我學到了很多的東西,把以前所學的課本知識很好的用到了實踐當中,并且通過實踐,重新發(fā)現(xiàn)了很多問題和很多以前不理解的沒掌握的知識點,并且通過完成這個設計,很好的重新的理解并掌握了各種知識點。 以下是我對掃雷游戲的設計的總結: 在這個設計過程中,雷的分布是一個關鍵,我是這樣做的,首先我們在雷區(qū)上隨機地放上雷,這可以用 random 類來實現(xiàn)。當沒有雷的地方被點擊后就會顯示一個數(shù)字表示 它周圍有幾個雷,這是怎么實現(xiàn)的呢?我們可以把整個雷區(qū)看成一個二維數(shù)組 a[i ][ j ],如雷區(qū): 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 38 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 我們可以發(fā)現(xiàn) a[ I ][ j ]周圍存在著如下關系: a[ i – 1 ][ j – 1 ] a[ i – 1 ] [ j ] a[ I – 1 ][ j + 1 ] a[ i ][ j – 1 ] a[ i ][ j ] a[ i ][ j + 1 ] a[ i + 1 ][ j 1] a[ i + 1 ][ j ] a[ i + 1][ j + 1 ] 于是 ,可以從 a[ i ][ j ]的左上角順時針開始檢測。當然,如果超出邊界,要用約束條件再加以判斷 ! 掃雷程序還會自動展開已確定沒有雷的雷區(qū)。如果 a[3][4]周圍雷數(shù)為 1, a[2][3]已被標示為地雷,那么 a[2][4], a[2][5],a[3][3], a[3][5],a[4][3], a[4][4], a[4][5]將被展開,一直波及到不可確定的雷區(qū)。這也是實現(xiàn)的關鍵。我們可以把數(shù)組的元素設定為一個類對象,它們所屬的類設定這樣的一個事件:在被展開時,檢查周圍的雷數(shù)是否與周圍標示出來的雷數(shù)相等,如果相等則展開周圍未標示的雷區(qū)。這樣新的雷區(qū)展開又觸發(fā)這個事件,就這樣遞歸下去,一直蔓延到不可展開的雷區(qū)。 在了解以上兩 個關鍵要點 后, 然后在 雷區(qū)這個類編寫完全 , 如添加是否有雷標記,是否展開標記,周圍雷數(shù)等,左右單擊的鼠標事件等 。 這個程序還存在這一些問題: 當改變行列數(shù)時,無法 實現(xiàn)圖形界面的改變; 當使用右鍵標記時,在點擊右鍵成旗幟標記,再點擊一次右鍵成問號標記,然后就不能把問號標記點擊回無標記。 參考資料 [1]耿祥義 .JAVA 大學實用教程 .電子工業(yè)出版社 . [2]朱戰(zhàn)立 ,沈偉 編著. Java 程序設計實用指南. 電子工業(yè)出版社 , [3][美 ]Cay . JAVA2 核心技術 .機械工業(yè)出版社 . 附錄:源代碼選摘 import .*。 import .*。 import 。 import .*。 class Min extends JPanel //雷的類 { //備注:鼠標的左鍵 = 1;右鍵 = 3;中鍵 = 2 private int flag = 0,statu = 0。 //定義雷的屬性 0:沒有打開 1:打開 2:標示為雷 3:不確定 //flag = 0 不是雷 ; flag = 1 是雷 private int but,count = 0。 //but:哪一個鼠標鍵被按下去了 count:這個區(qū)域周圍有多少個雷 private int mx = 0,my = 0,mw = 10。 //定義雷的坐標和寬度 public Min() //構造函數(shù) { statu = 0。 } public Min(int f,int x,int y,int w) //構造函數(shù) { flag = f。 mx = x。 my = y。 mw = w。 } public int getFlag(){return flag。} public int getStatu(){return statu。} public int getMx(){return mx。} public int getMy(){return my。} public int getMw(){return mw。} public int getCount(){return count。} public void setFlag(int f){flag = f。} public void setCount(int c){count = c。} public void setData(int f,int x,int y,int w,int s) //傳遞值 { flag = f。 mx = (x1)*w。 my = (y1)*w。 mw = w1。 statu = s。 } //根據(jù)你點擊鼠標的不同來改變雷的屬性 public int sendKey(int key) { //返回值,如果游戲結束則返回 1 int rtn = 1。 if(key == 3) { switch(statu) { case 1: break。 case 2: statu = 3。 break。 case 3: statu = 0。 break。 case 0: statu = 2。 break。 } rtn = 1。 } if(key == 1 amp。amp。 statu == 0) { switch(flag) { case 0: statu = 1。 rtn = 2。 break。 case 1: statu = 1。 rtn = 1。 break。 } } return rtn。 } } class DrawPanel extends JPanel { private int i,j。 private int f = 0。 //if f = 1 then game over ,if f =2 then win private int chx = 0,chy = 0。 //專門記錄坐標 x,y 的值 private int msum = 6,ksum = 0。 //msum:雷的個數(shù) ,ksum:標示雷的個數(shù) private i
點擊復制文檔內(nèi)容
試題試卷相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1