魔板游戲的設(shè)計與開發(fā)_第1頁
魔板游戲的設(shè)計與開發(fā)_第2頁
魔板游戲的設(shè)計與開發(fā)_第3頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精品文檔,供參考!魔板游戲策劃書學院:軟件學院專業(yè):軟件工程班級:軟工(中興通)121 學生姓名:馬泉華精品文檔,供參考!目錄第一章:項目概述3 1.1 目的3 1.2 項目背景3 1.3 項目的范圍與目標3 1.3.1 范圍描述3 1.3.2 主要功能3 (1) 概述3 (2)項目設(shè)計內(nèi)容 4 (1)puzzlegame.java 4 (2)puzzlepad.java 5 (3) block.java 5 (4)point.java 5 (5)handleimage.java 6 (6)handmove.java 6 (7)verifysuccess 6 第二章項目估算 6 第三章風險評估

2、 7 3.1 風險識別7 3.2 風險應(yīng)對策略7 第四章詳細設(shè)計 8 4.1 需求分析8 4.1.1 用戶登錄界面8 4.1.2 設(shè)計流程圖9 4.2 系統(tǒng)的詳細設(shè)計10 4.2.1 puzzlegame類 10 4.2.2 puzzlepad類13 4.2.3 black類15 4.2.4 point類17 4.2.5 handimage類18 4.2.6 hanglemove類 19 4.2.7 verifysuccess類21 第五章 項目的實現(xiàn) 5.1 游戲主類的設(shè)計23 5.2 魔板對象的實現(xiàn)24 5.3 游戲使用時間的設(shè)計26 5.4 游戲成功與否的判斷計27 5.5 游戲增加英雄

3、榜功能28 5.6 增加查看英雄榜功能29 5.7 增加背景音樂能29 5.8 增加登陸界面功能30 精品文檔,供參考!第六章 軟件的配置31 第七章 人員組織31 第八章 附錄31 第九章 結(jié)束語31 精品文檔,供參考!第一章:項目概述1.1 目的為了保證項目團隊按時保質(zhì)地完成項目目標,便于項目團隊成員更好地了解項目情況,使項目工作開展的各個過程合理有序,因此以文件化的形式,把對于在項目生命周期內(nèi)的工作任務(wù)范圍、 各項工作的任務(wù)分解、 項目團隊組織結(jié)構(gòu)、各團隊成員的工作責任、 團隊內(nèi)外溝通協(xié)作方式、 開發(fā)進度、經(jīng)費預算、項目 內(nèi)外環(huán)境條件、 風險對策等內(nèi)容做出的安排以書面的方式,作為項目團隊

4、成員以及項目干系人之間的共識與約定, 項目生命周期內(nèi)的所有項目活動的行動基礎(chǔ),項目 團隊開展和檢查項目工作的依據(jù)。利用所學高級語言的語法特性,結(jié)合數(shù)據(jù)結(jié)構(gòu)算法、網(wǎng)絡(luò)知識、文件處理和數(shù)據(jù)庫等知識完成綜合題目的設(shè)計和代碼實現(xiàn),并培養(yǎng)鍛煉分析程序、撰寫報告等能力。1.2 項目背景做這個魔板游戲是為了嘗試著開發(fā)一項軟件游戲所做的一個項目,由我們小組共同來完成。 java 語言是當今最為流行的程序設(shè)計語言之一作為一門非常優(yōu)秀和極為健壯的編程語言, 它同時具有的面向?qū)ο螅?與平臺無關(guān),分布式應(yīng)用,安全,穩(wěn)定和多線程等優(yōu)良的特征,使用java 語言,不僅可以開發(fā)出功能強大的大型應(yīng)用程序,而且java 語言本

5、身突出的跨平臺的特性也使得它特別適合于internet上的應(yīng)用開發(fā),可以這樣說,java 的出現(xiàn)使得所開發(fā)的應(yīng)用程序“一次編寫,處處可用”的實現(xiàn)成為了可能。近來隨著計算機的快速發(fā)展,各種各樣的電腦游戲?qū)映霾桓F,使得我們能有更多的娛樂項目, 而魔板游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且魔板游戲水平頗高,我們可以自己選擇不同難度的游戲,大有與人腦分庭抗禮之勢。1.3 項目的范圍與目標1.3.1 項目的范圍魔板游戲作為一種智力小游戲,受到廣大中小學生以及一些上班族的喜愛,可以在忙碌的一天之后放松下自己緊繃的精神,同時可也以得到智力的提升。魔板游戲的游戲規(guī)則十分簡單,卻擁有十分廣闊選擇空間, 使

