畢業(yè)設(shè)計(jì)(論文)基于java的連連看游戲設(shè)計(jì)與實(shí)現(xiàn)_第1頁
畢業(yè)設(shè)計(jì)(論文)基于java的連連看游戲設(shè)計(jì)與實(shí)現(xiàn)_第2頁
畢業(yè)設(shè)計(jì)(論文)基于java的連連看游戲設(shè)計(jì)與實(shí)現(xiàn)_第3頁
畢業(yè)設(shè)計(jì)(論文)基于java的連連看游戲設(shè)計(jì)與實(shí)現(xiàn)_第4頁
畢業(yè)設(shè)計(jì)(論文)基于java的連連看游戲設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)(論文)畢業(yè)設(shè)計(jì)(論文) 題目題目 基于基于 java 的連連看游戲的連連看游戲 設(shè)計(jì)與實(shí)現(xiàn)設(shè)計(jì)與實(shí)現(xiàn) 系系 別別 專專 業(yè)業(yè) 班班 級(jí)級(jí) 姓姓 名名 學(xué)學(xué) 號(hào)號(hào) 指導(dǎo)教師(職稱)指導(dǎo)教師(職稱) 日日 期期 蘭州工業(yè)高等專科學(xué)校蘭州工業(yè)高等??茖W(xué)校 畢業(yè)設(shè)計(jì)(論文)任務(wù)書畢業(yè)設(shè)計(jì)(論文)任務(wù)書 畢業(yè)設(shè)計(jì)(論文)題目基于 java 的連連看游戲設(shè)計(jì)與實(shí)現(xiàn) 課題內(nèi)容性質(zhì)軟件開發(fā) 課題來源性質(zhì)教師收集的結(jié)合生產(chǎn)實(shí)際的課題設(shè)計(jì)/論文 校內(nèi)(外)指導(dǎo)教師職 稱工作單位及部門聯(lián)系方式 朱亞玲 講師軟件工程系軟件技術(shù)教研室一、題目說明(目的和意義): 游戲產(chǎn)業(yè)作為現(xiàn)代電腦

2、電子技術(shù)的產(chǎn)物,正在以其獨(dú)特的魅力在全世界的娛樂領(lǐng)域占據(jù)主流位置, 我們?cè)诔姓J(rèn)廣大娛樂網(wǎng)民的選擇空間狹小的同時(shí),也必須明確的一點(diǎn)就是游戲本身所具有的強(qiáng)大的吸引 力。游戲的吸引力主要在于,它在讓玩家打發(fā)時(shí)間的同時(shí),可以讓人在緊張工作之余帶來最大程度的放 松,也可以增進(jìn)人們之間的交流、溝通,通過游戲還可以認(rèn)識(shí)更多的朋友,也可以到達(dá)跨省、跨市、甚 至跨國間人們互相娛樂的目的,從而滿足了人們休閑的需要。而且游戲產(chǎn)業(yè)促動(dòng)高科技技術(shù)不斷升級(jí), 作為經(jīng)濟(jì)增長(zhǎng)的一大支撐點(diǎn),已經(jīng)成為經(jīng)濟(jì)騰飛的“第四產(chǎn)業(yè)” 。 現(xiàn)在小游戲、網(wǎng)頁游戲越來越受網(wǎng)民歡迎,除了玩的方法簡(jiǎn)單外(不像其他游戲還需要注冊(cè)下載繁 瑣過程) ,很

3、多游戲不乏經(jīng)典。由于手機(jī)互聯(lián)網(wǎng)的不斷發(fā)展,傳統(tǒng)網(wǎng)游已經(jīng)不能跟上時(shí)代的潮流,而網(wǎng)頁 游戲無需客戶端的特性,決定了將來會(huì)是 web 游戲主宰網(wǎng)游市場(chǎng)。作為最基本的網(wǎng)頁游戲之一, “連連看” 游戲的設(shè)計(jì)與實(shí)現(xiàn)可以積累開發(fā)網(wǎng)頁游戲的經(jīng)驗(yàn),完善開發(fā)思路,為以后更高層次上的網(wǎng)頁游戲開發(fā), 打下堅(jiān)實(shí)的基礎(chǔ),更好的推動(dòng)網(wǎng)頁游戲的發(fā)展。 正是因?yàn)槿绱?,通過本次畢業(yè)設(shè)計(jì),讓學(xué)生掌握如何制作一個(gè)游戲軟件,以及制作游戲軟件的整個(gè) 流程,制作游戲軟件的步驟,讓學(xué)生熟悉項(xiàng)目開發(fā)的完整過程,為即將到來的就業(yè)工作打下基礎(chǔ)。另外 也通過本次設(shè)計(jì)將三年來所學(xué)的專業(yè)知識(shí)和其他方面的知識(shí)融入到實(shí)際應(yīng)用中,在實(shí)際運(yùn)用中學(xué)習(xí)和掌 握 j

4、ava 程序開發(fā)的全過程,進(jìn)一步熟悉掌握 java 程序設(shè)計(jì)語言的基礎(chǔ)內(nèi)容、基本技能和方法,同時(shí)培 養(yǎng)學(xué)生進(jìn)行分析問題、解決問題的能力;培養(yǎng)學(xué)生進(jìn)行設(shè)計(jì)分析、設(shè)計(jì)方法、設(shè)計(jì)操作與測(cè)試、設(shè)計(jì)過 程的觀察、理解和歸納能力的提高。 二、設(shè)計(jì)(論文)要求(工作量、內(nèi)容): 【設(shè)計(jì)內(nèi)容】: 通過 java 編一個(gè)連連看程序,通過鼠標(biāo)點(diǎn)擊把兩張一樣的牌,用三根以下的線連起來使其消掉。程序 實(shí)現(xiàn)以下幾個(gè)功能: 1.實(shí)現(xiàn)個(gè)人小型休閑游戲連連看; 2.開始游戲后,隨機(jī)生成圖片(或字符)位置,要求是至少兩兩相同,位置隨機(jī)打亂; 3.游戲規(guī)則是在一定時(shí)間內(nèi)將相同字符或圖片的牌連接,但要滿足只能至少單邊無阻礙呈直線趨

