五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng) 畢業(yè)設(shè)計(jì)論文_第1頁
五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng) 畢業(yè)設(shè)計(jì)論文_第2頁
五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng) 畢業(yè)設(shè)計(jì)論文_第3頁
五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng) 畢業(yè)設(shè)計(jì)論文_第4頁
五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng) 畢業(yè)設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、xx 大學(xué) xx 學(xué)院 本科生畢業(yè)設(shè)計(jì)(論文)本科生畢業(yè)設(shè)計(jì)(論文) 題 目: 用 java 實(shí)現(xiàn)五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng) 姓 名: xxxx 學(xué) 號(hào): xxxxx 系 別: 計(jì)算機(jī)工程系 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 年 級(jí): xxx 級(jí) 指導(dǎo)教師: xxxx 2013 年 6 月 23 日 獨(dú)創(chuàng)性聲明獨(dú)創(chuàng)性聲明 本畢業(yè)設(shè)計(jì)(論文)是我個(gè)人在導(dǎo)師指導(dǎo)下完成的。文中引用他人研究 成果的部分已在標(biāo)注中說明;其他同志對(duì)本設(shè)計(jì)(論文)的啟發(fā)和貢獻(xiàn)均已 在謝辭中體現(xiàn);其它內(nèi)容及成果為本人獨(dú)立完成。特此聲明。 論文作者簽名: 日期: 關(guān)于論文使用授權(quán)的說明關(guān)于論文使用授權(quán)的說明 本人完全了解福州大學(xué)至誠學(xué)院有關(guān)

2、保留、使用學(xué)位論文的規(guī)定,即: 學(xué)院有權(quán)保留送交論文的印刷本、復(fù)印件和電子版本,允許論文被查閱和借 閱;學(xué)院可以公布論文的全部或部分內(nèi)容,可以采用影印、縮印、數(shù)字化或 其他復(fù)制手段保存論文。保密的論文在解密后應(yīng)遵守此規(guī)定。 論文作者簽名: 指導(dǎo)教師簽名: 日期: 用 java 實(shí)現(xiàn)五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng) 摘要 現(xiàn)代科學(xué)技術(shù)正在迅猛的發(fā)展著,計(jì)算機(jī)信息技術(shù)在其中發(fā)揮著巨大的作用。在此 背景下,java 已經(jīng)從一種與平臺(tái)無關(guān)的編程語言演變成一種跨平臺(tái)的服務(wù)器端技術(shù),同 時(shí) java 也成了最常用的語言之一。對(duì)比 c+語言,java 語言更加簡(jiǎn)單,java 語言更加容 易理解,也沒那么容易出錯(cuò),它的語法

3、結(jié)構(gòu)讓人看起來更加簡(jiǎn)潔清楚。此外 java 語言相 對(duì)比較晚出現(xiàn),它在面向?qū)ο蠛投嗑€程特性上相對(duì)其他計(jì)算機(jī)語言有了很大的進(jìn)步,而 且在 java 語言中比較容易實(shí)現(xiàn)算法,可以大大縮短了我們編寫程序的時(shí)間,同時(shí)寫出來 的 java 代碼也比較容易得到復(fù)用和移植?;谝陨蟽?yōu)點(diǎn),本文采用 java 語言實(shí)現(xiàn)一款 五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng)。此次游戲設(shè)計(jì)采用 eclips 作為開發(fā)環(huán)境,運(yùn)用了最傳統(tǒng)的游戲規(guī) 則,即出現(xiàn)連續(xù)五顆相同顏色的棋子則獲得勝利。并且只需用鼠標(biāo)點(diǎn)擊就可以實(shí)現(xiàn)這個(gè) 游戲所有操作:開始游戲、落子、投降、求和。這種設(shè)置老少皆宜,讓所有的人都可以 無障礙的玩這游戲,并配合簡(jiǎn)潔的游戲界面,讓玩家體

4、驗(yàn)到五子棋的趣味性。 關(guān)鍵詞:java,五子棋,對(duì)戰(zhàn)系統(tǒng) backgammon online play system with java abstract with the development of modern technology of science, the computer information technology plays an important role in it. under this situation, java has changed from a shapeless programming language to cross-platform sever-

5、side technology. at the same time, java has become the one of most commonly used language. contrasting to c + +, java language is more simple, more easily understood and not so easy to make mistakes. its grammatical structure is seen to be more concise and clear. in addition, java language relativel

6、y late to appear on the characteristics of object-oriented and multi-threaded, it has been great progress relative to other computer languages, and the java language relatively easy to implement the algorithm can greatly shorten the time of our program, while write out java code reuse is relatively

7、easy to get and transplantation. therefore, because of the advantages of java language, so i chose to use java language to compile the game. the game design eclipse as the development environment, the use of the traditional rules of the game, the consecutive win five of the same color pieces. and on

8、ly a mouse click you can achieve this game all operations: start the game, lazi, surrender, summation. this setting all ages, so that all people can play this game accessible,and with a simple background picture, allowing the player to experience the gobang fun. key words: java,gobang,battle system

