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

正文內(nèi)容

掃雷游戲計(jì)算機(jī)-資料下載頁

2024-12-07 09:10本頁面

【導(dǎo)讀】1.學(xué)習(xí)和掌握計(jì)算機(jī)編程相關(guān)的基本知識(shí);2.了解和運(yùn)用JAVA面向?qū)ο蟮奶匦裕?.熟悉JAVA的可移植性,跨平臺(tái)性等多種特性;5.訓(xùn)練檢索文獻(xiàn)資料和利用文獻(xiàn)資料的能力;6.訓(xùn)練撰寫技術(shù)文檔與學(xué)位論文的能力。1.進(jìn)行可行性分析以及需求分析;2.論述畢業(yè)設(shè)計(jì)所需開發(fā)環(huán)境以及開發(fā)工具;4.在概要設(shè)計(jì)的基礎(chǔ)上進(jìn)行詳細(xì)設(shè)計(jì),編寫實(shí)現(xiàn)各個(gè)類;1.內(nèi)容完整、層次清晰、敘述流暢、排版規(guī)范的畢業(yè)設(shè)計(jì)論文;[3]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論(第三版)[M].北京:高等教育出版社,腦游戲,現(xiàn)在已成為很多人休閑娛樂的首要之選。為了滿足大家娛樂、休閑、放松的需。求,并且能適當(dāng)開發(fā)玩家的智力,為鞏固并創(chuàng)新所學(xué)知識(shí),所以開發(fā)并研究了本課題。頁面布局,JAVA語言中的典型遞歸算法,精細(xì)的隨機(jī)布雷算法等。完成了本論文,希望能為今后windows操作系統(tǒng)中掃雷游戲的發(fā)展提供一定的幫助。

  

