版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)院課程設(shè)計(實訓(xùn))報告系部_信息工程系__專業(yè)_軟件技術(shù)班級__學(xué)號姓名課題掃雷指導(dǎo)教師_報告成績_____________日期:2011年12月29日摘要本次課程設(shè)計是用java語言及相關(guān)知識設(shè)計一個掃雷游戲系統(tǒng),完成掃雷的基本功能。并在此基礎(chǔ)上,自行完善和優(yōu)化系統(tǒng)功能。理解和掌握選擇游戲級別,記錄游戲時間和保存游戲成績的方法,學(xué)習(xí)程序設(shè)計的基本思路和方法,培養(yǎng)計算機專業(yè)學(xué)生運用所學(xué)知識解決計算機應(yīng)用領(lǐng)域內(nèi)實際問題能力,進一步提高動手操作能力和用java語言綜合編成能力,程序調(diào)試技能。目錄一、前言…………………4二、正文…………………52.1設(shè)計題目及要求…………52.2概要(總體)設(shè)計………62.3詳細(xì)設(shè)計…………………62.4程序的核心代碼…………72.5調(diào)試中出現(xiàn)的問題………92.6運行結(jié)果…………………10三、總結(jié)………………12四、參考文獻(xiàn)………12五、附錄………………12
一、前言掃雷最原始的版本可以追溯到1973年一款名為“方塊”的游戲。不久之后,“方塊”被改寫成了游戲“Rlogic”。在“Rlogic”里,玩家的任務(wù)是作為美國海軍陸戰(zhàn)隊隊員,為指揮中心探出一條沒有地雷的安全路線,如果路全被地雷堵死就算輸。兩年后,湯姆·安德森在“Rlogic”的基礎(chǔ)上又編寫出了游戲“地雷”,由此奠定了現(xiàn)代掃雷游戲的雛形。1981年,微軟公司的羅伯特·杜爾和卡特·約翰遜兩位工程師在Windows3.1系統(tǒng)上加載了該游戲,掃雷游戲才正式在全世界推廣開來。這款游戲的玩法是在一個9*9(初級),16*16(中級),16*30(高級),或自定義大小的方塊矩陣中隨機布置一定量的地雷(初級為10個,中級為40個,高級為99個)。由玩家逐個翻開方塊,以找出所有地雷為最終游戲目標(biāo)。如果玩家翻開的方塊有地雷,則游戲結(jié)束。二、正文2.1設(shè)計題目及要求(需求分析)1設(shè)計題目:基于Java的掃雷游戲2游戲的描述:本產(chǎn)品是一個簡單的游戲軟件,目的是盡快找到雷區(qū)中的所有地雷,而不許踩到地雷。如果挖開的是地雷,您將輸?shù)粲螒颉?實現(xiàn)的功能:可以實現(xiàn)簡單的游戲功能開始游戲、改變雷數(shù)。4游戲的界面:游戲的菜單欄中有‘開始游戲’和‘列’‘行’‘寬’選項,游戲的顯示界面中有游戲的主界面和信息界面(列、行、寬和雷的個數(shù))。5軟件可實現(xiàn)掃雷游戲的簡單操作:1)、游戲功能:點擊鼠標(biāo)左鍵點擊下尋找地雷右鍵點擊下標(biāo)記地雷點擊笑臉的標(biāo)記開始重新游戲計雷功能:游戲當(dāng)前雷數(shù)2)、設(shè)置功能:設(shè)置掃雷的行、寬、列和改變雷數(shù)6用戶的操作:在游戲菜單上,單擊開局。單擊游戲區(qū)中的任何方塊,要啟動計時器。通過單擊即可挖開方塊。如果挖開的是地雷,則您輸?shù)粲螒?。如果方塊上出現(xiàn)數(shù)字,則表示在其周圍的八個方塊中共有多少顆地雷。要標(biāo)記您認(rèn)為可能有地雷的方塊,請右鍵單擊它。
2.2概要(總體)設(shè)計1流程圖
2掃雷概述(類)JAVA的圖形界面圖形界面簡稱GUI,是用圖形的方式,借助菜單、按紐等標(biāo)準(zhǔn)界面元素和鼠標(biāo)操作,幫助用戶方便地想計算機系統(tǒng)發(fā)出指令、啟動操作,并將系統(tǒng)的運行結(jié)果同樣以圖形方式顯示給用戶的技術(shù)。JAVA的圖形界面技術(shù)既為使用java.awt包來創(chuàng)建圖形界面的方法,包括AWT組件、窗口和菜單設(shè)計、布局管理器以及繪圖操作等。AWT概述 AWT既抽象窗口工具集,用于圖形用戶界面的開發(fā)。AWT的功能包括以下方面:(1)豐富的圖形界面組件。(2)強大的事件處理模型圖形和圖形工具,包括形狀、顏色和字體。(3)布局管理器,可以進行靈活的的窗口布局,設(shè)計特定窗口的尺寸和和屏幕分辨率。(4)無關(guān)數(shù)據(jù)傳送類,可以通過本地平臺的剪貼板來進行剪切和粘貼操作。(5)打印和無鼠標(biāo)操作。Java.awt是java基本包中最大的一個,其中定義了所有的GUI組件類,以及其他用于構(gòu)造圖形界面的類。AWT基本組件(1)標(biāo)簽組件(Label)標(biāo)簽組件顯示的是靜態(tài)文本,在通常情況下是不能編輯的,能起到提示的作用Label組件有三種構(gòu)造函數(shù):Label():創(chuàng)建空的標(biāo)簽Label(String):創(chuàng)建一個帶初始字符串的標(biāo)簽。Label(String,int):創(chuàng)建一個帶初始字符串及指定對齊方式的標(biāo)簽。(2)文本域文本域一般用來讓用戶輸入姓名、信用卡號等這樣的信息,它是一個能夠接收用戶的鍵盤輸入的小塊區(qū)域。TextField():創(chuàng)建空的文本域(3)按鈕(Button) 幾乎所有的交互式程序中都會有按紐,它是一種交互能力強且交互方便的控件,這個控件提供了“按下并動作”的基本用戶界面。按紐的構(gòu)造方法有:Button():建立一個沒有標(biāo)示字符串的新按紐類對象。Button(StringLabel):建立一個標(biāo)示字符串為Label的新按紐類的對象(4)畫板組件(Panel)我們在界面上安排各種組件時,有時會需要將組件成組放置,這時就可以使用面板組件。Panel是最簡單的容器組件,本身是一個矩形區(qū)域,可以在其中放入各種組件。但它僅僅是安排各種組件的一種結(jié)構(gòu),需要最后加入到別的容器中才能實現(xiàn)GUI的功能。面板組件的創(chuàng)建Panel():用默認(rèn)的布局管理器創(chuàng)建面板組件。Panel(LayoutManagerlayout):用指定的布局管理器創(chuàng)建面板組件。(5)框架窗口組件(Frame) Frame是獨立于瀏覽器的可獨立運行的主窗口,通常用于進行開發(fā)桌面應(yīng)用程序。Frame擁有邊界和標(biāo)題欄設(shè)置,其大小可以進行設(shè)置調(diào)整。Frame里面需要加入組件,也可以加入菜單,或在上面繪圖。 Frame的創(chuàng)建Frame():創(chuàng)建一個沒有窗口標(biāo)題的窗口框架。Frame(String):創(chuàng)建一個指定窗口標(biāo)題的窗口框架。2.3詳細(xì)設(shè)計游戲勝利和失敗的條件創(chuàng)建,當(dāng)所有雷都被找出時勝利,當(dāng)左鍵點擊到雷時失敗,具體實現(xiàn)函數(shù)如下示:publicvoidpaint(Graphicsg)勝利失敗條件g.clearRect(0,0,600,600);g.drawString("GameOver",0,200);2.4程序的核心代碼publicvoidpaint(Graphicsg){intx,y,w;ints;intcx=bw/2-4;intcy=bw/2+4;g.clearRect(0,0,600,600);for(i=1;i<=bx;i++){for(j=1;j<=by;j++){draw(g,i,j);}}if(f==1){Fontf=newFont("11",1,70);Fontfo=g.getFont();g.setColor(Color.white);g.setFont(f);//g.setSize();g.drawString("GameOver",0,200);g.setFont(fo);}if(f==2){Fontf=newFont("11",1,70);Fontfo=g.getFont();g.setColor(Color.white);g.setFont(f);//g.setSize();g.drawString("Youwin!",0,200);g.setFont(fo);}}2.5調(diào)試中出現(xiàn)的問題1.類定義未找到錯誤java.lang.NoClassDefFoundError。原因分析⑴由于該程序調(diào)用到的JAVA類文件沒有正確上傳。⑵JAVA類文件已經(jīng)上傳,但應(yīng)用服務(wù)器并未檢測到,建議將JSP頁面重新更新。解決方案⑴將JAVA類文件重新上傳。⑵將JSP頁面更新并上傳;或?qū)?yīng)用程序服務(wù)器進行重新啟動。2.解決java.lang.StackOverflowError錯誤。錯誤信息嚴(yán)重:Exceptioninitializingpagecontextjava.lang.StackOverflowError原因分析運行一個程序,JVM會開辟一塊內(nèi)存空間去儲存程序進行時的某些信息,當(dāng)程序運行時需要儲存的信息超過了分配的空間,就會出現(xiàn)那樣的問題.比如死循環(huán),遞歸次數(shù)過多,等等。解決方案首先從程序代碼優(yōu)化方面著手,檢查是否有死循環(huán)、遞歸等程序,如果有,修正、優(yōu)化相關(guān)代碼。
2.6運行結(jié)果1運行程序,生成指定行列數(shù)的掃雷游戲的圖形界面,運行結(jié)果如圖所示2鼠標(biāo)左鍵點擊到雷時,失敗,游戲結(jié)束,運行結(jié)果如圖所示:3改變雷的個數(shù),從15個雷改為20個雷,開始游戲,運行結(jié)果如圖所示:4所有雷都被找出時,游戲勝利,運行結(jié)果如圖所示:
三、總結(jié)這不是我第一次做課程設(shè)計,但這個掃雷游戲我平常也會經(jīng)常的玩,所以對于做這個掃雷游戲的課程設(shè)計我也是很興奮,雖然這設(shè)計過程中遇到很多困難,但都在盡力的克服,對于我自己做出的這個程序我還是比較滿意的,基本功能基本都實現(xiàn)了,圖形界面雖然不能說是非常友好,但好象也至少能看的過去,通過這個課程設(shè)計我學(xué)到了很多的東西,把以前所學(xué)的課本知識很好的用到了實踐當(dāng)中,并且通過實踐,重新發(fā)現(xiàn)了很多問題和很多以前不理解的沒掌握的知識點,并且通過完成這個設(shè)計,很好的重新的理解并掌握了各種知識點。四、參考文獻(xiàn)[1]耿祥義.JAVA大學(xué)實用教程.電子工業(yè)出版社.2005.03[2]朱戰(zhàn)立,沈偉編著.Java程序設(shè)計實用指南.電子工業(yè)出版社,2005.1[3][美]CayS.Horstmann.程峰等譯.JAVA2核心技術(shù).機械工業(yè)出版社.2003.06[4]陳占偉,劉旭,陳文霞《Java程序設(shè)計》武昌,武漢大學(xué)出版社,2011年7月第一版[5]朱慶生,古平,《java程序設(shè)計》北京,清華大學(xué)出版社,2011[6]包海山,李占玲,《java程序設(shè)計案例教程》,北京,機械工業(yè)出版社[7]劉瑞挺,侯冬梅,《java程序設(shè)計實用教程》,北京,清華大學(xué)出版社,2009五、附錄全部程序代碼importjava.awt.*;importjavax.swing.*;importjava.util.Random;importjava.awt.event.*;classMinextendsJPanel//雷的類{//備注:鼠標(biāo)的左鍵=1;右鍵=3;中鍵=2privateintflag=0,statu=0;//定義雷的屬性0:沒有打開1:打開2:標(biāo)示為雷3:不確定//flag=0不是雷;flag=1是雷privateintbut,count=0;//but:哪一個鼠標(biāo)鍵被按下去了count:這個區(qū)域周圍有多少個雷privateintmx=0,my=0,mw=10;//定義雷的坐標(biāo)和寬度publicMin()//構(gòu)造函數(shù){statu=0;}publicMin(intf,intx,inty,intw)//構(gòu)造函數(shù){flag=f;mx=x;my=y;mw=w;}publicintgetFlag(){returnflag;}publicintgetStatu(){returnstatu;}publicintgetMx(){returnmx;}publicintgetMy(){returnmy;}publicintgetMw(){returnmw;}publicintgetCount(){returncount;}publicvoidsetFlag(intf){flag=f;}publicvoidsetCount(intc){count=c;}publicvoidsetData(intf,intx,inty,intw,ints)//傳遞值{flag=f;mx=(x-1)*w;my=(y-1)*w;mw=w-1;statu=s;}//根據(jù)你點擊鼠標(biāo)的不同來改變雷的屬性publicintsendKey(intkey){//返回值,如果游戲結(jié)束則返回-1intrtn=1;if(key==3){switch(statu){case1:break;case2:statu=3;break;case3:statu=0;break;case0:statu=2;break;}rtn=1;}if(key==1&&statu==0){switch(flag){case0:statu=1;rtn=2;break;case1:statu=1;rtn=-1;break;}}returnrtn;}}classDrawPanelextendsJPanel{privateinti,j;privateintf=0;//iff=1thengameover,iff=2thenwinprivateintchx=0,chy=0;//專門記錄坐標(biāo)x,y的值privateintmsum=6,ksum=0;//msum:雷的個數(shù),ksum:標(biāo)示雷的個數(shù)privateintbx=10,by=10,bw=40;//bx,by:棋盤的大小,bw:棋子的大小publicMinboard[][]={{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},{newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin(),newMin()},};//畫坐標(biāo)為ax,ay區(qū)域的雷的狀態(tài)publicvoiddraw(Graphicsg,intax,intay){intx,y,w;//坐標(biāo)x,y;和寬度:wints,c,flag;//狀態(tài);雷的個數(shù);intcx=bw/2-4;intcy=bw/2+4;x=board[ax][ay].getMx();y=board[ax][ay].getMy();w=board[ax][ay].getMw();s=board[ax][ay].getStatu();c=board[ax][ay].getCount();flag=board[ax][ay].getFlag();switch(s){case0://沒有打開狀態(tài){g.setColor(Color.black);g.fillRect(x,y,w,w);break;}case1://打開狀態(tài){g.setColor(Color.blue);g.fillRect(x,y,w,w);if(c!=0&&flag==0)//此處沒有雷{g.setColor(Color.red);g.drawString(String.valueOf(c),x+cx,y+cy);}if(flag==1)//此處有雷{g.setColor(Color.red);g.fillRect(x,y,w,w);g.setColor(Color.blue);g.drawString("雷",x+cx,y+cy);}break;}case2://標(biāo)雷狀態(tài){g.setColor(Color.green);g.fillRect(x,y,w,w);g.setColor(Color.blue);g.drawString("旗",x+cx,y+cy);break;}case3://不確定狀態(tài){g.setColor(Color.black);g.fillRect(x,y,w,w);g.setColor(Color.red);g.drawString("?",x+cx,y+cy);break;}default:break;}}//沒有圖形器的繪圖函數(shù):畫出坐標(biāo)ax,ay的雷的狀態(tài)和圖形publicvoiddraw(intax,intay){Graphicsg;g=this.getGraphics();draw(g,ax,ay);}//打開周圍沒有雷的地方,并且繪畫所在區(qū)域點擊左鍵觸發(fā)publicintopenNoMin(intax,intay){inti,j;if(ax<1||ay<1||ax>bx||ay>by)return0;//鼠標(biāo)點擊的區(qū)域出界了if(board[ax][ay].getStatu()!=0)return0;//如果此區(qū)域打開了,返回board[ax][ay].sendKey(1);//如果返回值等于-1,就說明游戲結(jié)束draw(ax,ay);if(board[ax][ay].getFlag()==1)//如果游戲結(jié)束,把所有的雷都顯示出來{for(i=1;i<=bx;i++){for(j=1;j<=by;j++){if(board[i][j].getFlag()==1){board[i][j].sendKey(1);draw(i,j);}}}return-1;}//如果游戲沒有結(jié)束if(board[ax][ay].getCount()>0){ksum++;return1;//周圍有雷,就不用打開周圍地區(qū)}if(board[ax][ay].getCount()==0&&board[ax][ay].getFlag()==0)//周圍沒有雷,打開周圍地區(qū),直到有雷的地區(qū){openNoMin(ax-1,ay-1);openNoMin(ax,ay-1);openNoMin(ax+1,ay-1);openNoMin(ax-1,ay);openNoMin(ax+1,ay);openNoMin(ax-1,ay+1);openNoMin(ax,ay+1);openNoMin(ax+1,ay+1);}ksum++;return1;}//計算坐標(biāo)x,y的周圍雷的個數(shù)publicintgetCount(intai,intaj){intsum=0;if(board[ai][aj].getFlag()==1){returnsum;}if(ai>1&&aj>1&&ai<bx&&aj<by){sum=board[ai-1][aj-1].getFlag()+board[ai][aj-1].getFlag()+board[ai+1][aj-1].getFlag()+board[ai-1][aj].getFlag()+board[ai+1][aj].getFlag()+board[ai-1][aj+1].getFlag()+board[ai][aj+1].getFlag()+board[ai+1][aj+1].getFlag();}if(ai==1&&aj==1){sum=board[ai+1][aj].getFlag()+board[ai][aj+1].getFlag()+board[ai+1][aj+1].getFlag();}if(ai==1&&aj==by){sum=board[ai][aj-1].getFlag()+board[ai+1][aj-1].getFlag()+board[ai+1][aj].getFlag();}if(ai==bx&&aj==1){sum=board[ai-1][aj].getFlag()+board[ai-1][aj+1].getFlag()+board[ai][aj+1].getFlag();}if(ai==bx&&aj==by){sum=board[ai-1][aj-1].getFlag()+board[ai][aj-1].getFlag()+board[ai-1][aj].getFlag();}if(ai==1&&aj>1&&aj<by){sum=board[ai][aj-1].getFlag()+board[ai+1][aj-1].getFlag()+board[ai+1][aj].getFlag()+board[ai][aj+1].getFlag()+board[ai+1][aj+1].getFlag();}if(ai==bx&&aj>1&&aj<by){sum=board[ai-1][aj-1].getFlag()+board[ai][aj-1].getFlag()+board[ai-1][aj].getFlag()+board[ai-1][aj+1].getFlag()+board[ai][aj+1].getFlag();}if(ai>1&&ai<bx&&aj==1){sum=board[ai-1][aj].getFlag()+board[ai+1][aj].getFlag()+board[ai-1][aj+1].getFlag()+board[ai][aj+1].getFlag()+board[ai+1][aj+1].getFlag();}if(ai>1&&ai<bx&&aj==by){sum=board[ai-1][aj-1].getFlag()+board[ai][aj-1].getFlag()+board[ai+1][aj-1].getFlag()+board[ai-1][aj].getFlag()+board[ai+1][aj].getFlag();}returnsum;}//傳入?yún)?shù):幾列,幾行,寬度,雷數(shù)publicvoidinitMin(intax,intay,intaw,intas){intk=1;//表明產(chǎn)生的第幾個雷Randomr;//隨機數(shù)f=0;//f=0表示游戲還沒有結(jié)束ksum=0;bx=ax;by=ay;bw=aw;msum=as;r=newRandom();//初始化底盤的值for(i=1;i<=bx;i++){for(j=1;j<=by;j++){board[i][j].setData(0,i,j,bw,0);}}//隨機產(chǎn)生雷while(k<=msum){i=r.nextInt(bx)+1;j=r.nextInt(by)+1;if(board[i][j].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(Color.white);repaint();}//構(gòu)造函數(shù)publicDrawPanel(intax,intay,intaw,intas){initMin(ax,ay,aw,as);addMouseListener(newMouseAdapter(){publicvoidmousePressed(MouseEventme){intr;if(f!=0)return;//如果游戲結(jié)束,返回chx=me.getX();chy=me.getY();if(me.getButton()!=1){board[chx/bw+1][chy/bw+1].sendKey(me.getButton());draw(chx/bw+1,chy/bw+1);}elseif(me.getButton()==1){if(openNoMin(chx/bw+1,chy/bw+1)==-1){f=1;repaint();}elseif(ksum+msum==bx*by){f=2;repaint();}}}});}//重畫所有的圖形,包括一些修飾的圖形publicvoidpaint(Graphicsg){intx,y,w;ints;intcx=bw/2-4;intcy=bw/2+4;g.clearRect(0,0,600,600);for(i=1;i<=bx;i++){for(j=1;j<=by;j++){draw(g,i,j);}}if(f==1){Fontf=newFont("11",1,70);Fontfo=g.getFont();g.setColor(Color.white);g.setFont(f);//g.setSize();g.drawString("GameOver",0,200);g.setFont(fo);}if(f==2){Fontf=newFont("11",1,70);Fontfo=g.getFont();g.setColor(Color.white);g.setFont(f);//g.setSize();g.drawString("Youwin!",0,200);g.setFont(fo);}}};//主類和程序的入口publicclassMineextendsJFrameimplementsActionListener{Containercp=getContentPane();JButtonbt=newJButton("^_^");
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023八年級數(shù)學(xué)上冊 第2章 三角形2.5 全等三角形第5課時 SSS說課稿 (新版)湘教版
- 2024年九年級語文上冊 第五單元 第17課《草房子》說課稿 鄂教版
- 25《慢性子裁縫和急性子顧客》(說課稿)-2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- 2024-2025學(xué)年高中物理 第一章 電磁感應(yīng) 4 楞次定律說課稿 教科版選修3-2
- 2025深圳市途安汽車租賃有限公司租賃合同
- 2025地區(qū)代理合同樣式詳細(xì)版
- 2024年四年級英語下冊 Unit 5 What will you do this weekend Lesson 27說課稿 人教精通版(三起)
- 2023八年級生物下冊 第七單元 生物圈中生命的延續(xù)和發(fā)展第一章 生物的生殖和發(fā)育第2節(jié) 昆蟲的生殖和發(fā)育說課稿 (新版)新人教版
- 個人消防安裝合同范例
- 俄羅斯電梯采購合同范例
- 關(guān)于防范遏制礦山領(lǐng)域重特大生產(chǎn)安全事故的硬措施課件
- 2025年中國成都餐飲業(yè)市場運營態(tài)勢分析及投資前景預(yù)測報告
- 2024年xx縣第三小學(xué)安全工作管理制度匯編
- 項目合作備忘錄范文
- 婦產(chǎn)科醫(yī)生個人年終述職報告課件
- 《費曼學(xué)習(xí)法》讀后感
- 趣味成語課程設(shè)計
- 鋼筋焊接工藝性試驗方案
- 2024年四川省涼山州中考物理適應(yīng)性試卷(附答案解析)
- 幼兒園師資培訓(xùn)課件【區(qū)域進階】科學(xué)區(qū)各年齡段目標(biāo)制定與投放材料:區(qū)域材料玩出新高度課件
- 人教版初中數(shù)學(xué)同步講義八年級上冊專題提升02 解分式方程與分式方程的實際應(yīng)用(30題)(原卷版)
評論
0/150
提交評論