9、目 錄 第 1 章 緒論 .1 1.1 研究背景 .1 1.2 研究意義 .1 1.3 課題的內(nèi)容 .1 1.4 論文組織結(jié)構(gòu) .2 第 2 章 相關(guān)技術(shù)介紹 .3 2.1 開發(fā)工具 .3 2.2 開發(fā)語言 .3 2.3 游戲引擎 .4 第 3 章 系統(tǒng)框架 .6 3.1 游戲的基本流程 .6 3.2 游戲中主要的類及類的功能 .7 3.3 游戲說明 .7 3.3.1 行棋順序.7 3.3.2 判斷勝負(fù).7 3.3.3 游戲操作說明 .8 3.4 游戲資源與架構(gòu) .8 第 4 章 關(guān)鍵技術(shù)及主要功能的具體實(shí)現(xiàn) .9 4.1 概要設(shè)計(jì)說明 .9 4.2 界面實(shí)現(xiàn).9 4.2.1 服務(wù)器界面.9

10、4.2.2 登錄界面.9 4.2.3 大廳界面.10 4.2.4 游戲界面.11 4.2.5 游戲結(jié)果界面.11 4.2.6 游戲界面的實(shí)現(xiàn) .12 4.3 功能模塊 .13 4.3.1 服務(wù)端實(shí)現(xiàn).13 4.3.2 客戶端實(shí)現(xiàn).13 4.3.3 五子棋游戲功能的實(shí)現(xiàn) .14 第 5 章 軟件測(cè)試 .17 5.1 軟件測(cè)試方案 .17 5.2 軟件功能測(cè)試 .17 結(jié)論 .19 參考文獻(xiàn) .20 謝辭 .21 第 1 章 緒論 1.1 研究背景 在當(dāng)代,計(jì)算機(jī)的技術(shù)不斷的發(fā)展,網(wǎng)絡(luò)這一技術(shù)普及范圍也越來越廣,網(wǎng)絡(luò)已經(jīng) 應(yīng)用到了世界的各個(gè)角落,它為人們提供各種各樣的服務(wù),讓人們的生活更加的豐富多

11、 彩,甚至不知不覺中已經(jīng)成為人們生產(chǎn)中不可少的部分,與此同時(shí),在網(wǎng)絡(luò)普及的過程 中,游戲也在逐漸得到人們的認(rèn)同。如今網(wǎng)絡(luò)休閑游戲憑借著其健康、方便、益智等優(yōu) 點(diǎn)迅猛的發(fā)展著,也因此各大游戲?qū)?zhàn)平臺(tái)層出不窮,比如大家耳熟能詳?shù)?qq 對(duì)戰(zhàn)平臺(tái)。 這些游戲已經(jīng)成為了大部分現(xiàn)代人休閑娛樂的重要部分。 1.2 研究意義 java 是一門經(jīng)過充分發(fā)展,比較成熟的語言,java 語言在企業(yè)級(jí)應(yīng)用稱霸這些年念 頭,已經(jīng)充分證明了它非常適合于開發(fā)大型軟件。當(dāng) java 的運(yùn)行效率不再是問題的時(shí)候, java 語言嚴(yán)謹(jǐn)、高抽象、可讀性強(qiáng)的優(yōu)勢(shì)就體現(xiàn)出來了。這對(duì)于規(guī)模越來越龐大的游戲 軟件來說,有著不小的誘惑1。

12、它擁有一套屬于自己的龐大并且較為完善的類庫,內(nèi)置 了其他語言需要靠庫甚至是操作系統(tǒng)才能支持的功能,總而言之, java 語言的出現(xiàn)帶給了 整個(gè)業(yè)界巨大的沖擊,為整個(gè) it 業(yè)帶來深遠(yuǎn)的影響。java 產(chǎn)生與流行是 internet 發(fā)展的 客觀要求;java 可以制作大部分網(wǎng)絡(luò)應(yīng)用程序系統(tǒng),而且與如今流行的 www 瀏覽器結(jié)合很 好;它是一種區(qū)別于傳統(tǒng)系統(tǒng),遵守網(wǎng)絡(luò)就是計(jì)算機(jī)信條的平臺(tái)技術(shù)2。 計(jì)算機(jī)的普及,以及網(wǎng)絡(luò)的發(fā)展使得網(wǎng)絡(luò)游戲的需求日益增長,同時(shí)作為傳統(tǒng)游戲 的五子棋,因?yàn)樗旧硭哂泻?jiǎn)單方便等特點(diǎn),使得它在世界各地都有大量的玩家。 基 于 c/s 模式使用 java 語言開發(fā)的五子棋

