java蜘蛛紙牌設計報告_第1頁
java蜘蛛紙牌設計報告_第2頁
java蜘蛛紙牌設計報告_第3頁
java蜘蛛紙牌設計報告_第4頁
java蜘蛛紙牌設計報告_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本科學年論文(設計)基于Java的蜘蛛紙牌游戲設計系別信息管理系專業(yè)電子信息工程屆別2013班級學生姓名鄧曉寒學號指導教師黃麗蓉職稱二O一六年五月摘要隨著休閉游戲市場竟爭的升級,尤其是樸牌類休閑游戲的巨大市場前景的吸引,許多公司都加入到棋牌游戲的競爭之列,一時之間竟爭可謂慘烈傳統(tǒng)的休閑棋牌類游游戲中,微軟公司出品的躥N以鬲系列多個版本作系統(tǒng)中所自帚的蜘蛛紙牌游戲是玩家最為熟知的“蜘蛛紙牌,游戲是典型的兩副牌游戲,游戲的目標是以最少的移動次數(shù)將十疊牌中所有最前面的牌都移走。Java是由SunMicrosystems公司于1995年5月推出的Java程序設計語言和Java平臺的總稱本課題將采用Ja

2、va語言編寫這個蜘蛛紙牌游戲程序并采用eclipse3.2編譯軟件來編譯該游戲程序?!娟P鍵詞】:休閑游戲,Java語言,編譯軟件AbstractBecausetherecreationalgamemarketcompeteOfgetstripe,particularlytheattractionOfthehugemarketforegroundofthechesscardrecreationalgame,manycompaniesalljointherowofthecompetitionOfchesscardgame,thatisatthattimethecompetitionbeitmays

3、aidhorrifying.Traditionalrecreationalchesscardswimsgamem,theMicrosoftcompanyproduceofWINDOWSseriesseveraleditionoperatesystemsinfromtakeofthespiderplayingcardsgamebethattheplayeristhemostwellknow.Spiderplayingcardsgametwotypicalcardgames,thetargetofgamewiththeminimalambulationnumberoftimeswilltenfol

4、dallrmstanteriorcardsincardtomovewalkThegenericnameofthelanguageandJavaterraceoftheJavaprogramdesignthattheJavareleasedMayin1995bythecompanyofSunMicrosystems.ThistopicwilladoptJavalanguagetowritethisgameprocedureofthespiderplayingcardscombineadoptioneclipse3.2editandtranslatesoftwaretoeditandtransla

5、tethatgameprocedure.Keywords:Therecreationalgame,theJavalanguage,editsandtranslatesoftware目錄第1章國內(nèi)外現(xiàn)狀1第2章開發(fā)工具簡介1第3章游戲程序設計需求分析2第4章44.1主要界面的實現(xiàn)44.2初始化紙牌及發(fā)牌操作:84.3紙牌移動放置操作:134.4回收紙牌操作:144.5幫助菜單功能的實現(xiàn):154.6退出功能的實現(xiàn):165.調(diào)試驗證運行情況176.設計總結(jié)21第1章前言1.1國內(nèi)外現(xiàn)狀隨著休閑游戲市場競爭的升級,尤其是棋牌類休閑游戲的巨大市場前景的吸引,許多公司都加入到棋牌游戲的競爭之列,一時之間競

6、爭可謂慘烈。在市場競爭如此激烈的情況下,我們看到了休閑游戲的內(nèi)容不斷豐富,這無疑推動了產(chǎn)業(yè)的擴大和產(chǎn)品的成熟。新的棋牌類游戲如雨后春筍般涌出:游戲內(nèi)容不斷豐富,功能不斷增多:游戲數(shù)量不斷增多,變著花樣的出新游戲;游戲平臺不斷完善,平臺穩(wěn)定性和抗壓能力等顯著增強;游戲可玩性不斷增加等等。而傳統(tǒng)的休閑棋牌類游游戲中,微軟公司出品的認丁NDOWS系列多個版本操作系統(tǒng)巾所自帶的蜘蛛紙牌游戲是玩家最為熟知的?,F(xiàn)在市場上流行的大部分蜘蛛紙牌游戲包括手機游戲中的蜘蛛紙牌游戲都是以WINDOWS系列操作系統(tǒng)中自帶的蜘蛛紙牌游戲為樣本所開發(fā)的?!爸┲爰埮啤庇螒蚴堑湫偷膬筛迸朴螒颍螒虻娜諛耸且宰钌俚囊苿哟螖?shù)將十

