




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、xx 大學(xué) xx 學(xué)院 本科生畢業(yè)設(shè)計(jì)(論文)本科生畢業(yè)設(shè)計(jì)(論文) 題 目: 用 java 實(shí)現(xiàn)五子棋網(wǎng)絡(luò)對戰(zhàn)系統(tǒng) 姓 名: xxxx 學(xué) 號: xxxxx 系 別: 計(jì)算機(jī)工程系 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 年 級: xxx 級 指導(dǎo)教師: xxxx 2013 年 6 月 23 日 獨(dú)創(chuàng)性聲明獨(dú)創(chuàng)性聲明 本畢業(yè)設(shè)計(jì)(論文)是我個人在導(dǎo)師指導(dǎo)下完成的。文中引用他人研究 成果的部分已在標(biāo)注中說明;其他同志對本設(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ò)對戰(zhàn)系統(tǒng) 摘要 現(xiàn)代科學(xué)技術(shù)正在迅猛的發(fā)展著,計(jì)算機(jī)信息技術(shù)在其中發(fā)揮著巨大的作用。在此 背景下,java 已經(jīng)從一種與平臺無關(guān)的編程語言演變成一種跨平臺的服務(wù)器端技術(shù),同 時 java 也成了最常用的語言之一。對比 c+語言,java 語言更加簡單,java 語言更加容 易理解,也沒那么容易出錯,它的語法
3、結(jié)構(gòu)讓人看起來更加簡潔清楚。此外 java 語言相 對比較晚出現(xiàn),它在面向?qū)ο蠛投嗑€程特性上相對其他計(jì)算機(jī)語言有了很大的進(jìn)步,而 且在 java 語言中比較容易實(shí)現(xiàn)算法,可以大大縮短了我們編寫程序的時間,同時寫出來 的 java 代碼也比較容易得到復(fù)用和移植?;谝陨蟽?yōu)點(diǎn),本文采用 java 語言實(shí)現(xiàn)一款 五子棋網(wǎng)絡(luò)對戰(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)這個 游戲所有操作:開始游戲、落子、投降、求和。這種設(shè)置老少皆宜,讓所有的人都可以 無障礙的玩這游戲,并配合簡潔的游戲界面,讓玩家體
4、驗(yàn)到五子棋的趣味性。 關(guān)鍵詞:java,五子棋,對戰(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 章 軟件測試 .17 5.1 軟件測試方案 .17 5.2 軟件功能測試 .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)用到了世界的各個角落,它為人們提供各種各樣的服務(wù),讓人們的生活更加的豐富多
11、 彩,甚至不知不覺中已經(jīng)成為人們生產(chǎn)中不可少的部分,與此同時,在網(wǎng)絡(luò)普及的過程 中,游戲也在逐漸得到人們的認(rèn)同。如今網(wǎng)絡(luò)休閑游戲憑借著其健康、方便、益智等優(yōu) 點(diǎn)迅猛的發(fā)展著,也因此各大游戲?qū)?zhàn)平臺層出不窮,比如大家耳熟能詳?shù)?qq 對戰(zhàn)平臺。 這些游戲已經(jīng)成為了大部分現(xiàn)代人休閑娛樂的重要部分。 1.2 研究意義 java 是一門經(jīng)過充分發(fā)展,比較成熟的語言,java 語言在企業(yè)級應(yīng)用稱霸這些年念 頭,已經(jīng)充分證明了它非常適合于開發(fā)大型軟件。當(dāng) java 的運(yùn)行效率不再是問題的時候, java 語言嚴(yán)謹(jǐn)、高抽象、可讀性強(qiáng)的優(yōu)勢就體現(xiàn)出來了。這對于規(guī)模越來越龐大的游戲 軟件來說,有著不小的誘惑1。
12、它擁有一套屬于自己的龐大并且較為完善的類庫,內(nèi)置 了其他語言需要靠庫甚至是操作系統(tǒng)才能支持的功能,總而言之, java 語言的出現(xiàn)帶給了 整個業(yè)界巨大的沖擊,為整個 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ī)信條的平臺技術(shù)2。 計(jì)算機(jī)的普及,以及網(wǎng)絡(luò)的發(fā)展使得網(wǎng)絡(luò)游戲的需求日益增長,同時作為傳統(tǒng)游戲 的五子棋,因?yàn)樗旧硭哂泻唵畏奖愕忍攸c(diǎn),使得它在世界各地都有大量的玩家。 基 于 c/s 模式使用 java 語言開發(fā)的五子棋
13、網(wǎng)絡(luò)對戰(zhàn)系統(tǒng),將五子棋游戲移植到到網(wǎng)絡(luò)對戰(zhàn) 平臺當(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ò)對戰(zhàn)系統(tǒng)。通過簡單的登錄,玩家可以進(jìn)行五子棋對 戰(zhàn)。在游戲中,本著先排隊(duì)先開始的原則,讓最先進(jìn)入游戲的玩家最先找到游戲?qū)κ郑?以此減少玩家的等待時間。在游戲中,玩家如果想退出,則可以通過點(diǎn)擊投降或者求和 的按鈕來結(jié)束游戲,其中求和需要對方玩家的同意。如果玩家分出了勝負(fù),系統(tǒng)會提示 勝負(fù)信息,點(diǎn)擊確定按鈕,則退出游戲,狀態(tài)由“游戲中”變成“空閑中” 。 1.4 論文組織結(jié)構(gòu) 本文描述的是
14、用 java 開發(fā)的五子棋對戰(zhàn)系統(tǒng),共分為 5 章: 第 1 章:先是介紹了用 java 開發(fā)五子棋網(wǎng)絡(luò)對戰(zhàn)系統(tǒng)的研究背景,研究利用 java 語 言開發(fā)游戲的意義,然后對玩游戲的流程的內(nèi)容進(jìn)行基本的介紹,最后介紹了本文各個 章節(jié)的組織結(jié)構(gòu)。 第 2 章:先介紹了本系統(tǒng)所用到的開發(fā)工具eclipse,然后分析了開發(fā)語言 java 的特 點(diǎn),最后簡要的介紹了這次系統(tǒng)所用到的游戲引擎 gameengine。 第 3 章:先介紹了游戲的基本流程,然后用列表的形式來介紹游戲中所用到的類及 類的功能,接著對游戲進(jìn)行說明,最近簡述了游戲的資源和構(gòu)架。 第 4 章:先簡述了游戲概要設(shè)計(jì)說明,然后對游戲的各個
15、界面進(jìn)行介紹,最后對游 戲的功能模塊實(shí)現(xiàn)進(jìn)行介紹并解釋關(guān)鍵代碼。 第 5 章:先簡要說明了軟件測試的方案,然后利用表格的形式對軟件進(jìn)行測試并說 明結(jié)果 在論文的末尾,我對該五子棋網(wǎng)絡(luò)對戰(zhàn)系統(tǒng)的設(shè)計(jì)過程所遇到的一些問題進(jìn)行了總 結(jié)。 第 2 章 相關(guān)技術(shù)介紹 2.1 開發(fā)工具 本課題采用的開發(fā)工具是 eclipse。eclipse 是一個開放源代碼的、基于 java 的可 擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開 發(fā)環(huán)境。幸運(yùn)的是,eclipse 附帶了一個標(biāo)準(zhǔn)的插件集,包括 java 開發(fā)工具(java development kit,jdk)3。 在本次五
16、子棋對戰(zhàn)系統(tǒng)中,設(shè)計(jì)對話框時我用到了 java 其中的一種叫 swing 的插件, swing 是一個用于開發(fā) java 應(yīng)用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包 (awt)為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格4。當(dāng)我們在使用 swing 開發(fā)時,只要通過 swing 的功能就可以大大減少我們的代碼量,達(dá)到事半功倍的效 果,同時還可以豐富我們所創(chuàng)建的用戶界面。其中使用 swing 創(chuàng)建圖形界面時需要這些 步驟:首先導(dǎo)入 swing 包,然后選擇界面風(fēng)格,也可以插入我們所需要的圖形,在對話 框中添加所需要的按鈕和標(biāo)簽等,然后再將組件放置到容器上,最后設(shè)置好按鍵的功能, 這樣
17、基本就完成了 swing 的使用。 2.2 開發(fā)語言 自 1995 年 sun microstems 公司推出 java 以來,人們不斷挖掘 java 編程系統(tǒng)的潛 力,直到現(xiàn)在已經(jīng)得到了全世界的認(rèn)可5. java 編程語言是一種通用的,并發(fā)的,階級 基礎(chǔ),面向?qū)ο蟮恼Z言6。它與一般的編譯語言和直譯語言有著很大的區(qū)別。它首先將 源代碼編譯成字節(jié)碼,然后利用各個不同平臺上的虛擬機(jī)來解釋那些執(zhí)行字節(jié)碼,從而 實(shí)現(xiàn)了“一次編譯、到處執(zhí)行”的跨平臺特性。java 技術(shù)的應(yīng)用非常廣泛,小到個人 pc、移動電話,大到互聯(lián)網(wǎng)、科學(xué)超級計(jì)算機(jī)等等。從整體上來說,java 編程語言的風(fēng) 格與 c+語言有一些相似
18、之處。它繼承了 c+語言面向?qū)ο蠹夹g(shù)的核心,java 舍棄了 c+ 語言中容易引起錯誤的指針,改以引用取代,同時移除原 c+與原來運(yùn)算符重載,也移除 多重繼承特性,改用接口取代,增加垃圾回收器功能。具體來說,它具有如下特性: (1)java 這門語言簡單好學(xué),也非常的好用。java 語言是在 c 與 c+計(jì)算機(jī)語言的 基礎(chǔ)上進(jìn)行簡化和改進(jìn)的一種新型計(jì)算機(jī)語言,它去除掉了 c 和 c+中最難理解的多重繼 承技術(shù)和最難正確應(yīng)用的指針等內(nèi)容7。用過 c+的開發(fā)游戲的程序員都知道,內(nèi)存管理 是最容易出錯誤的地方,申請的內(nèi)存用完以后必須釋放,要不然慢慢的可使用的內(nèi)存資 源會越變越少,直到耗盡系統(tǒng)資源后會
19、導(dǎo)致死機(jī)。但 java 能通過垃圾自動回收機(jī)制簡化 了程序內(nèi)存管理,統(tǒng)一了在不同操作系統(tǒng)平臺上不同的數(shù)據(jù)類型所占用的內(nèi)存大小的標(biāo) 準(zhǔn),毫無疑問這對于編程來說有著相當(dāng)大的用處的。 (2)基于對象的編程很符合程序員的思維模式習(xí)慣,讓我們在編寫程序時顯得更加得 心應(yīng)手。java 語言與其它面向?qū)ο笳Z言一樣,引入了類的概念,類是用來創(chuàng)建對象的模 板,它包含被創(chuàng)建的對象的狀態(tài)描述和方法的定義8。 (3)每當(dāng)比較 java 與其他語言的時候,跨平臺總是被人們提及到,因?yàn)檫@是 java 一 個非常重要的特點(diǎn)。由于它采用先編譯成中間碼,然后裝載與校驗(yàn),再解釋成不同的機(jī) 器碼來執(zhí)行, “屏蔽”了具體的“平臺環(huán)境
20、”特性要求,正因?yàn)檫@樣,只要能支持 java 虛擬機(jī),那么就可運(yùn)行各種 java 程序9。java 系統(tǒng)可以運(yùn)行在不同的操作系統(tǒng)和硬件上。 由于 java 的跨平臺,java api 自然也是平臺統(tǒng)一的。我們只要拿 java api 與 c+的類 庫相比便可以知道它的可貴之處。因?yàn)閷τ诔绦騿T而言,統(tǒng)一的 api 函數(shù)能夠讓他們減 輕負(fù)擔(dān),就可以省略掉其中一些不必要的麻煩。 (4) java 相對來說比較安全,經(jīng)常使用網(wǎng)絡(luò)的人通常都有一個擔(dān)心,生怕網(wǎng)絡(luò)上的 各種有毒網(wǎng)站以及各種盜取私人文件的釣魚網(wǎng),甚至是下載到含有惡意代碼的文件,他 們會破壞我們的計(jì)算機(jī)系統(tǒng)。但是當(dāng)我們使用支持 java 的瀏覽
21、器時,我們就可以放心地 運(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)境中, 它不會訪問或修改不允許訪問的內(nèi)存或文件。 (5) 類是 java 程序的基本組成單元,其中一部分類是我們自己編寫的,一部分是 引用類庫中的,而類是運(yùn)行時動態(tài)才進(jìn)行裝載的,這就使得 java 可以在分布環(huán)境中動態(tài) 地維護(hù)程序及類庫。 (6)在操作系統(tǒng)中,進(jìn)程和線程是兩個非常重要的基本概念。在執(zhí)行過程中,進(jìn)程 有自己獨(dú)立的內(nèi)存空間和系統(tǒng)資源,并且各個進(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í)時圖像應(yīng)用程 序的核心組件,這些系統(tǒng)為游戲設(shè)計(jì)者提供各種編寫游戲所需的各種工具,其目的在于 讓游戲設(shè)計(jì)者能容易和快速地做出游戲程式而不用由零開始,大部分都支持多種操作平 臺,如 linux、mac os x、微軟 windows。游戲引擎主要是包含以下系統(tǒng):渲染引擎(即 “渲染器” ,含二維圖像引擎和三維圖像引擎) 、物理引擎、
23、碰撞檢測系統(tǒng)、音效、腳本 引擎、電腦動畫、人工智能、網(wǎng)絡(luò)引擎以及場景管理11。 本課題五子棋網(wǎng)絡(luò)對戰(zhàn)系統(tǒng)所使用的游戲引擎為 gameengine,有較強(qiáng)的實(shí)用性,簡 單易學(xué),非常方便。它是由福大師生自主研發(fā)設(shè)計(jì)的一款游戲引擎工具,由本人的導(dǎo)師 提供。 第 3 章 系統(tǒng)框架 3.1 游戲的基本流程 本游戲運(yùn)用了 c/s 模式,在游戲開啟服務(wù)端后,我們需要點(diǎn)擊“啟動”按鍵,這樣 才可以連接服務(wù)端,登錄客戶端后,我們要進(jìn)行填寫昵稱,然后登陸游戲,接著再點(diǎn)擊 “尋找對手”按鍵就可以進(jìn)入等待排隊(duì)狀態(tài),只要出現(xiàn)也在等待的對手,就可以進(jìn)入游 戲,開始游戲,如果玩家想要放棄棋局則可點(diǎn)擊投降來結(jié)束比賽,亦或者發(fā)
24、現(xiàn)棋局將以 和棋為結(jié)局,則可點(diǎn)擊“和棋”按鈕來結(jié)束比賽。如果比賽正常結(jié)束,則系統(tǒng)將會出現(xiàn) 勝負(fù)的提示。圖 3-1 為下五子棋的流程。 和棋 圖 3-1 游戲流程 3.2 游戲中主要的類及類的功能 表 3-3 中介紹了游戲中所用到的主要類,和各個類所實(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尋找對手tomatch(clientthread c) serverthread服務(wù)器端主線程run(),closeserver() wzserver服務(wù)端界面main(string args), wzserver() 3.3 游戲說明 3.3.1 行棋順序 (1)進(jìn)入游戲后,玩家一會被綁定為黑棋,玩家二會被綁定白棋。 (2)玩家一即黑棋方先手,玩家二后手,一個人一次只能下一個棋子,直至分出勝 負(fù)為止。若棋盤下滿還沒有玩家實(shí)現(xiàn)五子連珠,則判定雙方為和棋。 3.3.2 判斷勝負(fù) (1)如果其中一個玩家能最先在棋盤水平方向、豎直方向、45 度斜方向形成連續(xù)的 相同顏色
27、的五個棋子,則此玩家為勝利的一方,另一玩家為失敗的一方。 (2)如果棋盤下滿了還不能分不出勝負(fù),或者其中一個玩家可以點(diǎn)擊“求和” ,同 時另一玩家點(diǎn)擊“同意” ,則定為平局。 如果另一玩家點(diǎn)擊“不同意” ,則雙方繼續(xù)游戲。 (3)如果其中一個玩家點(diǎn)擊投降,則判定為輸家,另一個玩家為勝方。 3.3.3 游戲操作說明 在點(diǎn)擊服務(wù)端界面中的“開啟”按鈕后,各個玩家都需要在客戶端填寫自己的昵稱, 然后才可以進(jìn)入大廳,接著如果想要開始游戲則需點(diǎn)擊“尋找對手”按鈕,如果不想玩 則點(diǎn)擊“離開大廳” ,匹配到對手后就可以開始與其他玩家對戰(zhàn)了,先進(jìn)入游戲的玩家執(zhí) 黑棋先手,后進(jìn)入游戲的玩家執(zhí)白棋后手,游戲中如果
28、其中一個玩家的棋子在同一水平 或者垂直或者斜著連續(xù)五個串在一起,則判定勝負(fù),如果玩家點(diǎn)擊“求和”的按鈕,系 統(tǒ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ù)器界面:其中包含了啟動服務(wù)和關(guān)閉服務(wù)兩個按鍵,如果不啟動服務(wù),服務(wù)端和 客戶端就不會連接,這樣游戲也無法開始。 圖 4-1 服務(wù)器界面 4.2.2 登錄界面 游戲登錄界面:在這個界面,玩家需要填寫自己的昵稱,之后才可以登錄游戲,如果 昵稱一欄為空就點(diǎn)擊登錄游戲會出現(xiàn)錯誤提示。 圖 4-2 登錄界面 圖 4-3 登陸錯誤提示 4.2.3 大廳界面 服務(wù)端大廳:這個窗口會顯示玩家的當(dāng)前狀態(tài)信息,登錄成功后系統(tǒng)會默認(rèn)玩家為 空閑狀態(tài),點(diǎn)擊“尋找對手后” 變成等待游戲狀態(tài),玩家如果不想游戲,則點(diǎn)擊“離開 大廳” ,退出服務(wù)器。 圖 4-4 大廳空閑狀態(tài)界面 圖 4-5 等待隊(duì)列狀
30、態(tài)界面 4.2.4 游戲界面 游戲界面:主窗體、用戶信息(自己) 、用戶信息(對方) 、投降按鈕、求和按鈕。 游戲中會顯示玩家昵稱及先后手情況,點(diǎn)擊“投降”按鈕則結(jié)束游戲?qū)?zhàn),點(diǎn)擊“求和” 按鈕需要對方玩家的同意才能和棋,對方玩家不同意則玩家會繼續(xù)正常游戲。 圖 圖 4-6 游戲棋盤界面 4.2.5 游戲結(jié)果界面 游戲結(jié)束界面:不管玩家的輸贏,系統(tǒng)都會有游戲結(jié)果的提示。點(diǎn)擊其中的“確定” 按鈕,玩家就會回到游戲大廳。 圖 4-7 游戲結(jié)束后贏的界面 圖 4-8 游戲結(jié)束后輸?shù)慕缑?4.2.6 游戲界面的實(shí)現(xiàn) 在游戲界面中,首先導(dǎo)入棋盤的背景,然后對棋盤位置進(jìn)行設(shè)置,代碼如下: int qpto
31、p=10; int qpleft=160; /棋盤左上角位置 int cellwidth=50; /棋盤格子寬度 然后利用游戲引擎 gameengine 來設(shè)置 “投降”與“求和”這兩個按鈕: 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ù)端的作用是對數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),是客戶端數(shù)據(jù)進(jìn)行交互的樞紐,主
33、要是應(yīng)用了 java 通訊技術(shù) socket 中的 serversocket 對象,以下幾點(diǎn)為服務(wù)端的詳細(xì)功能: (1)服務(wù)端實(shí)現(xiàn)的服務(wù)的開啟功能:其中開啟功能主要是通過端口號去 new 一個 serversocket,假設(shè)開啟監(jiān)聽的端口號是 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)線程, 其中每一個客戶端連接都對應(yīng)了一個線程,負(fù)責(zé)與客戶端之間的通信。 (4)服務(wù)端獲取了客戶端發(fā)送來的信息,并處理這些消息: while(cont) string str = dis.readutf(); processmsg(str); 4.3.2 客戶端實(shí)現(xiàn) 客戶端提供了用戶
35、昵稱填寫和登陸游戲,同時讓玩家選擇進(jìn)入等待隊(duì)列進(jìn)行匹配對 手,最后進(jìn)行游戲?qū)?zhàn),并且顯示服務(wù)端發(fā)送過來的對手昵稱。具體功能實(shí)現(xiàn)如以下幾 點(diǎn): (1)客戶端連接: socket=new socket(,5555); cont = true; recvthread=new recvthread(); recvthread.start(); 其中的端口號必須與服務(wù)端創(chuàng)建時候的端口號一致。 (2)客戶端斷開連接: cont=false; state=0; dos.close(); dis.close(); socket.close(); (3)客戶端發(fā)送信息給服務(wù)端: dos.wri
36、teutf(str); (4)將玩家注冊的昵稱這個信息發(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)擊匹配對手后, 首先進(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)擊“尋找對手”的時候才能進(jìn)行游戲,根據(jù)系 統(tǒng)的判定誰先點(diǎn)擊“尋找對手”誰先手的原則,之后雙方游戲都進(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)在棋盤中,任意一個格子都只可能是三種狀態(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ù)的判斷:判斷時,要同時考慮到八個方位同一顏色的棋子
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 章 軟件測試 5.1 軟件測試方案 軟件測試就是根據(jù)相應(yīng)需要測試的軟件的具體情況來設(shè)定測試方案和流程,然后利 用測試工具對產(chǎn)品進(jìn)行功能以及性能的測試,如果找不到合適的測試工具,設(shè)計(jì)和維護(hù) 測試系統(tǒng),甚至需要自己來編寫程序?qū)y試方案中可能出現(xiàn)的問題進(jìn)行分析和評估。測 試的每一個步驟中如果發(fā)現(xiàn)問題,我們應(yīng)及時進(jìn)行解決,修復(fù)各種漏洞,以保證客戶能 夠正常使用產(chǎn)品。 本游戲設(shè)計(jì)的是一個用 java 實(shí)現(xiàn)的五子棋網(wǎng)絡(luò)對戰(zhàn)系統(tǒng),其中的細(xì)
41、節(jié)測試在代碼編 寫過程中逐步完成了,這里將著重討論系統(tǒng)測試以及所遇到的各種故障。 5.2 軟件功能測試 表 5-1 功能測試表 序號執(zhí)行操作希望得到的測試結(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)錯誤提示相符 5點(diǎn)擊“尋找對手”玩家進(jìn)入等待隊(duì)列的狀態(tài)相符 7點(diǎn)擊“離開大廳”玩家退出大廳相符 8點(diǎn)擊“投降”雙方出現(xiàn)勝負(fù)提示相符 9點(diǎn)擊“求和”對方出現(xiàn)是否同意和棋的提 示 相符 10點(diǎn)擊求和對話框中的“是”對方會出現(xiàn)
42、同意和棋的確定 框 相符 11點(diǎn)擊求和對話框中的“否”對方會出現(xiàn)不同意和棋的確 定框 相符 12點(diǎn)擊對方發(fā)送來的同意對話 框中的“確定” 游戲結(jié)束,出現(xiàn)和棋的提示相符 續(xù)表 5-1 功能測試表 序號執(zhí)行操作希望得到的測試結(jié)果事實(shí)上得到的結(jié)果備注 13點(diǎn)擊對方發(fā)送來的不同意對 話框中的“確定” 游戲繼續(xù)相符 14一盤棋下完后,點(diǎn)擊系統(tǒng)出 現(xiàn)勝負(fù)判定的消息框中的 “確定” 游戲結(jié)束并返回大廳相符 結(jié)論 制作這個游戲 java 基礎(chǔ)非常的重要,如果沒有多看關(guān)于基礎(chǔ)知識的書籍,幾乎沒法 完成畢業(yè)設(shè)計(jì)。由于 java 相關(guān)的知識比較復(fù)雜,在制作這游戲的過程中我遇到了非常多 的麻煩,但是也是這些麻煩讓我有了學(xué)習(xí)的動力,并且在以后的日子里我也會把它當(dāng)做 我的興趣好好學(xué)習(xí),同時與更多的人交流,應(yīng)該多多借鑒他人學(xué)習(xí)知識,促進(jìn)自己的成 長,讓自己能夠應(yīng)對這些問題時得心應(yīng)手。 本次的游戲設(shè)計(jì)主要實(shí)現(xiàn)五子棋對戰(zhàn),以及游戲中的登錄尋找對手功能等等,其游 戲界面比較簡潔得體,相信很多玩家會認(rèn)為這是個不錯的設(shè)計(jì),而且這個游戲操作簡單, 很容易上手,基本上適合各個年齡段的人,這個游戲只需要用到鼠標(biāo)點(diǎn)擊就能實(shí)現(xiàn)游戲 的整個過程,是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 魚塘土方開挖施工方案
- 蚌埠九年級二模數(shù)學(xué)試卷
- 2025年高性能纖維超細(xì)纖維項(xiàng)目建議書
- 灞橋工程鐵藝花箱施工方案
- 2025年柔印CTP項(xiàng)目發(fā)展計(jì)劃
- 馬凳筋專項(xiàng)施工方案
- 渠道預(yù)制板襯砌施工方案
- 多重發(fā)展模式在林業(yè)高效種植中的應(yīng)用價值及實(shí)現(xiàn)路徑探討
- 基本醫(yī)療衛(wèi)生服務(wù)面臨的主要問題
- 流動式起重機(jī)分解組塔施工方案
- 曲靖市出租汽車從業(yè)資格證區(qū)域科目考試題(附答案)
- 2025年安徽城市管理職業(yè)學(xué)院單招職業(yè)技能考試題庫匯編
- 2025年湖南國防工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫及參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2025年河南建筑職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫審定版
- 2025年湖南食品藥品職業(yè)學(xué)院單招職業(yè)傾向性測試題庫參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫1套
- 2025年家政服務(wù)策劃免責(zé)聲明協(xié)議
- 2025新人教版語文七年級下冊《第四單元》大單元整體教學(xué)設(shè)計(jì)2022課標(biāo)
- 2024人工智能大模型技術(shù)財務(wù)應(yīng)用藍(lán)皮書
- DB51T 2572-2019 干旱河谷造林技術(shù)規(guī)程
評論
0/150
提交評論