13、網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng),將五子棋游戲移植到到網(wǎng)絡(luò)對(duì)戰(zhàn) 平臺(tái)當(dāng)中無疑非常適應(yīng)現(xiàn)代的潮流,與我們的娛樂理念相吻合,而且我相信開發(fā)游戲?qū)?戰(zhàn)系統(tǒng)具有很強(qiáng)的可操作性,也有很大的空間。 1.3 課題的內(nèi)容 本課題設(shè)計(jì)實(shí)現(xiàn)了五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng)。通過簡(jiǎn)單的登錄,玩家可以進(jìn)行五子棋對(duì) 戰(zhàn)。在游戲中,本著先排隊(duì)先開始的原則,讓最先進(jìn)入游戲的玩家最先找到游戲?qū)κ郑?以此減少玩家的等待時(shí)間。在游戲中,玩家如果想退出,則可以通過點(diǎn)擊投降或者求和 的按鈕來結(jié)束游戲,其中求和需要對(duì)方玩家的同意。如果玩家分出了勝負(fù),系統(tǒng)會(huì)提示 勝負(fù)信息,點(diǎn)擊確定按鈕,則退出游戲,狀態(tài)由“游戲中”變成“空閑中” 。 1.4 論文組織結(jié)構(gòu) 本文描述的是

14、用 java 開發(fā)的五子棋對(duì)戰(zhàn)系統(tǒng),共分為 5 章: 第 1 章:先是介紹了用 java 開發(fā)五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng)的研究背景,研究利用 java 語 言開發(fā)游戲的意義,然后對(duì)玩游戲的流程的內(nèi)容進(jìn)行基本的介紹,最后介紹了本文各個(gè) 章節(jié)的組織結(jié)構(gòu)。 第 2 章:先介紹了本系統(tǒng)所用到的開發(fā)工具eclipse,然后分析了開發(fā)語言 java 的特 點(diǎn),最后簡(jiǎn)要的介紹了這次系統(tǒng)所用到的游戲引擎 gameengine。 第 3 章:先介紹了游戲的基本流程,然后用列表的形式來介紹游戲中所用到的類及 類的功能,接著對(duì)游戲進(jìn)行說明,最近簡(jiǎn)述了游戲的資源和構(gòu)架。 第 4 章:先簡(jiǎn)述了游戲概要設(shè)計(jì)說明,然后對(duì)游戲的各個(gè)

15、界面進(jìn)行介紹,最后對(duì)游 戲的功能模塊實(shí)現(xiàn)進(jìn)行介紹并解釋關(guān)鍵代碼。 第 5 章:先簡(jiǎn)要說明了軟件測(cè)試的方案,然后利用表格的形式對(duì)軟件進(jìn)行測(cè)試并說 明結(jié)果 在論文的末尾,我對(duì)該五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng)的設(shè)計(jì)過程所遇到的一些問題進(jìn)行了總 結(jié)。 第 2 章 相關(guān)技術(shù)介紹 2.1 開發(fā)工具 本課題采用的開發(fā)工具是 eclipse。eclipse 是一個(gè)開放源代碼的、基于 java 的可 擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開 發(fā)環(huán)境。幸運(yùn)的是,eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 java 開發(fā)工具(java development kit,jdk)3。 在本次五

16、子棋對(duì)戰(zhàn)系統(tǒng)中,設(shè)計(jì)對(duì)話框時(shí)我用到了 java 其中的一種叫 swing 的插件, swing 是一個(gè)用于開發(fā) java 應(yīng)用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包 (awt)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格4。當(dāng)我們?cè)谑褂?swing 開發(fā)時(shí),只要通過 swing 的功能就可以大大減少我們的代碼量,達(dá)到事半功倍的效 果,同時(shí)還可以豐富我們所創(chuàng)建的用戶界面。其中使用 swing 創(chuàng)建圖形界面時(shí)需要這些 步驟:首先導(dǎo)入 swing 包,然后選擇界面風(fēng)格,也可以插入我們所需要的圖形,在對(duì)話 框中添加所需要的按鈕和標(biāo)簽等,然后再將組件放置到容器上,最后設(shè)置好按鍵的功能, 這樣

17、基本就完成了 swing 的使用。 2.2 開發(fā)語言 自 1995 年 sun microstems 公司推出 java 以來,人們不斷挖掘 java 編程系統(tǒng)的潛 力,直到現(xiàn)在已經(jīng)得到了全世界的認(rèn)可5. java 編程語言是一種通用的,并發(fā)的,階級(jí) 基礎(chǔ),面向?qū)ο蟮恼Z言6。它與一般的編譯語言和直譯語言有著很大的區(qū)別。它首先將 源代碼編譯成字節(jié)碼,然后利用各個(gè)不同平臺(tái)上的虛擬機(jī)來解釋那些執(zhí)行字節(jié)碼,從而 實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺(tái)特性。java 技術(shù)的應(yīng)用非常廣泛,小到個(gè)人 pc、移動(dòng)電話,大到互聯(lián)網(wǎng)、科學(xué)超級(jí)計(jì)算機(jī)等等。從整體上來說,java 編程語言的風(fēng) 格與 c+語言有一些相似