7、疊牌中所有最前面的牌都移走。1.2主要工作內(nèi)容本課題采用Java語言編寫這個蜘蛛紙牌游戲程序。主要工作內(nèi)容:搜集相關資料,準備參考資料,學習掌握開發(fā)方法、開發(fā)工其,需求分析,確定游戲程序?qū)嵤┓桨福鶕?jù)要求設計具體的流程圖,編寫程序,修改、完善程序,系統(tǒng)調(diào)試、測試,優(yōu)化處理,產(chǎn)生產(chǎn)品。這次設計我們通過java語言編寫,實現(xiàn)了游戲的難度選擇、開局、重新發(fā)牌以及可視化的相關操作界面。并通過設計鼠標事件,引入線程,構(gòu)建游戲程序框架完成了對該游戲的難度選擇、開局、發(fā)牌、顯示可執(zhí)行操作的各個基本功能。第2章開發(fā)工具簡介2.1java語言概述11Java是由SunMicrosystems公司于1995年5月

8、推出的Java程序設計語言和Java平臺的總稱。用Java實現(xiàn)的HotJava瀏覽器(支持Javaapplet)顯示了java的魅力:跨平臺動感的Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)在均支持Javaapplet.另一方面,Java技術也不斷更新。Java平臺由Java擬機(JavaVirtualMachine)和Ja、a應用編程接口(ApplicationProgrammingInterface、簡稱API)構(gòu)成Java應用編程接口為Java應用提供了一個獨立于操作系統(tǒng)的標準接口,可分為基本部分擴展部分在硬件或操作系統(tǒng)平臺上安裝一個Ja

9、va平臺之后,Java應用程序就可運行?,F(xiàn)在Java平臺己經(jīng)嵌入了幾乎所有的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運行。Java應用編程接口己經(jīng)從1.1x版發(fā)展到1.2版。目前常用的Java平臺基于Java1.4,最近版本為Java1.6。2.2關于ECLIPSEEchpse是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse附帶了一個標準的插件集,包括Java開發(fā)工具(JavaDevelopmentTools,JDT)。雖然大多數(shù)用戶很樂于將Eclipse當作JavaIDE來使用

10、,但Eclipse的目標不僅限于此。Eclipse還包括插件開發(fā)環(huán)境(Plug-inDevelopmentEnvironment,PDE),這個組件主要針對希望擴展Echpse的軟件丿發(fā)人員,因為匕允許他們構(gòu)建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣東西都是插件,對于給Echpse提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。第3章游戲程序設計需求分析3.1游戲程序設計的任務概述1該游戲程序所要設計的功能包括:1游戲框架即游戲界而功能組件的設計包括:開局,重新發(fā)牌,設置等級的簡單:單一花色,中級:雙花色,高級:四花色,游戲退出

11、,顯示可行操作,關于。2游戲功能鍵中對關于窗體的設計:即顯示游戲規(guī)則和聲明。3游戲紙牌圖片的載入。4游戲玩法即程序算法的開發(fā)3.2游戲程序設計的綜合要求1硬件配置CPU:=Pentiurn41.6G內(nèi)存:=512MB硬盤剩余空間:=2GB2軟件環(huán)境操作系統(tǒng):MicrosoftWindowsXP安裝Sum公司的Java運行環(huán)境JRE1.5安裝Java開發(fā)工具包(JDK1.5)及ECLIPSE32.3.3本游戲程序需要解決的問題1 1JAVA蜘蛛紙牌游戲程序擬采用Java(TM)2StandardEdition(5.0)作為開發(fā)平臺進行程序開發(fā)。繪圖事件、鍵盤事件都會以極高的頻率在后臺等待響應,若

12、有絲毫的差別都將很容易針致程序在運行不久后可能出現(xiàn)嚴重錯誤,甚至死循環(huán)。因此,其邏輯設計應當相當嚴謹,需將所有可能發(fā)生的事件及意外情況考慮在設計中。本課題擬采用AWT提供的兩種監(jiān)聽接口(listenerinterface):java.awt.event.MouseListener和Java.awt.event.MouseMotionListener,實現(xiàn)鼠標的點擊事件、鼠標狀態(tài)處理以及鍵盤監(jiān)聽等相關事件。JAVA蜘蛛紙牌游戲中為了美觀,適用性強,需要采用外部文件引入的圖片貼圖。另外,針對游戲程序中是普遍存在的閃爍這種現(xiàn)象,擬采用用雙緩沖機制作為相應的解決方案。在Java蜘蛛紙牌游戲的結(jié)束、開始