5、 勢(shì)連接,否則視為無效,若連接一對(duì)成功就消失于界面,繼續(xù)游戲,直到游戲結(jié)束或時(shí)間用完。 4.游戲過程中,遇到困難難以尋找下一符合要求的一對(duì)牌,可按左下按鈕重置重新排列,方可繼 續(xù)游戲。 5.可點(diǎn)擊“退出游戲”按鈕,結(jié)束游戲。 6.游戲中可使用道具。 可在以下內(nèi)容中進(jìn)行選擇,也可根據(jù)實(shí)際情況,自選內(nèi)容,但需事先和指導(dǎo)教師進(jìn)行溝通。 參考題目:java 編程實(shí)現(xiàn)貪吃蛇游戲,打地鼠游戲。 【設(shè)計(jì)要求】: 1.系統(tǒng)能夠提供友好的用戶界面,使操作人員的心情放松; 2.系統(tǒng)具有良好的運(yùn)行效率,能夠得到快速發(fā)現(xiàn)自我的目的; 3.系統(tǒng)應(yīng)有良好的可擴(kuò)充性,可以容易的轉(zhuǎn)入其它系統(tǒng)應(yīng)用; 4.平臺(tái)的設(shè)計(jì)具有一定的靈

6、活性。 【實(shí)施步驟】: 1.熟悉 java 語言、ultraedit-32 開發(fā)工具、eclipse 開發(fā)工具(占工作量的 5%) 2.游戲框架的搭建(占工作量的 15%) ; 3.菜單的制作(占工作量的 10%) ; 4.ui 的設(shè)計(jì)(占工作量的 10%) ; 5.算法的設(shè)計(jì)(占工作量的 15%) ; 6.算法的實(shí)現(xiàn)(占工作量的 30%) ; 7.系統(tǒng)調(diào)試:各小組進(jìn)行功能整合,由小到大地調(diào)試功能模塊,完成整個(gè)系統(tǒng)要求。(占工作量的 10%) 8.功能完善和改進(jìn):做最后的修繕和調(diào)整,使得功能全面、運(yùn)行流暢、貼近實(shí)際運(yùn)行環(huán)境。(占 5%) 【畢業(yè)論文】: 圍繞“連連看”游戲的分析、設(shè)計(jì)與實(shí)現(xiàn),撰

7、寫論文,論文不少于 30000 字。 論文撰寫規(guī)范參考附件:蘭州工專論文撰寫規(guī)范(附件一).doc 【提交內(nèi)容】: “連連看”游戲的可執(zhí)行文件和源碼。 畢業(yè)論文的電子稿和打印稿,答辯 ppt。 【注意事項(xiàng)】: 畢業(yè)設(shè)計(jì)的時(shí)間安排根據(jù)時(shí)間表,最后一周,檢查程序、交畢業(yè)設(shè)計(jì)論文;交畢業(yè)設(shè)計(jì)系統(tǒng) powerpoint 電子顯示文稿;按要求將畢業(yè)設(shè)計(jì)論文裝訂成冊(cè)。 指導(dǎo)老師打分方案:畢業(yè)設(shè)計(jì)成績(jī)=考勤*30%+論文*40%+技術(shù)實(shí)現(xiàn)*30%。 每周考勤一次,有特殊情況需向指導(dǎo)教師請(qǐng)假。 具體論文上交時(shí)間、論文答辯時(shí)間以系辦通知為準(zhǔn)。 三、進(jìn)度表 日 期內(nèi) 容 第 15 周 查閱文獻(xiàn),分析功能,確定基本

8、思路和設(shè)計(jì)內(nèi)容,確定需求分析。 開發(fā)環(huán)境的搭建; 第 16 周 設(shè)計(jì)界面; 圖片的選取與隨機(jī)生成; 單擊控件的事件處理;時(shí)間控制;其他控件與功能; 第 17 周 算法路徑的實(shí)現(xiàn); 得分設(shè)置; 過關(guān)設(shè)置; 第 18 周完成系統(tǒng),做功能修繕和調(diào)整,編寫用戶手冊(cè)。 第 19 周 第 20 周 按要求完成論文,并上交論文,制作電子文檔,為答辯做準(zhǔn)備。 完成日期 2011 年 1 月 6 日 答辯日期2011 年 2 月 21 日 四、主要參考文獻(xiàn)、資料、設(shè)備和實(shí)習(xí)地點(diǎn)及翻譯工作量: 【設(shè)備】:實(shí)踐基地資源、個(gè)人設(shè)備資源及實(shí)習(xí)地點(diǎn)的設(shè)備資源,按照設(shè)計(jì)要求進(jìn)行配置和安裝。 【設(shè)計(jì)環(huán)境】: 軟件:windo