6、得游戲背景圖案可以變化多端, 比其它游戲復雜深奧。 這就是魔板游戲的魅力所在。玩魔板游戲?qū)θ四X的智力開發(fā)很有幫助,可增強一個人的計算能力、 創(chuàng)造能力、 思維能力、判斷能力, 也能提高人的注意力和控制力。玩魔板游戲?qū)和倌甑闹橇Πl(fā)展起到積極作用,使他們能更好的分析事物。1.3.2 主要功能(1) 概述(1)模版由 3*3 或 4*4 個格子組成。對于3*3 魔板,在前 8 個格子里隨即放置 8 個編號 18 的方塊,最后一個格子是未放置的空格子;對于4*4 的魔板,在前 15 個格子里隨機放置15 個編號為 115的方塊,最后一個格子是未放置方塊的空格子。精品文檔,供參考!(2)用鼠標單擊任何

7、與空格子水平或垂直相鄰的方塊可以把該方塊移入空子,而當前方塊移動之前所在的格子成為空格子。通過不斷的移動方塊可以將方塊一行一行的按數(shù)字序號排好。(3)魔板游戲也可以使用圖像來代替數(shù)字。例如,對于3*3 的魔板,將一幅圖像分成 3*3 福小圖像,除去最后一幅小圖像(圖像的右下角),將其余各小圖像打亂順序后放在魔板的方塊上,最終目標是通過移動方塊恢復原始圖像(不包括圖像的右下角)。(4)當用戶按要求排列好方塊后,程序彈出對話框,提示用戶成功的消息。(2)項目設(shè)計內(nèi)容在設(shè)計魔板游戲時,需要編寫7 個 java 源文件: puzzlegame.java 、puzzlepad.java 、point.j

8、ava、block.java、handleimage.java 、verifysuccess.java和handlemove.java。模板游戲除了需要編寫上述的7 個源程序所給出的類外,還需要java系統(tǒng)提供的一些重要的類,如jmenuitem、jbutton 等類。魔板游戲所用到得一些重要的類以及之間的組合關(guān)系如下圖1 所示。圖 1 類之間的組合關(guān)系以下是我們編寫的6 個 java 源程序的總體設(shè)計。(1)puzzlegame.java(主類)puzzlegame類負責創(chuàng)建魔板游戲的主窗口,該類含有main 方法,程序從該類開始執(zhí)行。puzzlegame類成員變量中有 4中重要類型的對象

9、:puzzlepad 、jmune、jradiobutton 和 jbutton。puzzlegame類的主要成員的作用將在后面的puzzlegame jmune puzzlepad jradiobutton jbuttob point block handlemove image handlelmage verifysuccess 精品文檔,供參考!詳細設(shè)計中闡述, puzzlegame類創(chuàng)建的窗口以及其中的主要成員對象如圖2 所示。圖 2 puzzlegame窗口及主要的成員對象(2)puzzlepad.java puzzlepad類創(chuàng)建的對象是 puzzlepad類最重要的成員之一,代表

10、“魔板” 。該類的成員變量中有5 種重要類型的對象:point、 block、handlemove、handleimage和 image。puzzlepad類的主要成員的作用將在后面的詳細設(shè)計中說明闡述。(3) block.java block 類是 jtextfield 的一個子類,創(chuàng)建的對象是 puzzlepad類的重要成員之一,用來表示“魔板”中的方塊。(4)point.java point 類負責創(chuàng)建確定位置的對象,使用point 對象可以確定block 對象在精品文檔,供參考!puzzlepad對象之中的位置,即確定“方塊”在“魔板”中的位置。(5)handleimage.java

11、handleimage類所創(chuàng)建的對象負責將一幅圖像分成諾干個小圖像。(6) handlemove.java handlemove 類所創(chuàng)建的對象負責處理鼠標事件。(7)verifysuccessverifysuccess 類所創(chuàng)建的對象負責驗證用戶是否按要求成功排列模板中的方塊。第二章項目估算姓名崗位工資費用工作馬泉華組長- - 整個項目蘇鑫組員- - 項目預算李志強組員- - 項目概述張琪組員- - 風險評估由于我們都是學生,這個項目使我們利用課余時間做的,所以成本可以忽略不計。我們估算用兩周的時間用于項目的選題、資料等一系列的項目開發(fā)前的準備活動,用一周的時間進行項目的估算與及風險評估,用