【正文】 (int q=0。qrowamp。amp。p==1。q++){ if(((n+col*q)=(m*col))amp。amp。((n+col*q)(m+1)*col)){ if(a[x][y1]!=0amp。amp。a[x][y1]!=10){ btns[n+col*q].setText(a[x][y1]+)。 a[x][y1]=10。 btns[n+col*q].setEnabled(false)。 } 設(shè)置如果該方塊同一行左側(cè)的按鈕相應(yīng)位置的值既不是雷又不是以及點(diǎn)擊過 的按鈕,則說明該按鈕周圍有雷。 else if(a[x][y1]==0){ out(a,btns,e,n+col*q,x,y1)。 a[x][y1]=10。 btns[n+col*q].setEnabled(false)。 } p=0。 此段代碼用來說明如果這個(gè)方塊同一行左側(cè)的方塊既不是雷周圍又沒有雷時(shí),用遞歸算法,判斷這個(gè)方塊周圍的其它方塊時(shí)什么情況。 if(n1amp。amp。ncolamp。amp。m1amp。amp。mcol) { for(int q=0。qrowamp。amp。p==1。q++){ if(((n+col*q)=(m*col))amp。amp。((n+col*q)(m+1)*col)){ if(a[x][y+1]!=0amp。amp。a[x][y+1]!=10){ btns[n+col*q].setText(a[x][y+1]+)。 a[x][y+1]=10。 btns[n+col*q].setEnabled(false)。 } 設(shè)置如果該方塊同一行右側(cè)的按鈕相應(yīng)位置的值既不是雷又不是以及點(diǎn)擊過的按鈕,則說明該按鈕周圍有雷。 else if(a[x][y+1]==0){ out(a,btns,e,n+col*q,x,y+1)。 a[x][y+1]=10。 14 btns[n+col*q].setEnabled(false)。 } p=0。 此段代碼用來說明如果這個(gè)方塊同一行右側(cè)的方塊既不是雷周圍又沒有雷時(shí),用遞歸算法,判斷這個(gè)方塊周圍的其它方塊時(shí)什么情況。 由此看出, out()方法中使用遞歸算法來判斷某個(gè)方塊周圍其他方塊的情況。為actionPerformed()方法的調(diào)用打下了基礎(chǔ)。 actionPerformed()方法 actionPerformed()方法中為初級(jí)、中級(jí)、高級(jí)各個(gè)級(jí)別設(shè)置了具體的頁面布局,還為幫助菜單中的游戲說明和關(guān)于掃雷兩個(gè)菜單項(xiàng)分別設(shè)置了一個(gè)消息提示框,其中還使用了 btns[i].addActionListener(this)。語句用來添加動(dòng)作事件監(jiān)聽器,以及btns[i].addMouseListener(new NormoreMouseEvent())。語句用來添加普通按鈕事件監(jiān)聽器。具體代碼如下(由于初級(jí)、中級(jí)、高級(jí)只是游戲區(qū)的行、列、雷數(shù)不同,其它都基本一樣,所以此處只列舉初 級(jí)的基本代碼): public void actionPerformed(ActionEvent e) { if(()==初級(jí) ){ row=9。 col=9。 bon=10。 a1=new int[bon]。 b=bon。 //setSize(297,377)。 a = new int[row+2][col+2]。 (p2)。 ()。 (10)。 (0)。 ()。 btns=new JButton[row*col]。 p2=new JPanel()。 (new GridLayout(row,col,0,0))。 for(int i=0。irow*col。i++){ btns[i]=new JButton( )。 btns[i].setMargin(new Insets(0,0,0,0))。 btns[i].setFont(new Font(null,25))。 btns[i].addActionListener(this)。 btns[i].addMouseListener(new NormoreMouseEvent())。 (btns[i])。} (p2,)。 //setSize(297,377)。 ()。 for(int i=0。irow*col。i++){ btns[i].setText( )。 btns[i].setEnabled(true)。} for(int i=0。irow+2。i++){ for(int j=0。jcol+2。j++){ a[i][j]=0。} } 15 if (()==游戲說明 ){ String message = ,如果沒有踩到雷,則方塊顯示數(shù)字為幾,就說明該 \n數(shù)字周圍一圈的 8個(gè)位置中有 幾個(gè)雷,如果踩到的事雷,那么游戲結(jié)束,即輸?shù)?\n游戲。 \是雷的方塊,以減少雷 \n的數(shù)量(注意不管所標(biāo)記的是否為雷,雷數(shù)都會(huì)減一)。若玩家把所有非雷的 \n方塊找出則勝利。 。 (this, message)。 }else if (()==關(guān)于掃雷 ){ String message = 掃雷游戲是以娛樂休閑為主的小型游戲,不僅可以使玩家休閑放松, 消磨時(shí) \n間,而且還可以拓展玩家的觀察能力與思維能力。適用于學(xué)生、公務(wù)員、白領(lǐng) \n等各種人群。這個(gè)游戲玩一局的時(shí)間很短,最多只需幾分鐘,這樣既有助于大 \n家放松心態(tài),又不需花費(fèi)太多時(shí)間,而且操作簡單,所以受到了大家的廣泛認(rèn) \n可和歡迎。 。 (this, message)。} 當(dāng)玩家點(diǎn)擊某個(gè)方塊時(shí), actionPerformed()方法負(fù)責(zé)執(zhí)行有關(guān)算法,其中包括當(dāng)玩家用鼠標(biāo)左鍵單擊方塊上的按鈕后,若該方塊下有雷, actionPerformed()方法將使玩家輸?shù)舯敬斡螒?,然而若方塊下無雷, actionPerformed()方法將顯示 blockView對(duì)象中的標(biāo)簽上的數(shù)字,即該方塊周圍 8個(gè)方塊中所擁有的雷數(shù)。另外,重要的是其中還 使用了Math類中的 random()方法來產(chǎn)生隨機(jī)數(shù),用于游戲布雷時(shí)隨機(jī)指定雷所在的位置,具體代碼如下: for(int i=0。ibon。i++){ int p=1。 int m=(int)(()*row*col)。 while(p==1){ int l=1。 int j。 for( j=0。jiamp。amp。l==1。j++){ if(a1[j]==m){ m=(int)(()*row*col)。 l=0。 } } if(j==i){ a1[i]=m。 p=0。} } } mouseClicked()方法 mouseClicked(Mouseevent e)方法重寫了 mouseClicked方法,該方法當(dāng)鼠標(biāo)單擊時(shí)會(huì)觸發(fā)。主要代碼如下: if(()==btns[i]amp。amp。btns[i].getText()!=★ amp。amp。a[x1][y1]!=10){ if(()==){ btns[i].setText(★ )。 b。 if(b==0){ int flag=0。 for(int j=0。jcol*row。j++){ int x=j/col+1。 16 int y=j%col+1。 if(a[x][y]==100amp。amp。btns[j].getText()==★ ){ flag++。 } } if(flag==bon){ ()。 (你贏了! )。 } } (b+)。 } }else if(()==btns[i]amp。amp。btns[i].getText()==★ amp。amp。a[x1][y1]!=1){ if(()==){ btns[i].setText()。 b++。 if(bbon){ (bon+)。 } else{ (b+)。 } btns[i].setEnabled(true)。} } 其中 if(()==btns[i]amp。amp。btns[i].getText()==★ amp。amp。a[x1][y1]!=1) 語句是指如果單擊的是雷則顯 示 ★ ,且對(duì)應(yīng)位置的值不是 1。其作用是,當(dāng)玩家單擊右鍵會(huì)將該方塊標(biāo)注為雷,就會(huì)排除掉這個(gè)雷了,但玩家可能會(huì)不確實(shí),又繼續(xù)單擊右鍵,這樣就會(huì)將該方塊恢復(fù)到?jīng)]有排除的狀態(tài)。 以上便是對(duì) 6 個(gè)方法即 6 個(gè)模塊的詳細(xì)設(shè)計(jì),其中在 main() 主方法中調(diào)用 go()方法來將窗體顯示到屏幕上來, actionPerformed()方法中調(diào)用 out() 方法來設(shè)置某個(gè)方塊周圍雷的情況,由此可以看出程序中各個(gè)方法之間均存在關(guān)聯(lián),存在互相調(diào)用的關(guān)系。 17 關(guān)鍵代碼介紹 程序?qū)氲膬?nèi)容 在每個(gè)程序的開頭即包的下面都會(huì)導(dǎo)入程序中所需要的各種已經(jīng)存在的類,這些類均可以在 API 幫助文檔中查找,這樣直接調(diào)用已經(jīng)導(dǎo)入的類中的方法,既方便了編程者的操作,也使程序顯得不那么負(fù)責(zé),容易讓人看懂,下面列舉幾項(xiàng)在本程序中導(dǎo)入的內(nèi)容: import 。//導(dǎo)入邊框布局 import 。//導(dǎo)入字形、字體 import 。// Insets對(duì)象描述容器的邊界區(qū)域,它指定一個(gè)容器在它的各個(gè)邊界上應(yīng)留 出的空白區(qū)間 import 。// ActionEvent類指示發(fā)生了組件定義的動(dòng)作的語義事件 import 。// ActionListener用于接收操作事件的監(jiān)聽器接口,繼承自 EventListener import 。//導(dǎo)入鼠標(biāo)監(jiān)聽適配器,負(fù)責(zé)對(duì)鼠標(biāo)事件進(jìn)行監(jiān)聽 import 。//接口 import 。//導(dǎo)入按鈕類 import 。//導(dǎo)入面板類 import 。//導(dǎo)入標(biāo)簽類 import 。//菜單 import 。//用來創(chuàng)建水平菜單欄 import 。//創(chuàng)建帶有設(shè)置文本或圖標(biāo)的 JMenuItem菜單項(xiàng) import 。//面板 import 。//定時(shí)器,功能是在指定的時(shí)間間隔內(nèi)反復(fù)出發(fā)指定窗口的定時(shí)器事件 構(gòu)造方法 程序中定義了一個(gè)公有的 Minesweeper()構(gòu)造方法,其中調(diào)用了 JFrame構(gòu)造方法,設(shè)置了窗體的大小,點(diǎn)擊關(guān)閉窗體等行為,還調(diào)用了 initGUI()方法 ,一下代碼是關(guān)于此構(gòu)造方法的部分解析: public Minesweeper(String title){//定義構(gòu)造方法,該構(gòu)造方法有個(gè) String類型的參數(shù),參數(shù)名為 title super(title)。//調(diào)用 JFrame的構(gòu)造方法,將 title字符串傳入該構(gòu)造方法,這樣的話窗體顯示時(shí),標(biāo)題欄會(huì)顯示傳入的 title值 contentPane=getContentPane()。//獲取當(dāng)前 JFrame對(duì)象的內(nèi)容面板 setSize(297,377)。//設(shè)置掃雷窗體的大小是 297*377像素 (400, 100, 400, 500)。//該窗體打開時(shí),會(huì)以屏幕的左上角為原點(diǎn)的水平方向是 400像素,垂直方向是 100像素,覆蓋掉了上面 setSize(297,377)的值 setDefaultCloseOperation()。//設(shè)置當(dāng)點(diǎn)擊窗體右上角的關(guān)閉按鈕時(shí)的窗體的行為,這里的設(shè)置是當(dāng)點(diǎn)擊這個(gè)按鈕時(shí)關(guān)閉并推出程序 timer =new Timer(1000,(ActionListener) this)。//每隔 1000毫秒觸發(fā)一次動(dòng)作事件18 的監(jiān)聽 a = new int[row+2][col+2]。//創(chuàng)建二維數(shù)組 a initGUI()。 //調(diào)用初始化圖形界面方法 } 布 雷 在此次設(shè)計(jì)中,布雷算法是重中之重,之前會(huì)用 Math類中的 random()方法產(chǎn)生隨機(jī)數(shù),用于布雷時(shí)隨機(jī)的指定雷所在的位置,以下的代碼是關(guān)于布雷過程中的的部分解析: (bon+)。 (0)。 for(int i=0。ibon。i++){//在雷區(qū)中布 bon個(gè)雷,雷對(duì)應(yīng)位置的元素指定為 100 int x=(a1[i]/col+1)。 int y=(a1[i]%col+1)。 a[x][y]=100。 //布雷的位置的值為 100 } for(int i=0。irow+2。i++){ for(int j=0。jcol+2。j++){
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1