9、ws xp,jdk6.0 以上版本,eclipse5.0 以上版本。 硬件:以軟件安裝要求為準(zhǔn)則,在設(shè)計(jì)的過程中確保程序調(diào)試的流暢。 【實(shí)習(xí)地點(diǎn)】:計(jì)算機(jī)實(shí)踐基地、學(xué)生選定的調(diào)式地點(diǎn)與學(xué)生自己考察的外部地點(diǎn)相結(jié)合。 【翻譯工作量】:對(duì)論文標(biāo)題、關(guān)鍵字、摘要進(jìn)行英文翻譯。 【參考文獻(xiàn)】: 1 張明新,周耿烈.java 語言程序設(shè)計(jì). 重慶:重慶大學(xué)出版社,2004. 2 周曉聰,李文軍,李師賢.面向?qū)ο蟪绦蛟O(shè)計(jì)與 java 語言. 北京:機(jī)械工業(yè)出版社,2004. 3 bruce eckel.java 編程思想.北京:機(jī)械工業(yè)出版社,2007. 4 james cohoon,jack david

10、son.java 程序設(shè)計(jì). 北京:清華大學(xué)出版社,2005. 5 steven holzner.java 技術(shù)內(nèi)幕. 北京:機(jī)械工業(yè)出版社,2002. 6 張洪斌.java 程序設(shè)計(jì)百事通. 北京:清華大學(xué)出版社,2001. 7 夏先波.java jdk 實(shí)例寶典. 北京:電子工業(yè)出版社,2007. 8 吳其慶.java 程序設(shè)計(jì)經(jīng)典教程. 北京:冶金工業(yè)出版社,2005. 9 耿祥義,張躍平.java 2 實(shí)用教程. 北京:清華大學(xué)出版社,2007. 10 蔡勇,姜磊,馬寧,倪文志.java 2 程序設(shè)計(jì)基礎(chǔ)教程與上機(jī)指導(dǎo). 北京:清華大學(xué)出版社, 2005. 11 林建素,孟康健.ecl

11、ipse 開發(fā)學(xué)習(xí)筆記 (第 1 版).北京:電子工業(yè)出版社. 2008.4 12 李松林,陳華清,任鑫.eclipse 寶典 (第 1 版).北京:電子工業(yè)出版社. 2007.9 指導(dǎo)教師簽字教研室主任簽字主管系領(lǐng)導(dǎo)簽字 年 月 日年 月 日年 月 日 注:本任務(wù)書要求一式兩份,一份系部留存,一份報(bào)教務(wù)處實(shí)踐教學(xué)科。 摘要摘要 游戲發(fā)展至今已經(jīng)有 30 多年歷史,在這個(gè)短暫的時(shí)期里,隨著硬件水平的提高,游戲 開發(fā)新技術(shù)層出不窮,經(jīng)典游戲比比皆是。大部分的人一聽到連連看游戲,通常就會(huì)想到這 是一個(gè)小游戲。 連連看游戲,是指在一個(gè)區(qū)域內(nèi),分布著許多不同的圖片,通過點(diǎn)擊兩張相同的圖片并 符合一定的

12、規(guī)則消除它們的一個(gè)游戲。我們最常見的是在 qq 游戲大廳里的 qq 連連看,網(wǎng)絡(luò) 上也有許多各式各樣的單機(jī)版連連看游戲。在游戲的過程中,可以考慮下如何使用自己掌握 的程序去實(shí)現(xiàn)游戲的效果,并嘗試去開發(fā)屬于自己的連連看,這是一件十分愜意的事情。在 本章中,我們將詳細(xì)的教大家如何使用 java 去開發(fā)一款屬于自己的單機(jī)連連看。 本游戲采用 java 語言開發(fā),以 myeclipse 為開發(fā)平臺(tái)。游戲主界面是基于 gui(圖形 用戶界面)的開發(fā),使得游戲界面簡(jiǎn)單清晰。并調(diào)用了其中的一些函數(shù),完成了事件的觸發(fā) 功能。希望通過這次開發(fā)設(shè)計(jì)出的連連看小游戲,給大家的生活帶來一點(diǎn)樂趣。 游戲通過定義動(dòng)態(tài)的二

13、維數(shù)組,根據(jù)一定的算法實(shí)現(xiàn)規(guī)定的路徑判斷。 關(guān)鍵詞:連連看、小游戲、java、gui、數(shù)組 abstract game development has 30 years of history, in this short period, along with the hardware level, game development new technology emerge in an endless stream, classic games meet the eye everywhere. most of the people hear lianliankan game, they usu

14、ally think this is a small game. lianliankan game, refers to a region, the distribution of many different pictures, click through to two cards of the same picture and conform to certain rules to eliminate them in a game. it is most common in qq game hall qq lianliankan, the network also has a lot of

15、 every kind of stand-alone edition game. in the course of the game, can consider how to use their mastery of the program to achieve game effects, and try to develop their own look again and again, this is a very happy thing. in this chapter, we will detail the teach you how to use java to develop a

16、belongs to own stand- alone lianliankan. the game using java language development, take myeclipse as the development platform. the game s interface is based on the gui (graphical user interface ) development, which makes the game interface simple and clear. and call some of these functions, complete

17、d the event trigger function. hope that through this design lianliankan game, for everyone to bring to life a little fun. the game through the definition of the dynamic two-dimensional array, according to certain provisions of the path algorithm to determine. key words: lianliankan, game, java, gui,