12、三周的時間進行項目的具體設(shè)計、研究、開發(fā),最后一周用于整個項目的測試。所以總共大約用時一個半月的時間來完成它。精品文檔,供參考!第三章 風險評估3.1 風險識別3.2 風險應(yīng)對策略1. 強化團隊支持, 避免獨立的項目結(jié)構(gòu)。 通過有效的團隊建設(shè)增進團隊之間的項目支持,可以有效地避免一些技術(shù)風險。2. 改善溝通和問題解決。 同時還可以通過改善溝通, 加強和改善信息流通來促使一些問題得到合理解決。3. 經(jīng)常性地進行項目監(jiān)督及項目檢查和管理。4. 細化 wbs ,使用網(wǎng)絡(luò)計劃。在項目計劃階段通過細化工作包,采用網(wǎng)絡(luò)計劃等一些比較完善的計劃手段編制計劃,從而使造成技術(shù)風險的根源消除掉,實現(xiàn)降低技術(shù)風險的

13、目的。風險概率影響規(guī)模估計過低60% 嚴重的交付期限太緊張50% 嚴重的用戶需求變化頻繁75% 嚴重的技術(shù)達不到預期效果30% 輕微的質(zhì)量保證體系的措施實施不利60% 嚴重的軟件體系結(jié)構(gòu)設(shè)計不合理40% 災(zāi)難性的精品文檔,供參考!第四章詳細設(shè)計4.1 系統(tǒng)的需求分析4.1.1 用戶登錄界面圖用戶信息輸入信息是否合法用戶登錄到主界面是彈出錯誤信息否輸入登錄界面自動跳轉(zhuǎn)驗證登錄功能結(jié)構(gòu)圖精品文檔,供參考!4.1.2 設(shè)計流程圖開始魔板游戲開始界面switch 開始游戲計時器計時開始移動方塊改變游戲難度完成游戲選初級初級高級重新放置方塊改變游戲玩選擇數(shù)字玩法數(shù)字玩法圖像玩法選 擇 一幅 新 圖像選擇

14、默認圖像確定玩法退出結(jié)束是否是否精品文檔,供參考!總體功能圖4.2 系統(tǒng)的詳細設(shè)計4.2.1 puzzlegame類1、效果圖puzzlepad創(chuàng)建的窗口效果如圖5所示。主界面開始選擇級別選擇圖像數(shù)字玩法圖像玩法初級高級使用一幅新圖像使用默認圖像精品文檔,供參考?。╝) puzzlegame創(chuàng)建的窗口(數(shù)字玩法)(b) puzzlegame創(chuàng)建的窗口(圖像玩法)圖 5 puzzlegame創(chuàng)建的窗口2、uml 圖mazewindow 類 是 javax.swing 包 中 jframe 的 一 個 子 類 , 并 實 現(xiàn) 了actionlistener 接口,該類的主要成員變量和方法的uml

15、圖如圖 6 所示。精品文檔,供參考!圖 6 puzzlegame類的 uml 圖以下是 uml 圖中有關(guān)數(shù)據(jù)和方法的詳細說明。1)成員變量puzzlepad是 puzzlepad類聲明的對象,用來刻畫魔板,是puzzlegame類中最重要的成員之一bar是 jmenubar創(chuàng)建的菜單條,用來添加菜單。bar被放置在窗口的頂部grademenu和 choiceimage是 jmenu創(chuàng)建的菜單, 其名字分別為 “選擇級別”和“選擇圖像”。grademenu,choiceimage被添加到菜單條( bar)中。onegrade 、 twograde、 newimage和 defaultimage是

16、 jmenuitem創(chuàng)建的菜單項,名字依次為“初級” ,“高級” ,“選擇一幅新圖像”和 “使用默認圖像”, onegrade和 twograde菜單項被添加到菜單grademenu 中,newimage和 defaultimage都將當前窗口注冊為自己的actionevent 事件監(jiān)視器。digitplay 和 imageplay 是 jradiobutton 創(chuàng)建的屬于同一選擇組中的單選框,名字依次為“數(shù)字玩法” , “圖像玩法”。同一時刻 digitplay 和 imageplay中只能有一個處于選中狀態(tài)。startbutton 是 jbutton 創(chuàng)建的按鈕對象,名字為“開始” 。st