13、、動態(tài)信息畫面作為構(gòu)成一個程序都是必不可少的重要部分。良好的用戶界而更是吸引游戲玩家的硬指標,因此對相關的美術構(gòu)圖和人性化設置也需要有一定的考慮。3.4模型該游戲可分為以下各項功能模塊:a.Spider.java用于實現(xiàn)紙牌初始化、設置游戲等級以及異常處理。b.PKCard.java用于定義紙牌的顯示的各種屬性以及鼠標事件的相應屬性。c.SpiderMenu.java用于添加游戲下拉菜單的各個選項,包含圖形用戶界面的構(gòu)建,組件監(jiān)聽的實現(xiàn),以及顯示可執(zhí)行操作的線程。d.AePlayWava.java生成背景音樂且循環(huán)。e.SpiderMenu.class生成Spider.class,AboutD

14、ialog.class和PKCard.class該游戲的開發(fā)及相關功能的實現(xiàn)需要在Eclipse下建立javaproject,同時編寫Spider.java、PKCard.java、SpiderMen.java、AePlayWava.java、AboutDialog.class,另外將紙牌的圖片文件保存在images文件夾中,音樂文件保存在musics文件中。第4章4.1主要界面的實現(xiàn)游戲的菜單欄選項有游戲,幫助,關于,開局,重新發(fā)牌,簡單:單一花色,中級;雙花色,高級:四花色,退出,顯示可行操作,其中游戲,幫助是用的JMenu類,關于,開局,重新發(fā)牌是用的JMenuItem類,簡單;單一花色

15、,中級:雙花色,高級;四花色是用的JRadioButtonMenuItem類,退出,提示是用的JMenuItem類,分別是生成菜單組,生成菜單項,生成單選框以下是主菜單界面的主要代碼:/生成菜單組JMenujNewGame=newJMenu(游戲);JMenujHelp=newJMenu(幫助);JMenujGrade=newJMenu(等級設置);/生成菜單項JMenuItemjItemAbout=newJMenuItem(關于);JMenuItemjItemOpen=newJMenuItem(新游戲);JMenuItemjItemPlayAgain=newJMenuItem(重新發(fā)牌);J

16、MenuItemjItemExit=newJMenuItem(退出);JMenuItemjItemValid=newJMenuItem(提示);/生成等級設置單選框JRadioButtonMenuItemjRMItemEasy=newJRadioButtonMenuItem(簡單:單一花色);JRadioButtonMenuItemjRMItemNormal=newJRadioButtonMenuItem(中級:雙花色);JRadioButtonMenuItemjRMItemHard=newJRadioButtonMenuItem(高級:四花色);蜘蛛紙牌游戲的游戲界而設計包括了游戲的框架,游

17、戲界面的背景顏色和游戲的菜單欄選項以及游戲布局管理器的設置“在游戲界面的設置中會引入SpiderMenuBar中的JMenu類,JMenuItem類,JRadioButtonMenuItem類并且在Spider運行時會調(diào)用到SplderMenuBar。/*構(gòu)造函數(shù),生成JMenuBar的圖形界面*/publicSpiderMenuBar(Spiderspider)this.main=spider;ButtonGroupGgroup=newButtonGroup();Ggroup.add(jRMItemEasy);Ggroup.add(jRMItemNormal);Ggroup.add(jRMI

18、temHard);jHelp.add(jItemAbout);this.add(jNewGame);this.add(jHelp);以下是游戲窗口界面初始化的主要代碼:pane=this.getContentPane();/獲得容器/設置背景顏色pane.setBackground(newColor(0,112,26);游戲布局管理器用于設置游戲界而的初始大小以及事件監(jiān)聽程序的引入布局開始要將布局管理器設置成為null接下來/將布局管理器設置成為nullpane.setLayout(null);clickLabel=newJLabel();/發(fā)牌區(qū)的鼠標點擊響應區(qū)域clickLabel.set

19、Bounds(883,606,121,96);/設置響應區(qū)域的大小與坐標pane.add(clickLabel);/響應區(qū)域添加到容器中玩家在玩游戲時需要用鼠標對紙牌圖片進行操作所以在游戲設計布局時這個工作要提前作好就是在布局管理器設置中對鼠標事件監(jiān)聽程序進行初始布局clickLabel.addMouseListener(newMouseAdapter()/為鼠標響應區(qū)域添加鼠標監(jiān)聽事件publicvoidmouseReleased(MouseEventme)/鼠標釋放事件if(c60)/每10張紙牌為一疊,共6疊。如果發(fā)出的紙牌不夠60Spider.this.deal();/發(fā)出一疊紙牌);

20、添加紙牌this.initCards();/紙牌初始化this.randomCards();/隨機分配紙牌this.setCardsLocation();/為紙牌設置坐標位置groundLabel=newJLabel10;/創(chuàng)建背景框數(shù)組,一共有10個背景框?qū)τ螒驁D片的擺放位置也要進行布局紙牌共需要擺放十列這里用FOR循環(huán)來進行添加,for(inti=0;i10;i+),因為紙牌是按顙序進行擺放而每一次放的位置都需要進行累加所以在不同位置的紙牌擺放可以引入intx-20,增加一個累加的位置數(shù)值變量。對于紙牌位置的大小也要進行設置(使用setBounds)groundLabelCil.setBo