18、 array 目錄目錄 摘要摘要.iv 第一章第一章 緒論緒論 .- 1 - 一 游戲產(chǎn)業(yè)介紹.- 1 - 二 游戲的發(fā)展概況.- 1 - 第二章第二章 連連看游戲描述連連看游戲描述 .- 2 - 一 游戲規(guī)則描述.- 2 - 二 游戲設(shè)計(jì)的目的.- 2 - 三 游戲可行性論證.- 2 - 第三章第三章 連連看游戲的分析與設(shè)計(jì)連連看游戲的分析與設(shè)計(jì) .- 3 - 一 游戲的設(shè)計(jì).- 3 - 1 功能設(shè)計(jì).- 3 - 2 游戲模塊設(shè)計(jì).- 3 - 3 算法模塊.- 4 - 4 界面顯示模塊.- 4 - 5 菜單控制模塊.- 4 - 6 地圖設(shè)計(jì).- 5 - 7 算法設(shè)計(jì).- 5 - 8 類的設(shè)計(jì)

19、.- 7 - 1)control.java 監(jiān)聽器類。.- 7 - .- 7 - 2)loadandsave.java 游戲數(shù)據(jù)部分。.- 7 - 3)model.java 驅(qū)動(dòng)類。.- 7 - 4)gamepanel.java 繪制類。.- 7 - 5)imageloader.java 圖片加載器。.- 9 - 6)mainframe.java 主窗體繪制。.- 9 - 9 算法設(shè)計(jì).- 9 - 二 主要問題.- 11 - 三 技術(shù)要求.- 11 - 四 設(shè)計(jì)要求.- 11 - 1 開發(fā)環(huán)境.- 11 - 2 理論基礎(chǔ).- 11 - 3 開發(fā)目標(biāo).- 11 - 第四章第四章 游戲運(yùn)行及測(cè)試分

20、析游戲運(yùn)行及測(cè)試分析 .- 12 - 一 程序運(yùn)行情況.- 12 - 二 測(cè)試計(jì)劃及分析.- 15 - 1 檢驗(yàn)的先后順序.- 15 - 2 程序異常處理.- 15 - 結(jié)論結(jié)論 .- 16 - 致謝致謝 .- 17 - 參考文獻(xiàn)參考文獻(xiàn) .- 17 - 第一章第一章 緒論緒論 一一 游戲游戲產(chǎn)業(yè)介紹產(chǎn)業(yè)介紹 游戲產(chǎn)業(yè)作為現(xiàn)代電腦電子技術(shù)的產(chǎn)物,正在以其獨(dú)特的魅力在全世界的娛樂領(lǐng)域占據(jù) 主流位置,我們?cè)诔姓J(rèn)廣大娛樂網(wǎng)民的選擇空間狹小的同時(shí),也必須明確的一點(diǎn)就是游戲本 身所具有的強(qiáng)大的吸引力。游戲的吸引力主要在于,它在讓玩家打發(fā)時(shí)間的同時(shí),可以讓人 在緊張工作之余帶來最大程度的放松,也可以增進(jìn)人

21、們之間的交流、溝通,通過游戲還可以 認(rèn)識(shí)更多的朋友,也可以到達(dá)跨省、跨市、甚至跨國間人們互相娛樂的目的,從而滿足了人 們休閑的需要。而且游戲產(chǎn)業(yè)促動(dòng)高科技技術(shù)不斷升級(jí),作為經(jīng)濟(jì)增長(zhǎng)的一大支撐點(diǎn),已經(jīng) 成為經(jīng)濟(jì)騰飛的“第四產(chǎn)業(yè)” 。 現(xiàn)在小游戲、網(wǎng)頁游戲越來越受網(wǎng)民歡迎,除了玩的方法簡(jiǎn)單外(不像其他游戲還需要 注冊(cè)下載繁瑣過程) ,很多游戲不乏經(jīng)典。由于手機(jī)互聯(lián)網(wǎng)的不斷發(fā)展,傳統(tǒng)網(wǎng)游已經(jīng)不能 跟上時(shí)代的潮流,而網(wǎng)頁游戲無需客戶端的特性,決定了將來會(huì)是 web 游戲主宰網(wǎng)游市場(chǎng)。 作為最基本的網(wǎng)頁游戲之一, “連連看”游戲的設(shè)計(jì)與實(shí)現(xiàn)可以積累開發(fā)網(wǎng)頁游戲的經(jīng)驗(yàn), 完善開發(fā)思路,為以后更高層次上的網(wǎng)

22、頁游戲開發(fā),打下堅(jiān)實(shí)的基礎(chǔ),更好的推動(dòng)網(wǎng)頁游戲 的發(fā)展。 二二 游戲的發(fā)展概況游戲的發(fā)展概況 游戲“連連看”顧名思義就是找出相關(guān)聯(lián)的東西,這個(gè)連連看在網(wǎng)上基本是用在小游戲 中,就是找出相同的兩樣?xùn)|西,在一定的規(guī)則之內(nèi)可以做為相關(guān)聯(lián)處理。 “連連看”的發(fā)展 經(jīng)歷了從桌面游戲、在線游戲、社交游戲三個(gè)過程。 游戲“連連看”是源自臺(tái)灣的桌面小游戲,自從流入大陸以來風(fēng)靡一時(shí),也吸引眾多程 序員開發(fā)出多種版本的“連連看” 。這其中,顧方編寫的“阿達(dá)連連看”以其精良的制作廣 受好評(píng),這也成為顧方“阿達(dá)系列軟件”的核心產(chǎn)品。并于 2004 年,取得了國家版權(quán)局的 計(jì)算機(jī)軟件著作權(quán)登記證書。 隨著 flash