17、artbutton 將當前窗口注冊為自己的actionevent 事件監(jiān)視器。image是 image聲明的對象。tool 是 toolkit 對象,負責創(chuàng)建 image對象2)方法puzzlepad:puzzlepad digitplay,imageplay:jradiobutton bar:jmenubar startbutton:jbutton gradmenu,choiceimage:jmenu tool:toolkit onegrade,twograde:jmenuitem image:image newimage,defaultimage:jmenuitem puzzlegame(

18、) :無類型actionperformed(actionevent):void main(string):void jframe puzzlegame 精品文檔,供參考!puzzlegame() 是構(gòu)造方法,負責完成窗口的初始化操作。actionperformed(actionevent)方法是 puzzlegame類實現(xiàn) actionlistener 接口中的方法。 puzzlegame 類創(chuàng)建的窗口是菜單中的菜單項、單選框以及按鈕上的 actionevent 事件監(jiān)視器。如果用戶選中onegrade或 twograde 菜單項時 actionperformed(actionevent)方法

19、所執(zhí)行的操作分別是讓puzzlepad對象將自己的級別設(shè)置為一級或二級。如果用戶選中newimage 或 defaultimage菜單項時, actionperformed(actionevent)方法所執(zhí)行的操作就是分別改變image對象。 當用戶單擊 start按鈕后,如果單選框 digitplay 處于被選中狀態(tài),那么 actionperformed(actionevent)方法所執(zhí)行的操作就是讓puzzlepad對象使 用 數(shù) 字 魔 板 , 如 果 單 選 框imageplay被 選 中 時 , 那 么actionperformed(actionevent)方法所執(zhí)行的操作就是讓pu

20、zzlepad 對象使用圖像魔板。main 方法是程序運行的入口方法。4.2.2 puzzlepad類1、效果圖puzzlepad創(chuàng)建的魔板對象效果如圖7 所示。(a)數(shù)字魔板(b)圖像魔板精品文檔,供參考!圖 7 puzzlepad創(chuàng)建的魔板對象2、uml 圖puzzlepad類時 javax.swing 包中 jpanel容器的子類,所創(chuàng)建的對象:puzzlepad是 puzzlegame類中最重要的成員之一, 作為一個容器添加到puzzlegame窗口的中心。標明 puzzlepad類的主要成員變量、方法以及和puzzlegame類之間組合關(guān)系的 uml 圖如圖 8 所示。圖 8 puz

21、zlepad類的 uml 圖以下是 uml 圖中有關(guān)數(shù)據(jù)和方法的詳細說明。1)成員變量point 是 point 類型的而為數(shù)組,單元為point 類創(chuàng)建的對象,用來確定魔板中的方塊的位置block 是 block 類型的二維數(shù)組, 單元為 block 類創(chuàng)建的對象, 用來表示魔板中的方塊。distance,grade,m和 n 是 int 型數(shù)據(jù)。point 對象根據(jù) distance的值來進行初始化, 以便確定 point 對象之間的距離。m 和 n 的值是二維數(shù)值組block 和 point的行數(shù)和列數(shù), m 和 n 的默認值都是 3。grade的值代表魔板的級別,默認值是 1. han

22、dlemove是 handlemove 類創(chuàng)建的對象,負責處理block 對象上的鼠標事puzzlepad point:point handleimage:handleimage block:block; verifysuccess:verifysuccess distance:grade,m,n:int image:image handlemove:handelmove i sdigitplay:boolean tool:toolkit puzzlepad():無類型needinit():void gethandlemove():handlemove setisdigitplay():voi

23、d setimage(image):void setisimageplay():void setgrade(int):void paniccomponent(graphics):void getgrade():int jpanel puzzlegame puzzlepad: puzzlepad 精品文檔,供參考!件。handleimage是 handleimage類創(chuàng)建的對象,負責將一幅圖像分成若干幅小圖像。verifysuccess是 verifysuccess類創(chuàng)建的對象,負責驗證用戶是否按要求成功排列了魔板中的方塊。image是 image聲明的圖像對象。tool 是 toolkit 對

24、象,負責創(chuàng)建 image聲明的圖像對象: image。 、2)方法puzzlepad ()是構(gòu)造方法,負責創(chuàng)建puzzlepad對象。puzzlepad對象調(diào)用 gethandlemove()方法返回其中的handlemove 對象,即返回 handlemove。puzzlepad對象調(diào)用 setimage(image) 方法設(shè)置 image 對象。puzzlepad對象調(diào)用 setgrade(int)方法設(shè)置魔板的級別。puzzlepad對象調(diào)用 getgrade()方法返回 grade。puzzlepad對象調(diào)用 needinit()方法負責完成 block 和 point 對象的創(chuàng)建,