21、unds(x,25,71,96)。整個紙牌的擺放就由如下代碼實現(xiàn):intx=20;/背景框的x坐標,y坐標相等。第一個背景框的x坐標是20for(inti=0;i10;i+)/循環(huán)創(chuàng)建背景框,并設置坐標大小等屬性groundLabeli=newJLabel();/創(chuàng)建背景框groundLabeli.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED);/為Label設置邊框groundLabeli.setBounds(x,25,71,96);/設置背景框的大小

22、與坐標x+=101;/每兩列之間x的距離this.pane.add(groundLabeli);/將背景框添加到容器中this.setVisible(true);待游戲界面的菜單欄設置好后將進行游戲菜單欄的初始化,即向jNewGame組件中添加jNewGame.add(jItemOpen);jNewGame.add(jItemPlayAgain);jNewGame.add(jItemValid);jNewGame.add(jGrade);jNewGame.add(jItemExit);/添加等級設置子菜單jGrade.add(jRMItemEasy);jGrade.add(jRMItemNor

23、mal);jGrade.add(jRMItemHard);初始化菜單欄后要添加菜單欄組件的事件監(jiān)聽程序通過玩家鼠標在游戲界而上的左鍵點擊來接受玩家的輸入,玩家點古菜單是通過ActionListener接口來實現(xiàn)的,當玩家點擊菜單時會觸發(fā)相關的監(jiān)聽方法,來實現(xiàn)玩家想要的功能。在此游戲中需要為每一個組件添加事件監(jiān)聽(addActionListener)。實現(xiàn)如下:界面效果如圖所示:菜單欄效果如圖所示:3.2游戲的等級設置【8】游戲的等級選擇流程圖:游戲在開局運行之前玩家首先要選擇游戲難度等級(對于菜單欄里的等級選項的介紹上一節(jié)己述)不同的難度等級游戲分發(fā)給玩家的牌是不一樣的。選擇簡單等級玩家會分到

24、只有一種花色的紙牌,選擇中級等級玩家會分到兩種花色的紙牌,選擇高級等級玩家會分,四種花色的紙牌,如何對不同的等級分配相應種類的紙牌是該游戲設計中其中的一個關鍵點。上一節(jié)提到了己經(jīng)為菜單欄的功能選項添加了事件監(jiān)聽程序下面針對等級選擇的菜單項進行功能設計當玩家選擇等級時程序運行過程中會將菜單欄里的等級選項的信息由Spider對象的setGrade(intgrade)調(diào)用SplderMenuBar對象中的Grade信息,如果玩家選擇簡單等級則調(diào)用main.setGrade(Spider.EASY),如果玩家選擇中級等級則調(diào)用main.setGrade(Spider.NATURAL),如果玩家選擇高級

25、等級則調(diào)用main.setGrade(SpiderHARD);等級設計之后要讓程序發(fā)給玩家相應種類的紙牌這里采用的是設置一個等級變量intn=0;如果玩家選擇簡單等級那么對n賦值1,如果玩家選擇中級等級那么對n賦值2,如果玩家選擇高級等級那么對n賦值4,即1代表簡單等級一種花色,2代表中級等級兩種花色,4代表高級等級四種花色在后而的代碼實現(xiàn)中這3個數(shù)字都起著關鍵的作用。intn=0;/通過難度等級,為n賦值if(this.grade=Spider.EASY)n=1;elseif(this.grade=Spider.NATURAL)n=2;elsen=4;下面將說明等級設置后的紙牌的初始化的功能