18、之處。它繼承了 c+語言面向?qū)ο蠹夹g(shù)的核心,java 舍棄了 c+ 語言中容易引起錯(cuò)誤的指針,改以引用取代,同時(shí)移除原 c+與原來運(yùn)算符重載,也移除 多重繼承特性,改用接口取代,增加垃圾回收器功能。具體來說,它具有如下特性: (1)java 這門語言簡(jiǎn)單好學(xué),也非常的好用。java 語言是在 c 與 c+計(jì)算機(jī)語言的 基礎(chǔ)上進(jìn)行簡(jiǎn)化和改進(jìn)的一種新型計(jì)算機(jī)語言,它去除掉了 c 和 c+中最難理解的多重繼 承技術(shù)和最難正確應(yīng)用的指針等內(nèi)容7。用過 c+的開發(fā)游戲的程序員都知道,內(nèi)存管理 是最容易出錯(cuò)誤的地方,申請(qǐng)的內(nèi)存用完以后必須釋放,要不然慢慢的可使用的內(nèi)存資 源會(huì)越變?cè)缴伲钡胶谋M系統(tǒng)資源后會(huì)

19、導(dǎo)致死機(jī)。但 java 能通過垃圾自動(dòng)回收機(jī)制簡(jiǎn)化 了程序內(nèi)存管理,統(tǒng)一了在不同操作系統(tǒng)平臺(tái)上不同的數(shù)據(jù)類型所占用的內(nèi)存大小的標(biāo) 準(zhǔn),毫無疑問這對(duì)于編程來說有著相當(dāng)大的用處的。 (2)基于對(duì)象的編程很符合程序員的思維模式習(xí)慣,讓我們?cè)诰帉懗绦驎r(shí)顯得更加得 心應(yīng)手。java 語言與其它面向?qū)ο笳Z言一樣,引入了類的概念,類是用來創(chuàng)建對(duì)象的模 板,它包含被創(chuàng)建的對(duì)象的狀態(tài)描述和方法的定義8。 (3)每當(dāng)比較 java 與其他語言的時(shí)候,跨平臺(tái)總是被人們提及到,因?yàn)檫@是 java 一 個(gè)非常重要的特點(diǎn)。由于它采用先編譯成中間碼,然后裝載與校驗(yàn),再解釋成不同的機(jī) 器碼來執(zhí)行, “屏蔽”了具體的“平臺(tái)環(huán)境

20、”特性要求,正因?yàn)檫@樣,只要能支持 java 虛擬機(jī),那么就可運(yùn)行各種 java 程序9。java 系統(tǒng)可以運(yùn)行在不同的操作系統(tǒng)和硬件上。 由于 java 的跨平臺(tái),java api 自然也是平臺(tái)統(tǒng)一的。我們只要拿 java api 與 c+的類 庫相比便可以知道它的可貴之處。因?yàn)閷?duì)于程序員而言,統(tǒng)一的 api 函數(shù)能夠讓他們減 輕負(fù)擔(dān),就可以省略掉其中一些不必要的麻煩。 (4) java 相對(duì)來說比較安全,經(jīng)常使用網(wǎng)絡(luò)的人通常都有一個(gè)擔(dān)心,生怕網(wǎng)絡(luò)上的 各種有毒網(wǎng)站以及各種盜取私人文件的釣魚網(wǎng),甚至是下載到含有惡意代碼的文件,他 們會(huì)破壞我們的計(jì)算機(jī)系統(tǒng)。但是當(dāng)我們使用支持 java 的瀏覽

21、器時(shí),我們就可以放心地 運(yùn)行 java 的小應(yīng)用程序 java applet ,不必?fù)?dān)心異常狀況,因?yàn)槲覀兛梢源_保在網(wǎng)絡(luò)上 運(yùn)行的 java 程序都是符合網(wǎng)絡(luò)安全協(xié)議的。java 小應(yīng)用程序?qū)⑾拗圃?java 運(yùn)行環(huán)境中, 它不會(huì)訪問或修改不允許訪問的內(nèi)存或文件。 (5) 類是 java 程序的基本組成單元,其中一部分類是我們自己編寫的,一部分是 引用類庫中的,而類是運(yùn)行時(shí)動(dòng)態(tài)才進(jìn)行裝載的,這就使得 java 可以在分布環(huán)境中動(dòng)態(tài) 地維護(hù)程序及類庫。 (6)在操作系統(tǒng)中,進(jìn)程和線程是兩個(gè)非常重要的基本概念。在執(zhí)行過程中,進(jìn)程 有自己獨(dú)立的內(nèi)存空間和系統(tǒng)資源,并且各個(gè)進(jìn)程的內(nèi)存數(shù)據(jù)和狀態(tài)彼此之間

