![基于java開(kāi)發(fā)的蜘蛛紙牌程序設(shè)計(jì)(共28頁(yè))_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/baa99510-f340-47a6-bac0-f12962a15051/baa99510-f340-47a6-bac0-f12962a150511.gif)
![基于java開(kāi)發(fā)的蜘蛛紙牌程序設(shè)計(jì)(共28頁(yè))_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/baa99510-f340-47a6-bac0-f12962a15051/baa99510-f340-47a6-bac0-f12962a150512.gif)
![基于java開(kāi)發(fā)的蜘蛛紙牌程序設(shè)計(jì)(共28頁(yè))_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/baa99510-f340-47a6-bac0-f12962a15051/baa99510-f340-47a6-bac0-f12962a150513.gif)
![基于java開(kāi)發(fā)的蜘蛛紙牌程序設(shè)計(jì)(共28頁(yè))_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/baa99510-f340-47a6-bac0-f12962a15051/baa99510-f340-47a6-bac0-f12962a150514.gif)
![基于java開(kāi)發(fā)的蜘蛛紙牌程序設(shè)計(jì)(共28頁(yè))_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/baa99510-f340-47a6-bac0-f12962a15051/baa99510-f340-47a6-bac0-f12962a150515.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 編號(hào): 本科畢業(yè)論文(設(shè)計(jì))題目: 學(xué) 院 專 業(yè) 學(xué) 號(hào) 姓名 指導(dǎo)教師 職稱: 完成日期 誠(chéng) 信 承 諾我謹(jǐn)在此承諾:本人所寫(xiě)的畢業(yè)論文均系本人獨(dú)立完成,沒(méi)有抄襲行為,凡涉及其他作者的觀點(diǎn)和材料,均作了注釋,若有不實(shí),后果由本人承擔(dān)。 承諾人(簽名): 年 月 日 基于java開(kāi)發(fā)的蜘蛛紙牌程序設(shè)計(jì)姓名:關(guān)俊生 學(xué)號(hào):3指導(dǎo)老師:李林國(guó)摘要:java是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言(以下簡(jiǎn)稱Java語(yǔ)言)和Java平臺(tái)的總稱。Java是面向?qū)ο蟮恼Z(yǔ)言。蜘蛛紙牌是一款受人喜歡的休閑游戲,微軟的每一代操作系統(tǒng)中都裝有
2、這種紙牌游戲,很多人都玩過(guò)蜘蛛紙牌,都熟悉蜘蛛紙牌游戲所需要的功能。本人做的蜘蛛紙牌游戲開(kāi)發(fā)理念是基于WINDOWS XP操作系統(tǒng)中自帶蜘蛛紙牌游戲。利用java語(yǔ)言實(shí)現(xiàn)了蜘蛛紙牌游戲的主要功能如紙牌的移動(dòng)、放置、回收、重發(fā)。利用javax.swing包的類實(shí)現(xiàn)紙牌游戲的用戶界面,通為各個(gè)菜單組件添加監(jiān)視器來(lái)實(shí)現(xiàn)鼠標(biāo)單擊事件所觸發(fā)的接口方法,使得用戶可以單擊菜單項(xiàng)來(lái)實(shí)現(xiàn)具體的功能。通過(guò)設(shè)置紙牌的等級(jí)來(lái)初始化紙牌隨機(jī)分配紙牌,為用戶玩紙牌游戲提供相應(yīng)的等級(jí)。意義:通過(guò)自己對(duì)蜘蛛紙牌游戲的開(kāi)發(fā),使我更加熱愛(ài)java語(yǔ)言,讓我懂得和洗去了更多程序開(kāi)發(fā)的知識(shí)及經(jīng)驗(yàn),為以后進(jìn)入編程工作提供條件。關(guān)鍵字:
3、java語(yǔ)言、游戲背景、功能實(shí)現(xiàn)Spider solitaire program based on java developmentName: Guan Junsheng Student ID: 200 829 010 213 Instructor: Li LinguoAbstract: java is the Java programming language from Sun Microsystems, Inc. in May 1995 (hereinafter referred to as the general term of the Java language) and Java p
4、latforms. Java is object-oriented languages. Spider Solitaire is a people like casual games, each generation of Microsoft's operating system are equipped with this card game, many people have played Spider Solitaire are all familiar with the functionality required by the spider card game. I do s
5、pider solitaire game development philosophy is based on the WINDOWS XP operating system comes with the spider solitaire game. Java language to achieve the main function of the spider solitaire game, such as movement of the playing cards, place, recycling, re-issued. The use of the javax.swing packag
6、e class that implements the user interface of the card game pass for each menu component to add a monitor to the mouse click event triggered by the interface method, the user can click the menu items to achieve a specific function. To initialize the cards by the level of the set of cards randomly as
7、signed to cards, to provide the appropriate level for users playing solitaire. Meaning: the spider solitaire game development, so that I more love the java language, so I know how to wash away the more knowledge and experience of program development, and provide conditions for the future to enter th
8、e programming work.Keywords: Java language, the background of the game functions目錄1.緒論1.1 游戲開(kāi)發(fā)的背景知識(shí).1.2 需要做的準(zhǔn)備工作.2. 開(kāi)發(fā)工具介紹.2.1 java語(yǔ)言概述.2.2 java語(yǔ)言的特點(diǎn).2.3 Eclipse開(kāi)發(fā)平臺(tái)介紹.3. 總體設(shè)計(jì).3.1代碼功能模塊的設(shè)計(jì).3.2 程序總體設(shè)計(jì)流程圖.3.3模塊一的詳細(xì)介紹.3.3.1 主要的類.3.3.2 主要的變量.3.3.3主要的方法.3.4 模塊二的詳細(xì)介紹.3.4.1主要的類.3.4.2 主要的變量.3.4.3主要的方法.3.5 模
9、塊三的詳細(xì)介紹.3.5.1主要的類.3.5.2主要的變量. 3.5.3 主要的方法. 3.6模塊四的詳細(xì).3.6.1主要的類.3.6.2主要的變量. 3.6.3 主要的方法.4. 功能設(shè)計(jì).4.1 需要實(shí)現(xiàn)的主要功能.4.2 功能設(shè)計(jì)流程圖.4.3 主要功能的代碼實(shí)現(xiàn).4.3.1 游戲菜單欄內(nèi)游戲菜單及幫助菜單功能展示.4.3.2 主界面的設(shè)計(jì). 4.3.3 紙牌的初始化以及發(fā)牌操作.4.3.4 紙牌的移動(dòng)以及放置. 4.3.5顯示當(dāng)前紙牌可行的操作.4.3.6 回收紙牌.5. 程序的運(yùn)行及發(fā)布. 5.1 運(yùn)行程序. 5.2 發(fā)布程序.6. 工作總結(jié).參考文獻(xiàn).1.緒論1.1 游戲開(kāi)發(fā)的背景知
10、識(shí)相信很多人都玩過(guò)蜘蛛紙牌這款休閑游戲,現(xiàn)在隨著生活水平的提高,人們擁有充分的時(shí)間來(lái)享受休閑游戲帶來(lái)的快樂(lè),越來(lái)越多的人親睞蜘蛛紙牌游戲。談起這款游戲,大家并不陌生。從WINDOWS2000系統(tǒng)開(kāi)始,就嵌入了蜘蛛紙牌游戲,可是隨著微軟系統(tǒng)的不段升級(jí),蜘蛛紙牌游戲的功能業(yè)變得越來(lái)越強(qiáng)大,游戲的界面也更加美觀。用戶的體驗(yàn)感受也更加美好。所以,蜘蛛紙牌游戲的開(kāi)發(fā)對(duì)于人類的生活?yuàn)蕵?lè)更加有意義。了解蜘蛛紙牌的開(kāi)發(fā)過(guò)程也是作為一名學(xué)習(xí)計(jì)算機(jī)專業(yè)大學(xué)生所應(yīng)該嘗試的過(guò)程。游戲的目標(biāo)是以最少的移動(dòng)次數(shù)將牌面中的十疊牌以及待發(fā)的五組,共計(jì)八副牌整理移除。當(dāng)所有牌被移除整理到界面的左下方,游戲獲勝。1.2 需要做的
11、準(zhǔn)備工作需要做的工作有學(xué)習(xí)掌握開(kāi)發(fā)程序的方法,開(kāi)了解發(fā)工具,進(jìn)行需求分析,根據(jù)得到的需求規(guī)格說(shuō)明書(shū)設(shè)計(jì)具體的程序流程圖,編寫(xiě)程序,修改程序,運(yùn)行程序,系統(tǒng)調(diào)試程序、測(cè)試程序,發(fā)布程序。2.開(kāi)發(fā)工具介紹2.1 java語(yǔ)言概述:java是由Sun Microsystems公司于1995年5月推出的java程序設(shè)計(jì)語(yǔ)言和java平臺(tái)的總稱。用java實(shí)現(xiàn)的瀏覽器顯示它的魅力:跨平臺(tái)的特點(diǎn)使得它越來(lái)越受到許多程序員的親睞。java除了可以開(kāi)發(fā)動(dòng)態(tài)的Web頁(yè)還可以開(kāi)發(fā)各種系統(tǒng)軟件?,F(xiàn)在常用的瀏覽器比如說(shuō)360瀏覽器,IE瀏覽器中均配備有java applet。java平臺(tái)由java虛擬機(jī)和各種java
12、應(yīng)用編程接口(簡(jiǎn)稱API)構(gòu)成。java應(yīng)用編程接口為java提供了一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,可分為基本部分和擴(kuò)展部分。在操作系統(tǒng)上安裝一個(gè)java平臺(tái)就可以運(yùn)行任何一個(gè)java程序啦?,F(xiàn)在java平臺(tái)已經(jīng)幾乎嵌入到所有的操作系統(tǒng)黨章。這樣java程序就可以只編譯一次,就可以在各種系統(tǒng)當(dāng)中運(yùn)行啦。java目前最新的版本是java1.7版本的。2.2 java語(yǔ)言的特點(diǎn):java語(yǔ)言是一種簡(jiǎn)單的、面向?qū)ο蟮摹⒎植际降?、健壯的、安全的、與平臺(tái)無(wú)關(guān)的、多線程、高性能的、動(dòng)態(tài)程序設(shè)計(jì)語(yǔ)言。1.java語(yǔ)言簡(jiǎn)單易學(xué)的。 java語(yǔ)言的語(yǔ)法與C語(yǔ)言和C+語(yǔ)言很接近,使得多數(shù)程序員很容易學(xué)習(xí)和使用jav
13、a。另一方面,java丟棄了C+中很少使用的,很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地。java語(yǔ)言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。2.平臺(tái)無(wú)關(guān)性 平臺(tái)無(wú)關(guān)性是指Java能運(yùn)行于不同的平臺(tái)。Java引進(jìn)虛擬機(jī) 原理,并運(yùn)行于虛擬機(jī),實(shí)現(xiàn)不同平臺(tái)的Java接口之間。使用Java編寫(xiě)的程序能在世界范圍內(nèi)共享。Java的數(shù)據(jù)類型與 機(jī)器無(wú)關(guān),Java虛擬機(jī)(Java Virtual Machine)是建立在硬件和操作系統(tǒng)之上,實(shí)現(xiàn)Java二進(jìn)制代碼的解釋執(zhí)行功能, 提供于不同平臺(tái)的接口的。 3.安全性 Java的編程類似C+
14、,學(xué)習(xí)過(guò)C+的讀者將很快掌握J(rèn)ava的精髓。Java舍棄了C+的指針對(duì)存儲(chǔ)器地址的直接操作,程序運(yùn)行時(shí),內(nèi)存由操作系統(tǒng)分配,這樣可以避免病毒通過(guò)指針侵入系統(tǒng)。Java對(duì)程序提供了安全管理器,防止程序的非法訪問(wèn)。 4.面向?qū)ο?Java吸取了C+面向?qū)ο蟮母拍睿瑢?shù)據(jù)封裝于類中,利用類的優(yōu)點(diǎn),實(shí)現(xiàn)了程序的簡(jiǎn)潔性和便于維護(hù)性。類的封裝性、繼承性等有關(guān)對(duì)象的特性,使程序代碼只需一次編譯,然后通過(guò)上述特性反復(fù)利用。程序員只需把主要精力用在類和接口的設(shè)計(jì)和應(yīng)用上。Java提供了眾多的一般對(duì)象的類,通過(guò)繼承即可使用父類的方法。在Java中,類的繼承關(guān)系是單一的非多重的,一個(gè)子類只有一個(gè)父類,子類的父類又有
15、一個(gè)父類。Java提供的Object類及其子類的繼承關(guān)系如同一棵倒立的樹(shù)形,根類為Object類,Object類功能強(qiáng)大,經(jīng)常會(huì)使用到它及其它派生的子類。 5.分布式 Java建立在擴(kuò)展TCP/IP網(wǎng)絡(luò)平臺(tái)上。庫(kù)函數(shù)提供了用HTTP和FTP協(xié)議傳送和接受信息的方法。這使得程序員使用網(wǎng)絡(luò)上的文件和使用本機(jī)文件一樣容易。 6.健壯性 Java致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤。類型檢查幫助檢查出許多開(kāi)發(fā)早期出現(xiàn)的錯(cuò)誤。Java自己操縱內(nèi)存減少了內(nèi)存出錯(cuò)的可能性。Java還實(shí)現(xiàn)了真數(shù)組,避免了覆蓋數(shù)據(jù)的可能,這些功能特征大大提高了開(kāi)發(fā)Java應(yīng)用程序的周期。并且Java還提供了Null指針檢測(cè)、數(shù)組
16、邊界檢測(cè)、異常出口、Byte code校驗(yàn)等功能。 7.解釋型 我們知道C,C+等語(yǔ)言,都是針對(duì)CPU芯片進(jìn)行編譯,生成機(jī)器代碼,該代碼的運(yùn)行就和特定的CPU有關(guān)。Java不像C或C+,它不針對(duì)CPU芯片進(jìn)行編譯,而是把程序編譯成稱為自字節(jié)碼的一種“中間代碼”。字節(jié)碼是很接近機(jī)器碼的文件,可以在提供了java虛擬機(jī)(JVM)的任何系統(tǒng)上被解釋執(zhí)行。 8.動(dòng)態(tài) java程序的基本組成單元就是類,有些類是自己編寫(xiě)的,有些是從類庫(kù)中引入的,而類又是運(yùn)行時(shí)動(dòng)態(tài)裝載的,這就使得Java可以在分部環(huán)境中動(dòng)態(tài)的維護(hù)程序及分類,而不像C+那樣,沒(méi)檔期類庫(kù)升級(jí)以后,如果想讓程序具有新類庫(kù)提供的功能,就需要修改程
17、序,重新編譯。9.多線程Java是支持多線程的語(yǔ)言。多線程是一種應(yīng)用程序設(shè)計(jì)方法。線程是一大進(jìn)程里分出來(lái)的,小的、獨(dú)立的進(jìn)程,使得在一個(gè)程序里可同時(shí)執(zhí)行多個(gè)小任務(wù)。多線程帶來(lái)的好處是具有更好的交互性能和實(shí)時(shí)控制性能。但采用傳統(tǒng)的程序設(shè)計(jì)語(yǔ)言(如:C/C+)實(shí)現(xiàn)多線程程序并非易事。Java實(shí)現(xiàn)了多線程技術(shù),提供了簡(jiǎn)便的實(shí)現(xiàn)多線程的方法,并擁有一組高復(fù)雜性的同步機(jī)制。10.可以移植的。這種可移植性來(lái)源于體系結(jié)構(gòu)中立性,另外,java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長(zhǎng)度。java系統(tǒng)本身也具有很強(qiáng)的可移植性,java編譯器是用java實(shí)現(xiàn)的,java運(yùn)行環(huán)境是用ANSIC實(shí)現(xiàn)的。2.3 Eclipse
18、開(kāi)發(fā)平臺(tái)簡(jiǎn)介:Eclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開(kāi)發(fā)工具(Java Development Tools,JDT)。 雖然大多數(shù)用戶很樂(lè)于將 Eclipse 當(dāng)作 Java 集成開(kāi)發(fā)環(huán)境(IDE)來(lái)使用,但 Eclipse 的目標(biāo)卻不僅限于此。Eclipse 還包括插件開(kāi)發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開(kāi)發(fā)人員,因?yàn)樗试S他們構(gòu)建
19、與 Eclipse 環(huán)境無(wú)縫集成的工具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境而言,所有工具開(kāi)發(fā)人員都具有同等的發(fā)揮場(chǎng)所。這種平等和一致性并不僅限于 Java 開(kāi)發(fā)工具。盡管 Eclipse 是使用 Java 語(yǔ)言開(kāi)發(fā)的,但它的用途并不限于 Java 語(yǔ)言;例如,支持諸如 C/C+ 和 COBOL 等編程語(yǔ)言的插件已經(jīng)可用,或預(yù)計(jì)將會(huì)推出。Eclipse 框架還可用來(lái)作為與軟件開(kāi)發(fā)無(wú)關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)?;?Eclipse 的應(yīng)用程序的一個(gè)突出例子是 IBM® Rationa
20、l® Software Architect,它構(gòu)成了 IBM Java 開(kāi)發(fā)工具系列的基礎(chǔ)。Eclipse IDE for Java EE Developers443.總體設(shè)計(jì):3.1代碼功能功能模塊設(shè)計(jì):蜘蛛紙牌游戲共由4個(gè)部分組成,分別 是:Spider.java,SpiderMenuBar.java,PKCard.java,AboutDialog.java。SpiderMenuBar.java包含名為SpiderMenuBar的public類,其主要功能為生成蜘蛛紙牌游戲的菜單欄,實(shí)現(xiàn)菜單欄中各個(gè)組件的事件偵聽(tīng)。主要包括3個(gè)模塊:圖形用戶界面的構(gòu)建;組件監(jiān)聽(tīng)接口的實(shí)現(xiàn):顯
21、示可執(zhí)行操作的線程。PKCard.java包含名為PKCard的public類,其主要功能為:定義紙牌的屬性,包括名稱,位置等相關(guān)信息。并通過(guò)相關(guān)方法實(shí)現(xiàn)紙牌的移動(dòng)等。AboutDialog.java包含名為AboutDialog的public類,其主要功能為生成蜘蛛紙牌游戲的幫助欄。Spider.java包含名為Spider的public類,其主要功能為生成蜘蛛紙牌游戲的框架,實(shí)現(xiàn)游戲中的方法,包括:紙牌的隨機(jī)生成,位置的擺放等。3.2程序的總體設(shè)計(jì)流程圖: 3.3模塊一的詳細(xì)介紹:SpiderMenuBar.java的功能是生成蜘蛛紙牌游戲的菜單欄。實(shí)現(xiàn)菜單欄中的各個(gè)組件的事件。3.3.1
22、主要的類:JMenuBar類、JMenu類、JMenuItem類、JRadioButton類都是設(shè)計(jì)GUI(圖形用戶界面)的包javax.swing中的類??梢杂胕mport引用這些類。JMenuBar類是JComponent類的子類負(fù)責(zé)創(chuàng)建菜單條的。即JMenuBar類的一個(gè)實(shí)例就是一個(gè)菜單條。JMenu類是JComponent類的子類負(fù)責(zé)創(chuàng)建菜單組的。即JMenu類的一個(gè)實(shí)例化就是一個(gè)菜單。JMenuItem類是JMenu類的父類負(fù)責(zé)創(chuàng)建菜單項(xiàng)。即JMenuItem類的一個(gè)實(shí)例化就是一個(gè)菜單項(xiàng)。JRadioButtonMenuItem類負(fù)責(zé)一個(gè)單選按鈕菜單項(xiàng)的實(shí)現(xiàn)。JRadioButton
23、MenuItem 是屬于一組菜單項(xiàng)中的一個(gè)菜單項(xiàng),該組中只能選擇一個(gè)項(xiàng)。ButtonGroup 類用于為一組按鈕創(chuàng)建一個(gè)多斥作用域。使用相同的 ButtonGroup 對(duì)象創(chuàng)建一組按鈕意味著“開(kāi)啟”其中一個(gè)按鈕時(shí),將關(guān)閉組中的其他所有按鈕。SpiderMenuBar類是此文件的一個(gè)主類是JMenuBar的子類。Show類是Thread的子類用于創(chuàng)建線程。3.3.2主要的變量:jNewGame、jHelp變量分別是JMenu類創(chuàng)建的“游戲”、“幫助”菜單。jItemAbout、jItemOpen、jItemPlayAgain、jItemExit、jItemValid變量分別是JMenuItem類
24、創(chuàng)建的“關(guān)于”、“開(kāi)局”、“重新發(fā)牌”、“退出”、“顯示可行操作”菜單項(xiàng)。jRMItemEasy、jRMItemNormal、jRMItemHard變量分別是JRadioButtonMenuItem類創(chuàng)建的“簡(jiǎn)單:?jiǎn)我换ㄉ?、“中?jí):雙花色”、“高級(jí):四花色”的單選按鈕菜單項(xiàng)。group變量是ButtonGroup 類創(chuàng)建的一組按鈕選擇對(duì)象。spider變量是Spider類創(chuàng)建的對(duì)象用于主界面窗口的實(shí)現(xiàn)。將在Spider.java文件中介紹。3.3.3主要的方法:public JMenuBar()創(chuàng)建新的菜單欄。public JMenu(String text)構(gòu)造一個(gè)新菜單,用提供的字符串作
25、為其文本。public JMenuItem(String text)創(chuàng)建帶有指定文本的菜單項(xiàng)。public JRadioButtonMenuItem(String text)創(chuàng)建一個(gè)帶文本的單選按鈕菜單項(xiàng)。public ButtonGroup()創(chuàng)建一個(gè)新的單選按鈕對(duì)象組。 public void add(MenuItem item)向菜單增加由參數(shù)item指定的菜單項(xiàng)對(duì)象。public void add(AbstractButton b)將單選按鈕添菜單項(xiàng)加到組中。public void add(JMenu c)將指定的菜單添加加到菜單欄中。public void addSeparator(
26、)將新分隔符追加到菜單的末尾。所需要添加的事件處理的接口方法將在后來(lái)的模塊中進(jìn)行介紹。事件源即能夠產(chǎn)生的事件的對(duì)象。監(jiān)視器用于對(duì)事件源進(jìn)行監(jiān)視以便對(duì)發(fā)生的事件做出處理。事件源通過(guò)調(diào)用相應(yīng)的方法將某個(gè)對(duì)象作為自己的監(jiān)視器。這個(gè)方法是addActionListen(ActionListener listen)該方法中的參數(shù)是ActionListener類型的接口。因此必須用ActionListener接口的類創(chuàng)建的對(duì)象傳遞給該方法的參數(shù),使得該對(duì)象成為事件源的的監(jiān)視器。監(jiān)視器負(fù)責(zé)調(diào)用特定的方法處理事件,創(chuàng)建監(jiān)視器的類必須提供處理事件的特定的方法,即實(shí)現(xiàn)接口方法。public void addMen
27、uListener(MenuListener l)添加菜單事件的偵聽(tīng)器。void menuSelected(MenuEvent e)選擇某個(gè)菜單時(shí)調(diào)用。 void menuDeselected(MenuEvent e)取消選擇某個(gè)菜單時(shí)調(diào)用。 void menuCanceled(MenuEvent e)取消菜單時(shí)調(diào)用。3.4模塊二的詳細(xì)介紹:PKCard的功能是定義紙牌的屬性,包括名稱,位置等相關(guān)信息。并通過(guò)相關(guān)方法實(shí)現(xiàn)了紙牌的移動(dòng)等。3.4.1主要的類:JDialog類是創(chuàng)建對(duì)話框窗口的主要類。可以使用此類創(chuàng)建自定義的對(duì)話框,或者調(diào)用 JOptionPane 中的多個(gè)類方法來(lái)創(chuàng)建各種標(biāo)準(zhǔn)對(duì)話
28、框。Jpanel類是一個(gè)面板類負(fù)責(zé)創(chuàng)建一個(gè)面板容器,再向這個(gè)面板添加組件,然后將面板添加到底層容器中。JTabbedPane類負(fù)責(zé)創(chuàng)建一個(gè)組件,它允許用戶通過(guò)單擊具有給定標(biāo)題和/或圖標(biāo)的選項(xiàng)卡,在一組組件之間進(jìn)行切換。JTextArea類負(fù)責(zé)創(chuàng)建一個(gè)顯示純文本的多行區(qū)域。它作為一個(gè)輕量級(jí)組件Container類負(fù)責(zé)創(chuàng)建一個(gè)容器對(duì)象,此容器可以包含其它組件。AboutDialog類是JDialog類的子類,負(fù)責(zé)創(chuàng)建一個(gè)顯示對(duì)話框。3.4.2主要的變量:jMainPane、jPanel1、jPanel2、變量是JPane1創(chuàng)建的面板容器。jt1、jt2是JTextArea類創(chuàng)建的文本區(qū)對(duì)象。jTa
29、bbedPane是JTabbedPane類創(chuàng)建的選項(xiàng)卡窗格對(duì)象。c變量是Container類創(chuàng)建的容器。3.4.3主要的方法:public JTabbedPane()創(chuàng)建一個(gè)具有默認(rèn)的 JTabbedPane.TOP 選項(xiàng)卡布局的空 TabbedPane.public JDialog()創(chuàng)建一個(gè)沒(méi)有標(biāo)題并且沒(méi)有指定 Frame 所有者的無(wú)模式對(duì)話框。一個(gè)共享的、隱藏的窗體將被設(shè)置為該對(duì)話框的所有者。public JPanel()創(chuàng)建具有雙緩沖和流布局的新面板容器。public JTextArea(String text)構(gòu)造顯示指定文本為text的新的文本區(qū)。public void setTi
30、ttle(String s)設(shè)置一個(gè)標(biāo)題為s的對(duì)話框。public void setSize(int width,int heigth)創(chuàng)建寬為width,高位heigth大小的對(duì)話框。public void setResizable(boolean b)設(shè)置對(duì)話框是否可調(diào)整大小。b為true時(shí),對(duì)話框可調(diào)整大小。public void setDefaultCloseOperation(int operation)該方法用來(lái)設(shè)置單機(jī)窗體右上角的關(guān)閉圖標(biāo)后,程序會(huì)做出怎樣的處理。operation取DISPOSE_ON_CLOSE時(shí)/隱藏當(dāng)前窗口,并釋放窗體所占有的其他資源。public voi
31、d setVisible(boolean b)設(shè)置框口是可見(jiàn)還是不可見(jiàn)。b取true是為可見(jiàn)。public Container getContentPane()方法可得到窗口的內(nèi)容面板容器。public void JTextArea.setSize(int width,int heigth)設(shè)置文本區(qū)的大小。public void JTextArea.setEditable(boolean b)設(shè)置文本區(qū)是否可以編輯。public void JTextArea.setLineWrap(boolean b)設(shè)置文本區(qū)中輸入的文本是否可以實(shí)現(xiàn)在右邊界自動(dòng)換行。public void JTextAr
32、ea.setFont(Font f)設(shè)置文本區(qū)內(nèi)的字體。public void JTextArea.setForeground(Color c)設(shè)置文本區(qū)組件的前景色。public void addTab(String title,Icon icon,Component component,String tip)添加由 title 和/或 icon 表示的 component 和 tip,其中任意一個(gè)都可以為 nul參數(shù):title - 此選項(xiàng)卡中要顯示的標(biāo)題,icon - 此選項(xiàng)卡中要顯示的圖標(biāo),component - 單擊此選項(xiàng)卡時(shí)要顯示的組件,tip - 此選項(xiàng)卡要顯示的工具提示。pub
33、lic void pack()調(diào)整此窗口的大小,以適合其子組件的首選大小和布局。3.5模塊三的詳細(xì)介紹:PKCard的作用是定義紙牌的屬性,包括名稱、位置等相關(guān)信息。并通過(guò)相關(guān)方法實(shí)現(xiàn)紙牌的移動(dòng)。3.5.1主要類介紹:JLable類負(fù)責(zé)創(chuàng)建標(biāo)簽對(duì)象。標(biāo)簽用于短文本字符串或圖像或二者的顯示區(qū)。Thread類負(fù)責(zé)創(chuàng)建線程對(duì)象。MouseListener接口、MouseMotionListener接口負(fù)責(zé)處理事件源所觸發(fā)的鼠標(biāo)事件,包括處理鼠標(biāo)按下、釋放、進(jìn)入、退出、單擊、連擊、拖動(dòng)、移動(dòng)所觸發(fā)鼠標(biāo)事件。Point類負(fù)責(zé)創(chuàng)建表示 (x,y) 坐標(biāo)空間中的位置的點(diǎn)對(duì)象,以整數(shù)精度指定。MouseEve
34、nt類負(fù)責(zé)創(chuàng)建鼠標(biāo)所發(fā)生的事件對(duì)象。Flash類負(fù)責(zé)創(chuàng)建線程對(duì)象,不斷的獲取下一張紙牌。PKCard類是文件的主類,實(shí)現(xiàn)MouseListener接口的JLable的子類。負(fù)責(zé)創(chuàng)建紙牌對(duì)象。3.5.2主要變量:Point point變量表示紙牌的位置對(duì)象。Point initPoint表示紙牌的初始化位置對(duì)象。int value變量表示紙牌的內(nèi)容值。int type變量表示紙牌的類型。String name變量表示紙牌的名稱。Container pane變量表示標(biāo)簽內(nèi)主容器。boolean canMove 變量表示紙牌是否可以移動(dòng),值為true時(shí),可以移動(dòng)。boolean isFront變量表
35、示紙牌是否正面顯示,值為true時(shí),則為正面顯示。PKCard previousCard變量表示上面一張紙牌3.5.3主要方法:public void flashCard(PKCard card)方法啟動(dòng)Flash線程不停的獲取下一張紙牌直至完成。public void run()方法為紙牌的正面設(shè)置白色圖片。card.updateUI()方法將UI屬性重置為當(dāng)前外觀的值。public void mousePressed(MouseEvent mp)方法按下鼠標(biāo)時(shí)事件的處理方法。public void mouseReleased(MouseEvent mr)方法釋放鼠標(biāo)時(shí)事件處理的方法。pub
36、lic void setNextCardLocation(Point point)方法放置鼠標(biāo)時(shí)事件處理方法。public int whichColumnAvailable(Point point)方法為判斷可用列。public void mouseDragged(MouseEvent argO)方法鼠標(biāo)拖動(dòng)紙牌時(shí)事件處理方法。public void moving(int x,int y)方法將紙牌移動(dòng)(x,y)個(gè)位置。pane.setComponentZOrder(this,1)方法將主件移動(dòng)到容器中指定的順序索引。public PKCard(String name,Spider spide
37、r)方法紙牌的構(gòu)造函數(shù)。public void turnFront()方法令紙牌顯示正面。public void turnRear()方法令紙牌顯示背面。public void moveto(Point point()方法將紙牌移動(dòng)到點(diǎn)pointpublic void setCanMove(boolean can)方法判斷紙牌是否能夠移動(dòng)。public boolean isCardFront()方法判斷紙牌是否正面顯示。public boolean isCardCanMove()方法判斷紙是否能夠移動(dòng)。public int getCardValue()方法獲得紙牌的內(nèi)容值。public int
38、 getCardType()方法獲得紙牌的類型。3.6模塊四的詳細(xì)介紹:Spider.java文件是蜘蛛紙牌游戲的主類文件,其主要功能是生成蜘蛛紙牌游戲的框架,實(shí)現(xiàn)游戲中的方法,包括紙牌的隨機(jī)生成、位置的擺放等。3.6.1主要的類: JFrame類及其子類負(fù)責(zé)創(chuàng)建的對(duì)象稱為窗體。JLable類負(fù)責(zé)創(chuàng)建標(biāo)簽對(duì)象。標(biāo)簽用于短文本字符串或圖像或二者的顯示區(qū)。Container類負(fù)責(zé)創(chuàng)建一個(gè)容器對(duì)象,此容器可以包含其它組件。PKCard類負(fù)責(zé)創(chuàng)建紙牌對(duì)象。Hashtable類實(shí)現(xiàn)一個(gè)哈希表,該哈希表將鍵映射到相應(yīng)的值。3.6.2主要的變量:public static final int EASY=1;
39、代表“簡(jiǎn)單”等級(jí)。public static finalint NATURAL=2 代表“普通”等級(jí)。public static finalint HARD=3 代表“難”等級(jí)。private int grade=Spider.EASY設(shè)定初始等級(jí)為簡(jiǎn)單等級(jí);private Container pane 變量為Container類創(chuàng)建的面板容器。private PKCard card變量為PKCard類創(chuàng)建的紙牌數(shù)組。private JLable clickLable1變量為JLable類創(chuàng)建的右下角發(fā)牌區(qū)的鼠標(biāo)點(diǎn)擊響應(yīng)區(qū)域。private JLable groudLable變量為JLable
40、類創(chuàng)建的背景框數(shù)組。Hshtable table變量為Hashtable類創(chuàng)建的一個(gè)哈希表對(duì)象,用于存儲(chǔ)鍵值數(shù)據(jù)對(duì)。private int c變量為紙牌的數(shù)量。private int n變量為紙牌的等級(jí)。private int a變量為紙牌所在的列號(hào)。private int finish變量為紙牌從小到大排列成功的次數(shù)。3.6.3主要的方法:public void setTittle(String s)設(shè)置一個(gè)標(biāo)題為s的窗體。public void setVisible(boolean b)設(shè)置框體是可見(jiàn)還是不可見(jiàn)。b取true是為可見(jiàn)。public void setSize(int widt
41、h,int heigth)創(chuàng)建寬為width,高位heigth大小的窗體。public void setDefaultCloseOperation(int operation)該方法用來(lái)設(shè)置單機(jī)窗體右上角的關(guān)閉圖標(biāo)后,程序會(huì)做出怎樣的處理。operation取EXIT_ON_CLOSE時(shí)結(jié)束窗體所在的應(yīng)用程序。public void setMenuBar(MenuBar mb)將此窗體的菜單欄設(shè)置為指定的菜單欄。public void pane.setBackground(Color c)設(shè)置面板的背景顏色。public void pane.setLayout(布局對(duì)象)設(shè)置面板的布局。pub
42、lic Container getContentPane()方法可得到窗口的內(nèi)容面板容器。public void setBounds(int a,int b,int weidth, int heigth)設(shè)置出現(xiàn)在屏幕中的組件距離屏幕的左面a個(gè)像素,距屏幕上面b個(gè)像素,組件寬為weidth,高為heigth。public void newGame()方法開(kāi)始新游戲。public int getC()方法返回紙牌的數(shù)量。public void setGrade(int grade)方法設(shè)置紙牌游戲的等級(jí)。public void initCards()方法進(jìn)行初始化紙牌public void ra
43、ndomCards()方法令紙牌隨機(jī)分配。public void setNA()方法設(shè)置還原紙牌游戲。public void setCardsLocation()方法設(shè)置待展開(kāi)紙牌級(jí)表面初始化紙牌的位置。public void showEnableOperator()方法進(jìn)行顯示是否有可以移動(dòng)的紙牌。public void deal()方法開(kāi)始運(yùn)行游戲。public PKCard getPreviousCard(PKCard card)方法獲取當(dāng)前紙牌上面的那一張紙牌。public PKCard getNextCard(PKCard card)方法獲取當(dāng)前紙牌的下面的那一張紙牌。public
44、Point getLastCardLocation(int n)方法獲取第n列紙牌最后一張紙牌的位置。public Point getGroundLabelLocation(int n)方法獲取第n列紙牌的背景框架的位置。public void setGroundLabelZOrder()放置groundLable組件。將組件groundLable移動(dòng)到容器中指定的順序索引。順序(105+i)確定了繪制組件的順序;具有最高順序的組件將第一個(gè)繪制,具有最低順序的組建將最后一個(gè)繪制。在組建重疊的地方,具有較低順序的組建將覆蓋具有較高順序的組件。public void haveFinish(int
45、column)判斷紙牌的擺放是否成功。4.功能設(shè)計(jì):4.1需要實(shí)現(xiàn)的主要功能:(1)游戲主界面的設(shè)計(jì)包括背景顏色、框架大小、玩牌區(qū)域、發(fā)牌區(qū)域、回收紙牌的區(qū)域組件的設(shè)置。(2)點(diǎn)擊鼠標(biāo)、釋放鼠標(biāo)、拖動(dòng)鼠標(biāo)時(shí)紙牌需要實(shí)現(xiàn)的事件處理程序。(3)移動(dòng)放置一組或者單個(gè)紙牌時(shí)。需要紙牌按照由小到大的順序排列,并列類型相同。(4)當(dāng)某列的紙牌按照從A到K得順序排列時(shí),程序會(huì)自動(dòng)回收這組紙牌到回收紙牌的區(qū)域。(5)當(dāng)用鼠標(biāo)單擊發(fā)牌區(qū)域的紙牌時(shí),如果10列紙牌中沒(méi)有空白列,則順序把紙牌發(fā)到每列紙牌的最下面。否則,彈出有空位不能發(fā)牌對(duì)話框。(6)當(dāng)玩家不知道當(dāng)前游戲如何進(jìn)行時(shí),可以點(diǎn)擊菜單項(xiàng)顯示可行的操作提示玩
46、家下一步該移動(dòng)哪一張紙牌。(7)等級(jí)設(shè)置,玩家通過(guò)單擊游戲菜單里相應(yīng)的等級(jí)菜單項(xiàng)來(lái)設(shè)置游戲的難度等級(jí)。游戲的默認(rèn)等級(jí)是簡(jiǎn)單等級(jí)。 4.2功能設(shè)計(jì)流程圖:4.3主要功能的代碼實(shí)現(xiàn):4.3.1游戲菜單欄內(nèi)游戲菜單及幫助菜單功能展示: 4.3.2主界面的設(shè)計(jì):代碼實(shí)現(xiàn)如下:public Spider()setTitle("蜘蛛牌"); setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); /設(shè)置框架的大小setSize(1024, 742); /生成SpiderMenuBar對(duì)象,并放置在框架之上setJMenuB
47、ar(new SpiderMenuBar(this); pane = this.getContentPane(); /設(shè)置背景顏色pane.setBackground(new Color(0, 139, 69); /將布局管理器設(shè)置成為nullpane.setLayout(null); clickLabel = new JLabel(); clickLabel.setBounds(883, 606, 121, 96);設(shè)置發(fā)牌區(qū)組件的位置 pane.add(clickLabel); clickLabel.addMouseListener(new MouseAdapter() public vo
48、id mouseReleased(MouseEvent me) if (c < 60)Spider.this.deal(); ); this.initCards(); this.randomCards(); this.setCardsLocation();為紙牌設(shè)置位置 groundLabel = new JLabel10;創(chuàng)建背景框組件數(shù)組 int x = 20; for (int i = 0; i < 10; i+) groundLabeli = new JLabel();創(chuàng)建背景框組件 groundLabeli .setBorder(javax.swing.BorderFactory .createEtchedBorder(javax.swing.border.EtchedBorder.RAISED); ground
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 滬教版數(shù)學(xué)九年級(jí)下冊(cè)27.3《正多邊形與圓》聽(tīng)評(píng)課記錄4
- 八年級(jí)數(shù)學(xué)上冊(cè) 12.2 三角形全等的判定 第2課時(shí) 用“SAS”判定三角形全等聽(tīng)評(píng)課記錄 新人教版
- 小學(xué)數(shù)學(xué)蘇教版六年級(jí)下冊(cè)《分?jǐn)?shù)和百分?jǐn)?shù)的實(shí)際應(yīng)用(總復(fù)習(xí))》公開(kāi)課聽(tīng)評(píng)課記錄
- 新北師大版數(shù)學(xué)一年級(jí)下冊(cè)《買鉛筆》聽(tīng)評(píng)課記錄
- 2025年煤制合成氨合作協(xié)議書(shū)
- 五年級(jí)上冊(cè)數(shù)學(xué)口算題
- 四年級(jí)教師教學(xué)計(jì)劃
- 一年級(jí)蘇教版數(shù)學(xué)下冊(cè)《認(rèn)識(shí)圖形》聽(tīng)評(píng)課記錄
- 社區(qū)團(tuán)購(gòu)戰(zhàn)略合作協(xié)議書(shū)范本
- 人貨電梯租賃合同范本
- 項(xiàng)目合作備忘錄范文
- 婦產(chǎn)科醫(yī)生個(gè)人年終述職報(bào)告課件
- 《費(fèi)曼學(xué)習(xí)法》讀后感
- 趣味成語(yǔ)課程設(shè)計(jì)
- 2025年人教版高考生物一輪復(fù)習(xí):綜合PCR的基因工程問(wèn)題
- 鋼筋焊接工藝性試驗(yàn)方案
- 2024年福建省新高考生物試卷真題(含答案解析)
- GB/T 44273-2024水力發(fā)電工程運(yùn)行管理規(guī)范
- 醫(yī)院突發(fā)性事件、護(hù)理重點(diǎn)環(huán)節(jié)、醫(yī)院病區(qū)等應(yīng)急預(yù)案
- 2024年南京市中考?xì)v史試題及答案
- 2024年四川省涼山州中考物理適應(yīng)性試卷(附答案解析)
評(píng)論
0/150
提交評(píng)論