25、以及完成對其他的對象的初始化。 、puzzlepad對象調(diào)用 setisdigitplay()方法將魔板設(shè)置為數(shù)字玩法。puzzlepad對象調(diào)用 setisimageplay() 方法將魔板設(shè)置為圖像玩法。puzzlepad 對象調(diào)用paintcomponent(graphics) 方法將魔板使用的圖像,即image對象,繪制在魔板的右側(cè)。4.2.3 black類1、效果圖block 創(chuàng)建的對象效果如圖9所示。(a)對象 1 (b)對象 2 圖 9 block 創(chuàng)建的兩個對象2、uml 圖精品文檔,供參考!block 類是 javax.swing 包中 jtextfield類的一個子類,創(chuàng)建

26、的對象是二維數(shù)組 block 的單元中的對象。 block 型數(shù)組 block 是 puzzlepad類的重要成員之一。標明 block 類的主要成員變量和方法以及和puzzlepad類之間組合關(guān)系的uml圖如圖 10 所示。圖 10 block 類的 uml 圖以下是 uml 圖中有關(guān)數(shù)據(jù)和方法的詳細說明。1)成員變量point 是 point 型對象,用來確定 block 對象在 puzzlepad 所創(chuàng)建的魔板容器中的位置。object是 object 類型的對象,用來確定 block 對象上所顯示的數(shù)字或圖像。2)方法block 對象調(diào)用 setatpoint (point ) 方法設(shè)

27、置自己所在的“點” , 即設(shè)置 point對象的引用。block 對象調(diào)用 setatpoint ()返回自己所在的“點”即返回point對象的引用。block 對象調(diào)用 setobject (object )方法設(shè)置自己的成員object ,當設(shè)置object 是 integer對象時,當前的 block 對象顯示 integer對象中的數(shù)字;當設(shè)置 object是 image 對象時,當前 block 對象將調(diào)用 repaint ()方法重新繪制 image 對象。block 對象調(diào)用 paintcomponent(graphics )方法繪制出 image對象。jtextfield po

28、int :point object:object block () :無類型setobject(object):void setatpoint(point):void getobject():object getatpoint():point paintconent(graphics):void blockpuzzlepad block :block 精品文檔,供參考!4.2.4 point類1、效果圖point 創(chuàng)建的對象負責確定block 對象在 puzzlepad魔板容器中所在的位置。point 創(chuàng)建的對象沒有可顯示的效果圖。2、uml 圖point 創(chuàng)建的對象含有兩個重要int 型數(shù)據(jù)

29、,分別用來表示puzzlepad魔板容器坐標系中的 x 軸坐標和 y 軸坐標值,坐標系的原點是puzzlepad魔板容器的左上角,向右是 x 軸的正向,向下是y 軸的正向。 point 類創(chuàng)建的對象是二維數(shù)組point 的單元中的對象。 point 型二維數(shù)組 point 是 puzzlepad魔板容器的重要成員之一, 其單元中的 point 對象用來確定 block 對象在 puzzlepad魔板容器中的位置。標明 point 類的主要成員變量和方法以及和puzzlepad類之間組合關(guān)系的uml 圖如圖 11 所示。圖 11 point 類的 uml 圖以下是 uml 圖中有關(guān)數(shù)據(jù)和方法的詳

30、細說明。1)成員變量x 和 y 是 point 對象中的兩個 int 類型數(shù)據(jù),分別用來表示容器坐標系中的x軸坐標和 y 軸坐標值。haveblock 是 boolean型數(shù)據(jù),如果有 block 對象在該 point 對象上時,該數(shù)據(jù)為 true;否則為 false。x,y:int haveblock:boolean block:block point(int,int) :無類型gety():int ishaveblock():boolean equals(towerpoint):boolean sethaveblock(boolean):void setblock(block ):void

31、 getx():int getblock():block point puzzlepad point: point 精品文檔,供參考!block 是 block 類聲明的對象,用來存放一個 block 對象的引用,標明該 block對象在當前 point 對象上。2)方法point(int ,int)是構(gòu)造方法,用來創(chuàng)建point 對象。point 對象調(diào)用 ishaveblock ()方法返回一個 boolean型數(shù)據(jù),如果當前 point對象上有 block 對象, ishaveblock()方法返回 true;否則返回 false。point 對象調(diào)用 sethaveblock (boo

32、lean) 方法可以根據(jù)參數(shù)的值設(shè)置當前point對象上是否有 block 對象。point 對象調(diào)用 getx()和 gety()方法可以返回其中的x 軸坐標和 y 軸坐標。point 對象調(diào)用 equals (towerpoint)方法可以判斷當前point 對象是否和參數(shù)指定的 point 對象相同。point 對象調(diào)用 setblock(block)方法,將參數(shù)指定的block 對象放置在當前 point 對象上。point 對象調(diào)用 getblock()方法可以返回當前point 對象上的 block 對象。4.2.5 handleimage類效果圖handleimage創(chuàng)建的對象負