22、并無相關(guān), 類似于管道的方法,通過特定的通信機(jī)制來完成交換數(shù)據(jù)。線程是在進(jìn)程中產(chǎn)生的一種 輕負(fù)荷進(jìn)程,線程在執(zhí)行過程中共享一塊內(nèi)存空間和一組系統(tǒng)資源,因此線程之間可以 直接進(jìn)行數(shù)據(jù)交換10。 2.3 游戲引擎 游戲引擎是指一些已編寫好的可編輯電腦游戲系統(tǒng)或者一些交互式實(shí)時(shí)圖像應(yīng)用程 序的核心組件,這些系統(tǒng)為游戲設(shè)計(jì)者提供各種編寫游戲所需的各種工具,其目的在于 讓游戲設(shè)計(jì)者能容易和快速地做出游戲程式而不用由零開始,大部分都支持多種操作平 臺(tái),如 linux、mac os x、微軟 windows。游戲引擎主要是包含以下系統(tǒng):渲染引擎(即 “渲染器” ,含二維圖像引擎和三維圖像引擎) 、物理引擎、

23、碰撞檢測(cè)系統(tǒng)、音效、腳本 引擎、電腦動(dòng)畫、人工智能、網(wǎng)絡(luò)引擎以及場(chǎng)景管理11。 本課題五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng)所使用的游戲引擎為 gameengine,有較強(qiáng)的實(shí)用性,簡(jiǎn) 單易學(xué),非常方便。它是由福大師生自主研發(fā)設(shè)計(jì)的一款游戲引擎工具,由本人的導(dǎo)師 提供。 第 3 章 系統(tǒng)框架 3.1 游戲的基本流程 本游戲運(yùn)用了 c/s 模式,在游戲開啟服務(wù)端后,我們需要點(diǎn)擊“啟動(dòng)”按鍵,這樣 才可以連接服務(wù)端,登錄客戶端后,我們要進(jìn)行填寫昵稱,然后登陸游戲,接著再點(diǎn)擊 “尋找對(duì)手”按鍵就可以進(jìn)入等待排隊(duì)狀態(tài),只要出現(xiàn)也在等待的對(duì)手,就可以進(jìn)入游 戲,開始游戲,如果玩家想要放棄棋局則可點(diǎn)擊投降來結(jié)束比賽,亦或者發(fā)

24、現(xiàn)棋局將以 和棋為結(jié)局,則可點(diǎn)擊“和棋”按鈕來結(jié)束比賽。如果比賽正常結(jié)束,則系統(tǒng)將會(huì)出現(xiàn) 勝負(fù)的提示。圖 3-1 為下五子棋的流程。 和棋 圖 3-1 游戲流程 3.2 游戲中主要的類及類的功能 表 3-3 中介紹了游戲中所用到的主要類,和各個(gè)類所實(shí)現(xiàn)的功能及實(shí)現(xiàn)所用的方法。 表 3-3 主要類表 主要類名實(shí)現(xiàn)功能 實(shí)現(xiàn)的方法 client服務(wù)端和客戶端的連接connect(),processmsg(string msg) gd定義全局?jǐn)?shù)據(jù)無 hallframe繪制大廳界面hallframe(),run() loginframe繪制登陸界面loginframe(),run() qiju五子棋判

25、定算法init(),isempty(int col,int range), putqz(int col,int range), isfivelink(int qzcolor,int col,int range) wzgameui繪制棋盤wzgameui(),show(),drawqpline(graph graph), drawqz(graph graph), drawplayerinfo(graph graph), isvalidsetpoint(int x,int y) clientthread客戶端通信clientthread(socket s), send(string str), v

26、oid run() match尋找對(duì)手tomatch(clientthread c) serverthread服務(wù)器端主線程run(),closeserver() wzserver服務(wù)端界面main(string args), wzserver() 3.3 游戲說明 3.3.1 行棋順序 (1)進(jìn)入游戲后,玩家一會(huì)被綁定為黑棋,玩家二會(huì)被綁定白棋。 (2)玩家一即黑棋方先手,玩家二后手,一個(gè)人一次只能下一個(gè)棋子,直至分出勝 負(fù)為止。若棋盤下滿還沒有玩家實(shí)現(xiàn)五子連珠,則判定雙方為和棋。 3.3.2 判斷勝負(fù) (1)如果其中一個(gè)玩家能最先在棋盤水平方向、豎直方向、45 度斜方向形成連續(xù)的 相同顏色

27、的五個(gè)棋子,則此玩家為勝利的一方,另一玩家為失敗的一方。 (2)如果棋盤下滿了還不能分不出勝負(fù),或者其中一個(gè)玩家可以點(diǎn)擊“求和” ,同 時(shí)另一玩家點(diǎn)擊“同意” ,則定為平局。 如果另一玩家點(diǎn)擊“不同意” ,則雙方繼續(xù)游戲。 (3)如果其中一個(gè)玩家點(diǎn)擊投降,則判定為輸家,另一個(gè)玩家為勝方。 3.3.3 游戲操作說明 在點(diǎn)擊服務(wù)端界面中的“開啟”按鈕后,各個(gè)玩家都需要在客戶端填寫自己的昵稱, 然后才可以進(jìn)入大廳,接著如果想要開始游戲則需點(diǎn)擊“尋找對(duì)手”按鈕,如果不想玩 則點(diǎn)擊“離開大廳” ,匹配到對(duì)手后就可以開始與其他玩家對(duì)戰(zhàn)了,先進(jìn)入游戲的玩家執(zhí) 黑棋先手,后進(jìn)入游戲的玩家執(zhí)白棋后手,游戲中如果