23、應(yīng)用的流行,網(wǎng)上出現(xiàn)了多種在線 flash 版本“連連看” 。如“水晶連連看” 、 “果蔬連連看”等,流行的“水晶連連看”以華麗界面吸引了一大批的女性玩家。2008 年,隨著社交網(wǎng)絡(luò)的普及和開放平臺(tái)的興起, “連連看”被引入了社交網(wǎng)絡(luò)。 “連連看”與個(gè) 人空間相結(jié)合,被快速的傳播,成為一款熱門的社交游戲,其中以開發(fā)者其中以開發(fā)者 jonevey 在 manyou 開放平臺(tái)上推出的“寵物連連看”最為流行。 第二章第二章 連連看游戲描述連連看游戲描述 近年來,java 作為一種新的編程語言。以其簡(jiǎn)單性、可移植性和平臺(tái)無關(guān)性等優(yōu)點(diǎn),得 到廣泛的應(yīng)用,特別是 java 與萬維網(wǎng)的完美結(jié)合,使其成為網(wǎng)絡(luò)

24、編程和嵌入式編程領(lǐng)域的 首選編程語言。 一一 游戲規(guī)則描述游戲規(guī)則描述 1、概要:玩家可以將 2 個(gè)相同圖案的牌連接起來,連接不多于 3 根直線,就可以成功 的將兩個(gè)圖片消除。 2、操作:第一次使用鼠標(biāo)點(diǎn)擊游戲界面中的牌,該牌此時(shí)為“被選中”以特殊方式顯 示;再次以鼠標(biāo)點(diǎn)擊其他牌,若該牌與被選中的牌圖案相同,且把第一個(gè)牌到第二個(gè)牌連起 來,中間的直線不超過 3 根,則消掉這一對(duì)牌,否則第一個(gè)牌變?yōu)槲幢贿x中狀態(tài),而第二張 牌變成選中狀態(tài)。 3、勝利條件:將游戲界面上的牌全部消除掉。 4、失敗條件: 到規(guī)定的時(shí)間,界面上仍然有未消除的牌。 二二 游戲設(shè)計(jì)的目的游戲設(shè)計(jì)的目的 通過本次畢業(yè)設(shè)計(jì),讓我

25、們掌握如何制作一個(gè)游戲軟件,以及制作游戲軟件的整個(gè)流程, 制作游戲軟件的步驟,讓學(xué)生熟悉項(xiàng)目開發(fā)的完整過程,為即將到來的就業(yè)工作打下基礎(chǔ)。 另外也通過本次設(shè)計(jì)將三年來所學(xué)的專業(yè)知識(shí)和其他方面的知識(shí)融入到實(shí)際應(yīng)用中,在實(shí)際 運(yùn)用中學(xué)習(xí)和掌握 java 程序開發(fā)的全過程,進(jìn)一步熟悉掌握 java 程序設(shè)計(jì)語言的基礎(chǔ)內(nèi)容、 基本技能和方法,同時(shí)培養(yǎng)學(xué)生進(jìn)行分析問題、解決問題的能力;培養(yǎng)學(xué)生進(jìn)行設(shè)計(jì)分析、 設(shè)計(jì)方法、設(shè)計(jì)操作與測(cè)試、設(shè)計(jì)過程的觀察、理解和歸納能力的提高。 1、主要是能通過開發(fā)“連連看”這個(gè)小游戲,學(xué)會(huì) java 程序開發(fā)的環(huán)境搭建與配置, 并提高自己 java 程序設(shè)計(jì)編程的實(shí)際能力。

26、通過這次。 2、進(jìn)一步熟悉掌握 java 程序設(shè)計(jì)的基礎(chǔ)內(nèi)容,如用戶圖形界面設(shè)計(jì)(gui) 、java 多線 程編程等。 3、大體了解怎樣用 java 來編寫小游戲,增強(qiáng)我們實(shí)踐能力和創(chuàng)新精神的綜合培養(yǎng)。 三三 游戲可行性論證游戲可行性論證 “連連看”游戲是一個(gè)經(jīng)典的游戲,它因操作簡(jiǎn)單、娛樂性強(qiáng)而廣受歡迎。我們通過所 學(xué)的 java,利用 myeclipse 設(shè)計(jì)一個(gè)操作簡(jiǎn)單、界面美觀、功能齊全的“連連看游戲” 。通 過本游戲的開發(fā),達(dá)到學(xué)習(xí) java 技術(shù)和熟悉軟件開發(fā)流程的目的。 這個(gè)游戲是用圖形界面實(shí)現(xiàn)的,通過編譯解釋后,出現(xiàn)一個(gè)圖形界面。界面上方有一行 菜單欄,點(diǎn)擊菜單欄上的按鈕,出現(xiàn)

27、下拉菜單,選擇開始,進(jìn)入游戲界面,游戲界面是由若 干個(gè)小方格組成的,每個(gè)小方格有一個(gè)圖標(biāo),點(diǎn)擊其中相同的圖標(biāo),若它們符合算法要求就 會(huì)消失,且游戲期間有一定的時(shí)間限制。游戲還設(shè)有炸彈、退出、幫助的功能,方便游戲操 作。 第三章第三章 連連看游戲的分析與設(shè)計(jì)連連看游戲的分析與設(shè)計(jì) 一一 游戲的設(shè)計(jì)游戲的設(shè)計(jì) 1 1 功能設(shè)計(jì)功能設(shè)計(jì) (1)、用戶可以通過點(diǎn)擊菜單中的“開始游戲”選項(xiàng),開始新游戲程序。程序會(huì)載入圖 片,并通過特定的算法排列圖片,并標(biāo)記圖片,以便判斷圖片是否相同。記錄圖片坐標(biāo),以 方便計(jì)算圖片是否可以相連。確定圖片大小,以確定用戶點(diǎn)擊的是那張圖片。 (2)、用戶選擇兩張一樣的圖片,通