33、責將一幅圖像分解為諾干個小的圖像,沒有可顯示的效果圖。uml 圖handleimage類是 javax.swing 包中 jcomponent類的一個子類, 創(chuàng)建的對象 handleimage負責將一幅圖像分解成諾干幅小圖像, 是 puzzlepad類的重要成員之一。handleimage類的主要成員變量和方法以及和puzzlepad類之間的組合關(guān)系的 uml 圖像如圖 12所示。精品文檔,供參考!圖 12 handleimage類的 uml 圖以下是 uml 圖中有關(guān)數(shù)據(jù)和方法的說明。1)成員變量imagewidth 和 imageheight 是 int型數(shù)據(jù),用來存儲圖像的寬和高。too

34、l是 toolkit對象,用來獲得 image 對象。2)方法handleimage() 是構(gòu)造方法,負責完成handleimage對象的初始化。getimages(image,int ,int )方法將參數(shù)指定的圖像分成諾干個更小的圖像,并將這些圖像存放到一個image數(shù)組中,然后返回該數(shù)組。3)代碼( handleimage.java )4.2.6 hanglemove類1、效果圖andlemove創(chuàng)建的對象效果如圖13 所示。圖 13 handmove 創(chuàng)建的對象2、uml 圖handlemove 類是javax.swing 包中jpanel 容器的一個子類,并實現(xiàn)了mouseliste

35、ner和 actionlistener 接口,創(chuàng)建的對象 handlemove是 puzzlepad類的成員之一,負責監(jiān)視puzzlepad類中的 block 對象上的鼠標事件。當用戶用鼠標單擊 block 對象后,handlemove對象負責給出移動block 對象有關(guān)的算法, 并顯示用戶的時間。標明handlemove 要成員變量、方法以及和puzzlepad類之間組jcomponent handleimage imagewidth ,imagehight :int tool:toolkit handleimage() :無類型getiages(image,int,int) :image

36、puzzlepad handleimage:handleimage 精品文檔,供參考!合關(guān)系的 uml 圖如圖 14 所示。圖 14 handlemove類的 uml 圖以下是 uml 圖中有關(guān)數(shù)據(jù)和方法的詳細說明1、成員變量point 是 point 類型二維數(shù)組,用來存放 puzzlepad魔板容器中 point 數(shù)組的引用spendtime用來記錄用戶玩魔板游戲的用時recordtime是計時器showtime是 jtextfield 創(chuàng)建的文本框,負責顯示用時verify 是 verifysuccess聲明的對象,用來存放 puzzlepad魔板中 verifysuccess對象的引用

37、。2、方法handlemove()是構(gòu)造方法,負責創(chuàng)建handlemove對象handlemove對象調(diào)用 setpoint(point) 方法將 puzzlepad魔板容器的 point 對象的引用傳遞給該對象中的point,以便 handlemove 移動 puzzlepad魔板容器中的 block 對象handlemove 對象調(diào)用 setverifysuccess (verifysuccess )方法將 puzzlepad魔板容器的 verifysuccess對象的引用傳遞給該對象中的verify, verify 對象負判jpanel mouselistener actionliste

38、ner handlemove point: point showtime:jtextfield spendtime:int verifsuccess recordtime:timer handmove() :setpoint(point):void intspendtime():void setverifysuccess(verifysuccess):viod actionperformed(actionevent):void mousepressed(mouseevent e):void mousereleased(mouseevent e):void puzzlepad handlemov

39、e:handlemove 精品文檔,供參考!斷魔板中的 block 對象是否成功地按要求排列完畢handlemove對象調(diào)用 initspendtime()將 spendtime的值設(shè)置為 0 mousepressed (keyevent)方法是 handlemove 類實現(xiàn)的 mouselistener借口中的方法,當在block 對象上按下鼠標左鍵時,將觸發(fā)mouseevent 鍵盤事件,handlemove 對象將調(diào)用執(zhí)行 mousepressed (keyevent)方法對事件作出處理,即根據(jù)規(guī)則移動block 對象mousereleased (mouseevent)方法是 handl

40、emove 類實現(xiàn)的 mouselistener借口中的方法,當用在block 對象上釋放鼠標左鍵時,將觸發(fā)mouseevent鍵盤事件, handlemove 對象將調(diào)用執(zhí)行mousereleased(mouseevent) 方法對事件作出處理,其主要操作時判斷用戶是否已經(jīng)成功地將block 對象按要求排列完畢actionperformed (actionevent)是 handlemove 類實現(xiàn)的 actionlistener 借口中的方法。我們使用timer 類的構(gòu)造法國法 timer(int a,object b)創(chuàng)建了計時器 recordtime,其中的參數(shù) a的單位是毫秒, 確定