28、其中一個(gè)玩家的棋子在同一水平 或者垂直或者斜著連續(xù)五個(gè)串在一起,則判定勝負(fù),如果玩家點(diǎn)擊“求和”的按鈕,系 統(tǒng)會(huì)自動(dòng)判定雙方和棋,如果某一玩家點(diǎn)擊“投降”按鈕,則系統(tǒng)判定他為負(fù)方,游戲 直接結(jié)束。 3.4 游戲資源與架構(gòu) 本游戲程序架構(gòu)主要包含代碼、圖片資源。具體內(nèi)容如下: 代碼: 編寫的 java 代碼放置于工程文件中/ src 文件夾下。 圖片資源: 圖片都是 png 格式文件或 bmp 格式文件,放置于/ img 文件夾中。 第 4 章 關(guān)鍵技術(shù)及主要功能的具體實(shí)現(xiàn) 4.1 概要設(shè)計(jì)說明 本游戲程序主要包含服務(wù)端界面、登錄界面、大廳界面、游戲界面、游戲結(jié)果界面。 4.2 界面實(shí)現(xiàn) 4.2

29、.1 服務(wù)器界面 服務(wù)器界面:其中包含了啟動(dòng)服務(wù)和關(guān)閉服務(wù)兩個(gè)按鍵,如果不啟動(dòng)服務(wù),服務(wù)端和 客戶端就不會(huì)連接,這樣游戲也無法開始。 圖 4-1 服務(wù)器界面 4.2.2 登錄界面 游戲登錄界面:在這個(gè)界面,玩家需要填寫自己的昵稱,之后才可以登錄游戲,如果 昵稱一欄為空就點(diǎn)擊登錄游戲會(huì)出現(xiàn)錯(cuò)誤提示。 圖 4-2 登錄界面 圖 4-3 登陸錯(cuò)誤提示 4.2.3 大廳界面 服務(wù)端大廳:這個(gè)窗口會(huì)顯示玩家的當(dāng)前狀態(tài)信息,登錄成功后系統(tǒng)會(huì)默認(rèn)玩家為 空閑狀態(tài),點(diǎn)擊“尋找對(duì)手后” 變成等待游戲狀態(tài),玩家如果不想游戲,則點(diǎn)擊“離開 大廳” ,退出服務(wù)器。 圖 4-4 大廳空閑狀態(tài)界面 圖 4-5 等待隊(duì)列狀

30、態(tài)界面 4.2.4 游戲界面 游戲界面:主窗體、用戶信息(自己) 、用戶信息(對(duì)方) 、投降按鈕、求和按鈕。 游戲中會(huì)顯示玩家昵稱及先后手情況,點(diǎn)擊“投降”按鈕則結(jié)束游戲?qū)?zhàn),點(diǎn)擊“求和” 按鈕需要對(duì)方玩家的同意才能和棋,對(duì)方玩家不同意則玩家會(huì)繼續(xù)正常游戲。 圖 圖 4-6 游戲棋盤界面 4.2.5 游戲結(jié)果界面 游戲結(jié)束界面:不管玩家的輸贏,系統(tǒng)都會(huì)有游戲結(jié)果的提示。點(diǎn)擊其中的“確定” 按鈕,玩家就會(huì)回到游戲大廳。 圖 4-7 游戲結(jié)束后贏的界面 圖 4-8 游戲結(jié)束后輸?shù)慕缑?4.2.6 游戲界面的實(shí)現(xiàn) 在游戲界面中,首先導(dǎo)入棋盤的背景,然后對(duì)棋盤位置進(jìn)行設(shè)置,代碼如下: int qpto

31、p=10; int qpleft=160; /棋盤左上角位置 int cellwidth=50; /棋盤格子寬度 然后利用游戲引擎 gameengine 來設(shè)置 “投降”與“求和”這兩個(gè)按鈕: mb.addbutton(new rectangle(10,100,70,50), 投降, 0); mb.addbutton(new rectangle(10,200,70,50), 求和, 1); 接著繪制棋盤背景: graph.drawimage(bk,0,0,1024,768); 再接著繪制棋盤上的線: graph.getgraphic().drawline(qpleft, qptop+cellw

32、idth*i, qpleft+cellwidth*14, qptop+cellwidth*i); /畫橫線 graph.getgraphic().drawline(qpleft+cellwidth*i, qptop, qpleft+cellwidth*i, qptop+cellwidth*14); /畫縱線 繪制玩家信息: drawplayerinfo(graph); 繪制棋子: int x=qpleft+cellwidth*i-25; int y=qptop+cellwidth*j-25; 4.3 功能模塊 4.3.1 服務(wù)端實(shí)現(xiàn) 服務(wù)端的作用是對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),是客戶端數(shù)據(jù)進(jìn)行交互的樞紐,主