28、過鼠標(biāo)進(jìn)行選取,如果用戶兩次點(diǎn)擊的圖片不相同, 那么系統(tǒng)認(rèn)為用戶沒有點(diǎn)(鼠標(biāo)記數(shù)歸 0) ,以完成用戶以后的選取工作。如果用戶選擇的 是相同的圖片,那么系統(tǒng)會(huì)消除這兩張圖片,并使鼠標(biāo)記數(shù)為 0,并消除這兩張圖片的標(biāo)記, 使里面的圖片被標(biāo)記在外面。以便用戶可以進(jìn)行以后的選擇。 (3)、用戶也可使通過使用“刷新”功能進(jìn)行圖片重新排版。 (4)、用戶點(diǎn)擊提示系統(tǒng)將通過連線,提示用戶下一步可消除的圖片 (5)、用戶點(diǎn)擊演示,系統(tǒng)自動(dòng)完成游戲 2 2 游戲模塊游戲模塊設(shè)計(jì)設(shè)計(jì) 根據(jù)對(duì)“連連看”游戲的分析,該游戲可分為三個(gè)模塊:算法模塊、界面顯示模塊、菜 單控制模塊。如下圖 3-1 所示: 連連看游戲 算

29、法模塊菜單(控制)模塊界面顯示模塊 圖 3-1 游戲流程模塊圖 3 3 算法模塊算法模塊 (1).圖片路徑處理設(shè)計(jì) (2).圖片的產(chǎn)生設(shè)計(jì) 4 4 界面顯示模塊界面顯示模塊 (1).游戲界面設(shè)計(jì) (2).游戲過關(guān)、失敗的設(shè)計(jì) 5 5 菜單控制模塊菜單控制模塊 (1). 開始游戲 (2). 重新開始 (3). 刷新 (4). 提示 (5)演示 (6)游戲難度選擇 如下圖 3-5 所示 難度選擇 游戲 關(guān)于 開始 開 始 演 示 判斷 是否 滿足 要求 否 是 消除圖片 刷新 提示 全部消除 游戲結(jié)束 6 6 地圖設(shè)計(jì)地圖設(shè)計(jì) 地圖的設(shè)計(jì)是采用 gui 編程的網(wǎng)格布局,定義一個(gè)八行八列的網(wǎng)格布局,

30、使用 16 個(gè) 數(shù)字然后隨機(jī)產(chǎn)生四個(gè)數(shù)字,用二維數(shù)組把它們打亂放到八行八列的網(wǎng)格布局中,注意的 是二維數(shù)組的下標(biāo)要和網(wǎng)格布局是的行、列數(shù)相同。 7 7 算法設(shè)計(jì)算法設(shè)計(jì) 在檢驗(yàn)兩個(gè)方塊能否消掉的時(shí)候,我們要讓兩個(gè)方塊同時(shí)滿足兩個(gè)條件才行,就是兩者 配對(duì)并且連線成功。如圖 4-3 所示 分 3 種情況:從下面的這三種情況,我們可以知道,需要三個(gè)檢測(cè),這三個(gè)檢測(cè)分別 檢測(cè)一條直路經(jīng)。這樣就會(huì)有三條路經(jīng)。若這三條路經(jīng)上都是空按鈕,那么就剛好是三種直 線(兩個(gè)轉(zhuǎn)彎點(diǎn))把兩個(gè)按鈕連接起來了。 (1)、相鄰 (2)、若不相鄰的先在第一個(gè)按鈕的同行找一個(gè)空按鈕。1.找到后看第二個(gè)按鈕橫向到 這個(gè)空按鈕所在的

31、列是否有按鈕。2.沒有的話再看第一個(gè)按鈕到與它同行的那個(gè)空按鈕之間 是否有按鈕。3.沒有的話,再從與第一個(gè)按鈕同行的那個(gè)空按鈕豎向到與第二個(gè)按鈕的同行 看是否有按鈕。沒有的話路經(jīng)就通了可以消了. (3)、若(2)失敗后,再在第一個(gè)按鈕的同列找一個(gè)空按鈕。1.找到后看第二個(gè)按鈕豎向 到這個(gè)空按鈕所在的行是否有按鈕 2.沒有的話,再看第一個(gè)按鈕到與它同列的那個(gè)空按鈕 之間是否有按鈕。3.沒有的話,再從與第一個(gè)按鈕同列的那個(gè)空按鈕橫向到與第二個(gè)按鈕同 列看是否有按鈕。沒有的話路經(jīng)就通了,可以消了。 若以上三步都失敗,說明這兩個(gè)按鈕不可以消去。 具體判斷流程見下圖 是是否否為為同同一一圖圖片片 是是否

32、否在在同同一一位位置置 是是否否在在一一條條橫橫線線 是是否否在在一一條條豎豎線線 返返回回ture 是是否否相相鄰鄰 是是否否直直線線相相連連 返返回回ture 是是否否直直線線相相連連 是是否否相相鄰鄰 返返回回ture 返返回回ture 是是 否否 否否 返返回回false 否否 是是 是是 否否 是是 是是 是是 是是 否否 是是 當(dāng)當(dāng)兩兩圖圖不不在在一一條條直直線線上上 , 則則以以兩兩圖圖在在x,y方方向向的的延延 長(zhǎng)長(zhǎng)線線上上去去找找兩兩個(gè)個(gè)點(diǎn)點(diǎn) ,使使p1 到到i,i到到j(luò),,j到到p2都都能能直直線線 相相連連 否否 返返回回false 返返回回ture 是是 否否 否否 否