41、計時器每隔 a 毫秒 “振鈴”一次,參數(shù) b 是計時器的監(jiān)視器。在這里我們?nèi)=1000,監(jiān)視器 b 是當前handlemove 對象。計時器方式的振鈴事件是actionevent 類型事件,當振鈴事 件 發(fā) 生 時 , 監(jiān) 視 器 就 會 監(jiān) 視 到 這 個 事 件 , 監(jiān) 視 器 就 調(diào) 用actionperformed(actionevent)方法。當振鈴每隔1000 毫秒發(fā)生一次時,方法actionperformed(actionevent)就被執(zhí)行一次,所執(zhí)行的操作就是現(xiàn)實用戶當前的用時。4.2.7 verifysuccess類1、效果圖沒有可見的效果圖。2、uml 圖verifys

42、uccess創(chuàng)建的對象負責驗證用戶是否按要求成功排列魔板中的方塊,創(chuàng)建的對象 verifysuccess是 puzzlepad類的重要成員之一。 標明 verifysuccess類的主要成員變量和方法以及和puzzlepad類之間組合關(guān)系的uml 圖 15所示。精品文檔,供參考!圖 15 verifysuccess類的 uml 圖以下是 uml 圖中有關(guān)數(shù)據(jù)和方法的詳細說明。1)成員變量point 是 point 類型二維數(shù)組, 用來存放 puzzlepad魔板容器中 point 數(shù)組的引用。object是 object 數(shù)組,其單元可以存放任何對象。2)方法verifysuccess對象調(diào)用

43、 setpoint(point) 方法將 puzzlepad魔板中的 point 對象的引用傳遞給該對象中的point verifysuccess對象調(diào)用 setpoint(object)方法可以將 puzzlepad魔板容器的integer數(shù)組或 image數(shù)組的引用傳遞給該對象中的object verifysuccess對象調(diào)用 issuccess() 方法判斷用戶是否按要求成功排列魔板中的方塊,如果成功issuccess() 方法返回 true;否則返回 false point:point object:object puzzlepad verifysuccess verifysucce

44、ss:verifysuccess setpoint(point):void setobject(object):void issuccess():boolean 精品文檔,供參考!第五章項目的實現(xiàn)5.1 游戲主類的設(shè)計主類主要定義了游戲界面的布局,以及調(diào)用的一些類來實現(xiàn)游戲的進行。其主要的效果圖展示即為:核心代碼展示:public puzzlegame() tool=gettoolkit();/ 創(chuàng)建一個菜單條bar=new jmenubar(); grademenu=new jmenu( 選擇級別 );/ 建立指定標題為“選擇級別”的菜單choiceimage=new jmenu( 選擇圖像

45、 );/ 建立指定標題為“選擇圖像”的菜單onegrade=new jmenuitem( 初級 );/建立指定標題為“初級”的菜單選項twograde=new jmenuitem( 高級 );/建立指定標題為“高級”的菜單選項精品文檔,供參考!newimage=new jmenuitem( 選擇一幅新圖像);/ 建立指定標題為 “選擇一幅新圖像”的菜單選項defaultimage=new jmenuitem( 使用默認圖像);/ 建立指定標題為“使用默認圖像”的菜單選項grademenu.add(onegrade);/向 grademenu 添加由參數(shù)onegrade 指定的菜單選項對象gra

46、demenu.add(twograde);/ 向 grademenu 添加由參數(shù)twograde 指定的菜單選項對象choiceimage.add(newimage);/ 向 choiceimage 添加由參數(shù)newimage 指定的菜單選項對象choiceimage.add(defaultimage);/ 向 choiceimage 添加由參數(shù) defaultimage 指定的菜單選項對象bar.add(grademenu);/向 bar 菜單條添加由參數(shù)grademenu 指定的菜單選項對象bar.add(choiceimage);/向 bar 菜單條添加由參數(shù)choiceimage 指定