33、要是應(yīng)用了 java 通訊技術(shù) socket 中的 serversocket 對(duì)象,以下幾點(diǎn)為服務(wù)端的詳細(xì)功能: (1)服務(wù)端實(shí)現(xiàn)的服務(wù)的開啟功能:其中開啟功能主要是通過端口號(hào)去 new 一個(gè) serversocket,假設(shè)開啟監(jiān)聽的端口號(hào)是 5555,則創(chuàng)建語句為: serversocket server=new serversocket(5555); thread thread=new thread(server); thread.start(); 如果以上語句執(zhí)行沒有異常,則說明服務(wù)開啟成功。 (2)服務(wù)端實(shí)現(xiàn)的服務(wù)的關(guān)閉功能:實(shí)現(xiàn)調(diào)用的是 socket 函數(shù)中的 close()方法,

34、如 server.close(),如果執(zhí)行沒發(fā)生異常,則說明服務(wù)關(guān)閉成功。 (3)服務(wù)端的主線程: serversocket ss=null; boolean isrunning=false; vector clients=new vector(); 然后建立套接字,接著服務(wù)端與客戶端建立連接,運(yùn)行與客戶端通信的相關(guān)線程, 其中每一個(gè)客戶端連接都對(duì)應(yīng)了一個(gè)線程,負(fù)責(zé)與客戶端之間的通信。 (4)服務(wù)端獲取了客戶端發(fā)送來的信息,并處理這些消息: while(cont) string str = dis.readutf(); processmsg(str); 4.3.2 客戶端實(shí)現(xiàn) 客戶端提供了用戶

35、昵稱填寫和登陸游戲,同時(shí)讓玩家選擇進(jìn)入等待隊(duì)列進(jìn)行匹配對(duì) 手,最后進(jìn)行游戲?qū)?zhàn),并且顯示服務(wù)端發(fā)送過來的對(duì)手昵稱。具體功能實(shí)現(xiàn)如以下幾 點(diǎn): (1)客戶端連接: socket=new socket(,5555); cont = true; recvthread=new recvthread(); recvthread.start(); 其中的端口號(hào)必須與服務(wù)端創(chuàng)建時(shí)候的端口號(hào)一致。 (2)客戶端斷開連接: cont=false; state=0; dos.close(); dis.close(); socket.close(); (3)客戶端發(fā)送信息給服務(wù)端: dos.wri

36、teutf(str); (4)將玩家注冊(cè)的昵稱這個(gè)信息發(fā)送給服務(wù)器: public void login(string name) /發(fā)送信息給服務(wù)器 send(name+name); state=hall_idle; 4.3.3 五子棋游戲功能的實(shí)現(xiàn) (1)玩家先手的設(shè)置,游戲設(shè)置的先手的玩家為黑棋一方,當(dāng)玩家點(diǎn)擊匹配對(duì)手后, 首先進(jìn)入的玩家綁定到房間的玩家 1,綁定了黑棋,后者則為玩家 2,綁定白棋,實(shí)現(xiàn)過 程如下: public static boolean firsthand=false; private void drawplayerinfo(graph graph) string

37、player1; string player2; if(gd.firsthand) player1=gd.name+(先手執(zhí)黑); player2=gd.opponentname+(后手執(zhí)白); else player1=gd.name+(后手執(zhí)白); player2=gd.opponentname+(先手執(zhí)黑); (2)下棋禁手實(shí)現(xiàn):在雙方玩家都點(diǎn)擊“尋找對(duì)手”的時(shí)候才能進(jìn)行游戲,根據(jù)系 統(tǒng)的判定誰先點(diǎn)擊“尋找對(duì)手”誰先手的原則,之后雙方游戲都進(jìn)入“game”狀態(tài)。 public static boolean firsthand=false; public void setfirsthand

38、(boolean first) /設(shè)置先后手,并進(jìn)入游戲狀態(tài) firsthand=first; state=game; if(firsthand) send(firsthand); else send(backhand); (3)在棋盤中,任意一個(gè)格子都只可能是三種狀態(tài),其中 1 為黑子,2 為白子,0 為無子狀態(tài)。如果出現(xiàn)無子狀態(tài)的情況下則可落子: public boolean isempty(int col,int range) if(qjcolrange=0) return true; else return false; (4)游戲勝負(fù)的判斷:判斷時(shí),要同時(shí)考慮到八個(gè)方位同一顏色的棋子

39、是否實(shí)現(xiàn)五 子連珠,具體是:水平往右,水平往左,垂直向上,垂直向下,斜右下,斜左下,斜右 上,斜左上。以橫向?yàn)槔?,每下一步棋,則 sum=1,然后從左往右數(shù),判斷下一格的棋子 是否與剛落下的棋子的顏色相同,相同則 sum+1,不同則開始從右往左數(shù),相同顏色則 sum+1,不同則停止,在這過程中如果出現(xiàn) sum=5,則落子的玩家為勝方,代碼如下: public boolean isfivelink(int qzcolor,int col,int range) /判定落子是否構(gòu)成五子相連,qzcolor 為棋子顏色 /橫向 int sum=1; int x=col+1; int y=range;