26、設計。4.2初始化紙牌及發(fā)牌操作:對游戲中紙牌賦值即根據(jù)玩家的等級選擇分發(fā)相應種類的紙牌??刹捎胒or循環(huán)。/為card賦值for(inti=1;i=8;i+)for(intj=1;j=13;j+)cards(i-1)*13+j-1=newPKCard(i%n+1)+-+j,this);newPKCard(i%n+1)+-+j,this)指的是對n的值進行引入判斷等級選擇。例如,當n為1時,i%n的值永遠是0,所以i%n+1的值永遠是1,因此n為1時,創(chuàng)建的card的名稱是1,1-1到1-13,全是黑桃,生成8副黑桃牌。當n為2時,i%n的值為0或1,所以i%n+1的值是1或2,因此n為2時,

27、1-1到1-13是黑桃,2-1到2-13,是紅桃,生成4副黑桃牌4副紅桃牌。當n為4時,與上類似。等級選擇設置之后要對相應等級的紙牌分發(fā)進行初始化這里引用thisrandomCardsO,此時設置一個中間變量temp用于隨機生成牌號的值的互換。for(inti=0;i5;i-)/初始化紙牌共五行for(intj=0;j=104)/如果索引值超出數(shù)組下標continue;/退出本次循環(huán),執(zhí)行外層循環(huán)pane.add(cardsn);/索引處的紙牌添加到容器cardsn.turnRear();/將紙牌轉(zhuǎn)向背面cardsn.moveto(newPoint(x,y);/將紙牌放在固定的位置上table

28、.put(newPoint(x,y),cardsn);/將紙牌的位置及相關信息存入x+=101;/每兩列之間的x坐標相距101個像素x=20;/x回到起點坐標y-=5;/y向上移動5個像素右下角發(fā)牌區(qū)紙牌的初始化代碼:intx=883;/將坐標定位到右下角發(fā)牌區(qū)inty=580;for(inti=0;i6;i+)/初始化右下角發(fā)牌區(qū)的紙牌,共6疊for(intj=0;j5;i-)/初始化玩牌區(qū)的紙牌,共5行for(intj=0;j=104)/如果索引值超出數(shù)組下標continue;/退出本次循環(huán),執(zhí)行外層循環(huán)pane.add(cardsn);/將索引處的紙牌添加到容器中cardsn.turnR

29、ear();/將紙牌轉(zhuǎn)向背面cardsn.moveto(newPoint(x,y);/將紙牌放在固定的位置上map.put(newPoint(x,y),cardsn);/將紙牌及其坐標值存入map中x+=101;/每兩列之間的x坐標相距101個像素x=20;/x坐標回到起點位置y-=5;/主坐標向上移5個像素5.5游戲運行開始游戲程序流程圖進行排列有可排列的牌發(fā)牌設置等級NYN游戲完成Y圖表1游戲結(jié)束游戲開始后玩家首先進行等級選擇,默認為簡單“簡單級別”默認己選,如果玩家沒有選擇等級直接選擇開局則游戲等級jRMItemEasy.setSelected(true),這時SpiderMenuBar

30、對象中的main.setGrade(Sp1der.EASY);被調(diào)用flJSpider中的setGrade(intgrade)n的值為1,程序發(fā)給玩家的紙牌為單一花色。如果玩家覺得這局不想玩了想換一局可以用鼠標點擊重新開始那么原有的紙牌將全部被除重新進行紙牌的初始化重新給玩家發(fā)牌,由以下代碼實現(xiàn):游戲的顯示可行性操作的設計可以幫助玩家在不知道該如何擺放紙牌的情況下進行擺放提示如果沒有可行的操作的話將不提示。這部分功能的設計需要構(gòu)造線程當玩家用鼠標點古了顯示可行性操作后可以連接擺放的紙牌會閃一下即一下是圖片本身一下是張白色冬片首先先要判斷程序給玩家的牌是否有可行性的操作具體實現(xiàn)下:在確定了有可行

31、性操作之后SpiderMenuBar對象就會調(diào)用PKCard對象中的publicvoidrun()來實現(xiàn)提示玩家有可行性操作的功能。玩牌的過程中玩家會不停的扌由牌從大到小進行擺放一共有十列牌當其中有某列的牌被抽完后應該提示玩家該列有空位不能發(fā)牌即該列已沒有牌。這一功能的設計是判斷該列的牌數(shù)是否為空先取得該列最后一張牌的位置引用getLastCardLocation如果最后一張牌的位置是在該列擺放紙牌的最后一個位置則有牌可以繼續(xù)發(fā)牌所以首先進行最后一張牌的位置判斷,實現(xiàn)如下:如果最后一張牌的位置在發(fā)牌的列的位置上則可以發(fā)牌即card!一null這個時候?qū)⒖梢岳^續(xù)發(fā)牌實現(xiàn)如下:publicvoid

32、deal()this.setNA();/還原/判斷10列中是否空列for(inti=0;i10;i+)if(this.getLastCardLocation(i)=null)/第i列最后一張牌的位置為空時/消息提示框JOptionPane.showMessageDialog(this,有空位不能發(fā)牌!,提示,JOptionPane.WARNING_MESSAGE);return;intx=20;for(inti=0;i10;i+)PointlastPoint=this.getLastCardLocation(i);/這張牌應“背面向上”if(c=0)/沒有發(fā)過牌時,背面牌之間的距離lastPo

33、int.y+=5;/這張牌應“正面向上”else/正面牌之間的距離lastPoint.y+=20;table.remove(cardsc+i.getLocation();cardsc+i.moveto(lastPoint);table.put(newPoint(lastPoint),cardsc+i);cardsc+i.turnFront();cardsc+i.setCanMove(true);/將組件card移動到容器中指定的順序索引。this.pane.setComponentZOrder(cardsc+i,1);Pointpoint=newPoint(lastPoint);if(card

34、sc+i.getCardValue()=1)intn=cardsc+i.whichColumnAvailable(point);point.y-=240;PKCardcard=(PKCard)this.table.get(point);if(card!=null&card.isCardCanMove()this.haveFinish(n);x+=101;c+=10;4.3紙牌移動放置操作:/用鼠標拖動紙牌publicvoidmouseDragged(MouseEventarg0)if(canMove)intx=0;inty=0;Pointp=arg0.getPoint();x=p.x-poin

35、t.x;y=p.y-point.y;this.moving(x,y);/*方法:放置紙牌*/publicvoidsetNextCardLocation(Pointpoint)PKCardcard=main.getNextCard(this);if(card!=null)if(point=null)card.setNextCardLocation(null);main.map.remove(card.getLocation();/先從HashMap中刪除cardcard.setLocation(card.initPoint);/為card設置新的坐標main.map.put(card.initP

36、oint,card);/再將card添加到HashMap中elsepoint=newPoint(point);point.y+=20;card.setNextCardLocation(point);point.y-=20;main.map.remove(card.getLocation();card.setLocation(point);main.map.put(card.getLocation(),card);card.initPoint=card.getLocation();4.4回收紙牌操作:回收紙牌及過關判定功能主要代碼:publicvoidhaveFinish(intcolumn)P

37、ointpoint=this.getLastCardLocation(column);PKCardcard=(PKCard)this.table.get(point);dothis.table.remove(point);card.moveto(newPoint(20+finish*10,580);/將組件移動到容器中指定的順序索引。pane.setComponentZOrder(card,1);/將紙牌新的相關信息存入Hashtablethis.table.put(card.getLocation(),card);card.setCanMove(false);point=this.getLa

38、stCardLocation(column);if(point=null)card=null;elsecard=(PKCard)this.table.get(point);while(card!=null&card.isCardCanMove();finish+;/如果8付牌全部組合成功,則顯示成功的對話框if(finish=8)JOptionPane.showMessageDialog(this,恭喜你,順利通過!,成功,JOptionPane.PLAIN_MESSAGE);if(card!=null)card.turnFront();card.setCanMove(true);4.5幫助菜

39、單功能的實現(xiàn):主要代碼如下:publicclassAboutDialogextendsJDialogJPaneljMainPane=newJPanel();JTabbedPanejTabbedPane=newJTabbedPane();privateJPaneljPanel1=newJPanel();privateJPaneljPanel2=newJPanel();privateJTextAreajt1=newJTextArea(將電腦多次分發(fā)給你的牌按照相同的花色由大至小排列起來。直到桌面上的牌全都消失。);privateJTextAreajt2=newJTextArea(游戲開發(fā)者:13級

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論