47、的菜單選項對象setjmenubar(bar);/ 設(shè)置菜單條里面的組件5.2 魔板對象的實現(xiàn)該游戲由數(shù)字或者圖像兩種選擇。同時,又有高級和級低的游戲選擇,因此我們需要通過一個程序來實現(xiàn)魔板的生成以及對象的實現(xiàn)。生成的魔板顯示為:主要代碼:public void setisdigitplay()/將魔板設(shè)置為數(shù)字玩法needinit(); isdigitplay=true;/ 當魔板玩法是數(shù)字玩法時arraylist numberlist=new arraylist();/創(chuàng)建方格的數(shù)字對象for(int k=0;km*n-1;k+) numberlist.add(k+1); 精品文檔,供參考

48、!object object=numberlist.toarray(); verifysuccess.setobject(object); collections.shuffle(numberlist); /隨機排列數(shù)字int k=0; for(int i=0;im;i+) if(im-1) for(int j=0;jn;j+) blockij.setobject(numberlist.get(k); k+; else for(int j=0;jn-1;j+) blockij.setobject(numberlist.get(k); k+; repaint(); 魔板中每一個小塊的形成以及圖片

49、分割之后的對象的實現(xiàn):效果如圖:主要代碼顯示:public void setobject(object object)/定義 setobject 類this.object=object;/this 代表使用該方法的當前對象if(object instanceof integer)/ 條件判斷語句,滿足要求時執(zhí)行下列語句integer number=(integer)object; settext(+value(); else if(object instanceof image)/ 不滿足 if 條件語句是執(zhí)行的條件repaint(); 精品文檔,供參考! public o

50、bject getobject()/ 創(chuàng)建該類return object;/ 返回值 5.3 游戲使用時間的設(shè)計智力類的游戲都會記錄下游戲所用的時間,魔板游戲?qū)儆谥橇︻愑螒蛑唬虼?,對于時間的記錄也將在我們的設(shè)計范圍之內(nèi)。實現(xiàn)的結(jié)果可以給游戲者一個提示。時間顯示如下:部分代碼:public void mousepressed(mouseevent e) / 鼠標事件recordtime.start();/ 開始時間觸發(fā)block block = null;/設(shè)置數(shù)據(jù)為空block = (block) e.getsource();/ 調(diào)用 block 類. for (int i = 0; i

51、point.length; i+) /用 for 循環(huán)來實現(xiàn)魔板游戲的進行for (int j = 0; j point0.length; j+) if (pointij.equals(startpoint) starti = i; startj = j; break; for (int i = 0; i point.length; i+) for (int j = 0; j point0.length; j+) if (pointij.ishaveblock() = false) 精品文檔,供參考!endi = i; endj = j; endpoint = pointij; break;

52、/ 兩個 for 循環(huán)記錄了魔板的移動路線以及魔板游戲的進度boolean movecondition1 = math.abs(endi - starti) = 1 & endj = startj;/判斷在行上是否滿足了條件boolean movecondition2 = math.abs(endj - startj) = 1 & endi = starti;/判斷在列上是否滿足了條件if (movecondition1 | movecondition2) /魔板游戲結(jié)束時,存在的一些信息記. 5.4 游戲成功與否的判斷設(shè)計對游戲是否成功完成進行監(jiān)測,一旦成功,著彈出窗口,顯示

53、“您成功了!”的消息框。主要代碼:public void mousereleased(mouseevent e) if (verify.issuccess() recordtime.stop(); record.settime(spendtime); record.setgrade(grade); if (isdigitalplay) record.setname(數(shù)字玩法 ); else record.setname(圖片玩法 ); if (record.isnewrecord() record.setvisible(true); else 精品文檔,供參考!joptionpane.show

54、messagedialog(this, 您 成 功 了 !, 消 息 框 , joptionpane.informa tion_message); 5.4 程序設(shè)計及調(diào)試運行利用jsp “一次編寫,各處運行”的編程優(yōu)點, 按功能模塊結(jié)構(gòu)設(shè)計菜單 ,布置各明細模塊工作界面, 編寫各個模塊的程序代碼, 進行編譯連接運行, 經(jīng)過反復調(diào)試修改, 以達到系統(tǒng)功能要求。 這個過程具有大量的工作量,應(yīng)仔細對每個程序細節(jié)進行分析思考、 編寫程序并調(diào)試, 做到程序簡潔清楚, 盡量避免可能潛在的程序錯誤,并在必要的地方加以注釋,以便于程序閱讀和修改。5.5 增加英雄榜功能對相應(yīng)的級別增加“英雄榜”功能。當用戶成功排列魔板中的方塊后,如果成績能排進前三名,就彈出一個對話框,將用戶的成績保存到“英雄榜”中。具體實現(xiàn):主要代碼:else if (e.getsource() = defaultimage) try image = tool.createimage(new file(d

溫馨提示

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

評論

0/150

提交評論