40、if(x=15)break; x=col-1; if(x=0) while(qjxy=qzcolor) sum+; x-; if(x=5)return true; 第 5 章 軟件測(cè)試 5.1 軟件測(cè)試方案 軟件測(cè)試就是根據(jù)相應(yīng)需要測(cè)試的軟件的具體情況來設(shè)定測(cè)試方案和流程,然后利 用測(cè)試工具對(duì)產(chǎn)品進(jìn)行功能以及性能的測(cè)試,如果找不到合適的測(cè)試工具,設(shè)計(jì)和維護(hù) 測(cè)試系統(tǒng),甚至需要自己來編寫程序?qū)y(cè)試方案中可能出現(xiàn)的問題進(jìn)行分析和評(píng)估。測(cè) 試的每一個(gè)步驟中如果發(fā)現(xiàn)問題,我們應(yīng)及時(shí)進(jìn)行解決,修復(fù)各種漏洞,以保證客戶能 夠正常使用產(chǎn)品。 本游戲設(shè)計(jì)的是一個(gè)用 java 實(shí)現(xiàn)的五子棋網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng),其中的細(xì)

41、節(jié)測(cè)試在代碼編 寫過程中逐步完成了,這里將著重討論系統(tǒng)測(cè)試以及所遇到的各種故障。 5.2 軟件功能測(cè)試 表 5-1 功能測(cè)試表 序號(hào)執(zhí)行操作希望得到的測(cè)試結(jié)果事實(shí)上得到的結(jié)果備注 1進(jìn)入服務(wù)端大廳后點(diǎn)擊“開 啟” 客戶端可以進(jìn)行登錄相符 2點(diǎn)擊大廳的“關(guān)閉”按鈕客戶端無法進(jìn)行登錄相符 3填寫昵稱然后點(diǎn)擊“登陸游 戲” 進(jìn)入服務(wù)端大廳相符 4不填寫昵稱然后點(diǎn)擊“登陸 游戲” 出現(xiàn)錯(cuò)誤提示相符 5點(diǎn)擊“尋找對(duì)手”玩家進(jìn)入等待隊(duì)列的狀態(tài)相符 7點(diǎn)擊“離開大廳”玩家退出大廳相符 8點(diǎn)擊“投降”雙方出現(xiàn)勝負(fù)提示相符 9點(diǎn)擊“求和”對(duì)方出現(xiàn)是否同意和棋的提 示 相符 10點(diǎn)擊求和對(duì)話框中的“是”對(duì)方會(huì)出現(xiàn)

42、同意和棋的確定 框 相符 11點(diǎn)擊求和對(duì)話框中的“否”對(duì)方會(huì)出現(xiàn)不同意和棋的確 定框 相符 12點(diǎn)擊對(duì)方發(fā)送來的同意對(duì)話 框中的“確定” 游戲結(jié)束,出現(xiàn)和棋的提示相符 續(xù)表 5-1 功能測(cè)試表 序號(hào)執(zhí)行操作希望得到的測(cè)試結(jié)果事實(shí)上得到的結(jié)果備注 13點(diǎn)擊對(duì)方發(fā)送來的不同意對(duì) 話框中的“確定” 游戲繼續(xù)相符 14一盤棋下完后,點(diǎn)擊系統(tǒng)出 現(xiàn)勝負(fù)判定的消息框中的 “確定” 游戲結(jié)束并返回大廳相符 結(jié)論 制作這個(gè)游戲 java 基礎(chǔ)非常的重要,如果沒有多看關(guān)于基礎(chǔ)知識(shí)的書籍,幾乎沒法 完成畢業(yè)設(shè)計(jì)。由于 java 相關(guān)的知識(shí)比較復(fù)雜,在制作這游戲的過程中我遇到了非常多 的麻煩,但是也是這些麻煩讓我有了學(xué)習(xí)的動(dòng)力,并且在以后的日子里我也會(huì)把它當(dāng)做 我的興趣好好學(xué)習(xí),同時(shí)與更多的人交流,應(yīng)該多多借鑒他人學(xué)習(xí)知識(shí),促進(jìn)自己的成 長,讓自己能夠應(yīng)對(duì)這些問題時(shí)得心應(yīng)手。 本次的游戲設(shè)計(jì)主要實(shí)現(xiàn)五子棋對(duì)戰(zhàn),以及游戲中的登錄尋找對(duì)手功能等等,其游 戲界面比較簡(jiǎn)潔得體,相信很多玩家會(huì)認(rèn)為這是個(gè)不錯(cuò)的設(shè)計(jì),而且這個(gè)游戲操作簡(jiǎn)單, 很容易上手,基本上適合各個(gè)年齡段的人,這個(gè)游戲只需要用到鼠標(biāo)點(diǎn)擊就能實(shí)現(xiàn)游戲 的整個(gè)過程,是

溫馨提示

  • 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)論