33、否 (4)、圖片成對(duì)加載并打亂 將圖片成對(duì)的顯示在場(chǎng)景中,并打亂主要用的是 map 類。在該類中,用了一個(gè)數(shù)組以數(shù) 字標(biāo)記的形式來記錄加載的圖片是哪種圖片,在每次加載圖片的時(shí)候是一張圖片連續(xù)加載兩 次,以保證加載圖片成對(duì)。然后用數(shù)組的隨機(jī)方法將數(shù)組打亂。 (5)、判斷兩圖是否能夠相連 兩圖能相連的所有情況: (1)(2)(3) (4) (5) (6) 8 類的設(shè)計(jì)類的設(shè)計(jì) 在設(shè)計(jì)連連看小游戲是,要編寫 6 個(gè) java 源文件 :control.java , loadandsave.java , model.java , gamepanel.java , imageloader.java ,

34、mainframe.java 1)control.java 監(jiān)聽器類。 主要用于接收用戶操作時(shí)發(fā)出的指令以及中轉(zhuǎn)發(fā)送。 2)loadandsave.java 游戲數(shù)據(jù)部分。 主要用于存儲(chǔ)用戶得分情況,以及載入時(shí)加載圖片的算法 3)model.java 驅(qū)動(dòng)類。 用于處理接收到的用戶動(dòng)作指令,以及初始化時(shí)用到的一切算法。如:設(shè)置游 戲難度,圖片可消除判斷等。 4)gamepanel.java 繪制類。 用于游戲是繪制選中時(shí)的邊框,和連接兩個(gè)相同圖片的連線。 public void showpath(final object obj) new thread(new runnable() array

35、list points = (arraylist) obj; arraylist shapes = new arraylist(); int step = 30; public void run() / 添加起點(diǎn)矩形 shapes.add(matrixtorect(points.get(0); / 添加終點(diǎn)矩形 shapes.add(matrixtorect(points.get(points.size() - 1); / 添加直線 for (int i = 1; i points.size(); i+) point p1 = getcenter(matrixtorect(points.get

36、(i - 1); point p2 = getcenter(matrixtorect(points.get(i); if (p1.x = p2.x) int distance = p2.y - p1.y; for (int j = 0; j = math.abs(distance); j += step) shapes.add(new line2d.double(p1, new point(p1.x, p1.y + distance / math.abs(distance) * j); else if (p1.y = p2.y) int distance = p2.x - p1.x; for

37、(int j = 0; j = math.abs(distance); j += step) shapes .add(new line2d.double(p1, new point( p1.x + distance / math.abs(distance) * j, p1.y); shapes.add(new line2d.double(p1, p2); graphics2d g2 = (graphics2d) getgraphics(); float dash = 4f ; g2.setstroke(new basicstroke(2.0f, basicstroke.cap_butt, ba

38、sicstroke.join_miter, 11.0f, dash, 1.0f); for (int index = 0; index shapes.size(); index+) try thread.sleep(10); catch (interruptedexception e) e.printstacktrace(); for (int pre = 0; pre = index; pre+) if (pre 2) g2.setcolor(color.blue); else g2.setcolor(color.red); g2.draw(shapes.get(pre); ).start(

39、); 效果如圖: 5)imageloader.java 圖片加載器。 用于加載庫中的圖片。 6)mainframe.java 主窗體繪制。 所有游戲中可見窗體的繪制。 7) 項(xiàng)目層次結(jié)構(gòu)圖: 9 9 算法設(shè)計(jì)算法設(shè)計(jì) 1)圖片消除算法 for (int i = 0; i map.length; i+) for (int j = 0; j map0.length; j+) rectangle rect = matrixtorect(i, j); if (mapij = 0) continue; g.drawimage(imageloader.getimageof(mapij), rect.x,

40、rect.y, null); 2)圖片加載算法 public class imageloader private static bufferedimage cursorimage; private static bufferedimage icon; private static final bufferedimage images=new bufferedimagemodel.card_numbers+1; public static bufferedimage getcursorimage() if(cursorimage=null)/獲得圖片的編號(hào) try urlclassloader

41、urlloader=(urlclassloader) imageloader.class.getclassloader(); url url=urlloader.findresource(images/cursor.gif); cursorimage=imageio.read(url); catch (exception e) e.printstacktrace(); return cursorimage; public static bufferedimage geticonimage() if(icon=null)/加載圖標(biāo) try urlclassloader urlloader=(ur

42、lclassloader) imageloader.class.getclassloader(); url url=urlloader.findresource(images/qq.png); icon=imageio.read(url); catch (exception e) e.printstacktrace(); return icon; public static bufferedimage getimageof(int index) if(imagesindex=null)/在已編號(hào)處加載圖片 try urlclassloader urlloader=(urlclassloader

43、) imageloader.class.getclassloader(); url url=urlloader.findresource(images/+index+.gif); imagesindex=imageio.read(url); catch (ioexception e) e.printstacktrace(); return imagesindex; 二二 主要問題主要問題 開始制作游戲時(shí),主要解決的問題有以下幾個(gè)方面: (1)、如何設(shè)置整個(gè)游戲的界面。 (2)、如何控制連連看游戲中隨機(jī)圖片的生成切每種圖片必須為偶數(shù)個(gè);游戲開始后, 判斷鼠標(biāo)兩次點(diǎn)擊的圖片能否消去,即圖片是否相同

44、且圖片之間路徑的判斷。 (3)、如何判斷游戲是否結(jié)束以及輸贏的問題。 三三 技術(shù)要求技術(shù)要求 本游戲軟件可以在大多數(shù)計(jì)算機(jī)上運(yùn)行,游戲中能正確判斷鼠標(biāo)兩次點(diǎn)擊的圖片是否 可以消去、能正確判斷游戲是否已經(jīng)結(jié)束。 四四 設(shè)計(jì)要求設(shè)計(jì)要求 1 1 開發(fā)環(huán)境開發(fā)環(huán)境 在 windows xp 系統(tǒng)下,java 程序設(shè)計(jì)語言及相應(yīng)的集成開發(fā)環(huán)境,利用 myeclipse 實(shí)現(xiàn)。 開發(fā)平臺(tái) jdk1.6。 2 2 理論基礎(chǔ)理論基礎(chǔ) (1)、熟悉java語言基礎(chǔ) (2)、gui編程 1. gui 是 graphical user interface 的縮寫,圖形化用戶界面 2. 布局管理 flowlayou

45、t(流式布局管理器) 從左到右的順序排列。 borderlayout(邊界布局管理器) 東,南,西,北,中 gridlayout(網(wǎng)格布局 管理器)事件處理機(jī)制 事件:用戶對(duì)組件的一個(gè)操作。 事件源:發(fā)生事件的組 件。 監(jiān)聽器:我們需要處理某個(gè)事件,就需要在發(fā)生事件的組件上添加監(jiān)聽器; 事件處理器:監(jiān)聽器中的方法。監(jiān)聽器被添加在組件上之后,組件上發(fā)生了對(duì)應(yīng) 事 件就會(huì)執(zhí)行指定方法。動(dòng)作事件,actionevent,在某一組件上發(fā)生了定義好 的動(dòng)作,例如按鈕上鼠標(biāo)點(diǎn)擊 或按空格,菜單上鼠標(biāo)點(diǎn)擊或按回車等。 3. myeclipse 的操作。 3 3 開發(fā)目標(biāo)開發(fā)目標(biāo) 系統(tǒng)能夠提供友好的用戶界面,

46、使操作人員的心情放松; 系統(tǒng)具有良好的運(yùn)行效率,能夠得到快速發(fā)現(xiàn)自我的目的; 系統(tǒng)應(yīng)有良好的可擴(kuò)充性,可以容易的轉(zhuǎn)入其它系統(tǒng)應(yīng)用; 平臺(tái)的設(shè)計(jì)具有一定的靈活性。 第四章第四章 游戲運(yùn)行及測(cè)試分析游戲運(yùn)行及測(cè)試分析 一一 程序運(yùn)行情況程序運(yùn)行情況 點(diǎn)擊菜單中的開始游戲后的界面,連連看游戲規(guī)則很簡(jiǎn)單,就是點(diǎn)中兩個(gè)互相匹配并且 可以通過不多于兩個(gè)折點(diǎn)的折線連相同的圖片,然后消去。下圖是開始游戲后的界面效果 選擇游戲難度(圖) 點(diǎn)擊開始,開始當(dāng)前難度游戲,如果不選擇難度,則難度 1 到 9 隨機(jī) 點(diǎn)擊刷新則所有圖片隨機(jī)改變位置其總數(shù)不變。 提示,可以根據(jù)算法隨機(jī)提示一組可以消去的圖片。 點(diǎn)擊演示,電腦

47、將自動(dòng)完成消除,每一步都有邊框以及連線顯示,直到所有方塊消除完畢 圖片由用戶消除完畢,則如下圖顯示 由于用戶每次只能消除一對(duì)圖形,即只會(huì)用到一個(gè)最短路徑,但由于實(shí)現(xiàn)并不知道用戶 會(huì)選擇哪一對(duì)圖形,所以需要事先計(jì)算出所有可能的最短路徑并保存起來。此外,采用這種 方法的話似乎每次用戶消去一對(duì)相同圖像之后都需要重新計(jì)算出當(dāng)前所有可能被連接的相同 圖形之間最短路徑,這是因?yàn)楫?dāng)某些圖像被消去之后可能會(huì)產(chǎn)生很多新路徑,而我們又不能 確定這些空出來的格子到底能夠影響哪些路徑,所以就只好都重新計(jì)算一遍。 二二 測(cè)試計(jì)劃及分析測(cè)試計(jì)劃及分析 1 1 檢驗(yàn)的先后順序檢驗(yàn)的先后順序 在檢驗(yàn)兩個(gè)方塊能否消掉的時(shí)候,我

48、們要讓兩個(gè)方塊同時(shí)滿足兩個(gè)條件才行,就是兩者 配對(duì)并且連線成功。所以,這里應(yīng)該先檢驗(yàn)配對(duì),如果該條件不成立的話,就不要再進(jìn)行連 線檢查了,這樣可以避免很多不必要的復(fù)雜運(yùn)算。當(dāng)然,如果你在做這個(gè)游戲的時(shí)候,配對(duì) 規(guī)則不夠如此簡(jiǎn)單的話,那么就看哪個(gè)算起來麻煩就把它放在后面。 2 2 程序異常處理程序異常處理 本程序沒有涉及到程序的異常處理,只有關(guān)于“死鎖”問題,本質(zhì)上還是判別兩個(gè)格子 是否可以消去的問題。最直接的方法就是,對(duì)于游戲中尚未消去的格子,兩兩都計(jì)算一下, 它們是否可以消去。此外,從上面的廣度優(yōu)先搜索可以看出,我們每次都是擴(kuò)展出起始格子 a(x1,y1)能夠到達(dá)的格子。也就是說,對(duì)于每一個(gè)格子,我們可以調(diào)用一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論