版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p> 基于Java的“網(wǎng)絡(luò)版五子棋”游戲的設(shè)計和實現(xiàn)</p><p><b> 摘 要</b></p><p> 目前,隨著計算機網(wǎng)絡(luò)的發(fā)展,以計算機技術(shù)
2、和網(wǎng)絡(luò)技術(shù)為核心的現(xiàn)代網(wǎng)絡(luò)技術(shù)已經(jīng)在現(xiàn)實生活和生產(chǎn)中得到了廣泛的使用,休閑類網(wǎng)絡(luò)游戲集趣味性,娛樂性,互動性和益智性于一體,已經(jīng)成為多數(shù)人群的休閑方式,也為多數(shù)人所喜好。</p><p> 本設(shè)計收集了關(guān)于JAVA基礎(chǔ)的書籍,著重收錄了關(guān)于SOCKET編程的內(nèi)容,找到了五子棋概述和規(guī)則的資料,查閱了網(wǎng)絡(luò)通信技術(shù)的相關(guān)論文,同時也參考了很多關(guān)于五子棋實現(xiàn)的程序資料以及關(guān)于JAVA開發(fā)工具的介紹的文檔。在期間,作者
3、學(xué)習(xí)了多線程技術(shù)、數(shù)據(jù)傳輸技術(shù)、SOCKET編程技術(shù),研究了網(wǎng)絡(luò)通信原理、JAVA編寫原理等一系列的原理。開發(fā)了五子棋網(wǎng)絡(luò)對戰(zhàn)的代碼,實現(xiàn)了網(wǎng)絡(luò)聊天、聯(lián)機對戰(zhàn)、網(wǎng)絡(luò)通信、界面組織如:棋盤、建立服務(wù)器、連接到服務(wù)器等功能。通過對以上技術(shù)的學(xué)習(xí)和研究,利用SOCKET編程,能服務(wù)器與客戶端之間的連接,利用多線程技術(shù)完成了服務(wù)器端與客戶端之間的數(shù)據(jù)傳輸、網(wǎng)絡(luò)通信,使得兩個客戶端能夠同步的進(jìn)行處理。</p><p>
4、關(guān)鍵詞: JAVA 多線程 SOCKET 五子棋</p><p><b> Abstract</b></p><p> At present , with the development of computer networks , computer and network technology as the core of modern network te
5、chnology has been widely used in real life and production, the casual game set interesting , entertaining, interactive and puzzle in one, has become the majority population of leisure, but also for the majority of people
6、 have preferences. The design of the collection of books on the JAVA -based , focusing on the collection of content SOCKET programming , found the data ov</p><p> Keywords: JAVA multith
7、reading SOCKET Gobang</p><p><b> 目錄</b></p><p><b> 1 緒論1</b></p><p> 1.1 背景及意義1</p><p> 1.2 選題的目的1</p><p> 1.3 五子棋介紹2&l
8、t;/p><p> 1.4 主要完成內(nèi)容2</p><p> 2 開發(fā)環(huán)境及工具介紹3</p><p> 2.1 開發(fā)環(huán)境及運行環(huán)境3</p><p> 2.1.1 開發(fā)環(huán)境3</p><p> 2.1.2 運行環(huán)境3</p><p> 2.1.2 開發(fā)工具3</p&
9、gt;<p> 2.2 Java 簡介3</p><p> 2.2.1 Java的起源和發(fā)展3</p><p> 2.2.2 Java特點4</p><p> 2.3 Java Socket 網(wǎng)絡(luò)編程簡介5</p><p> 2.3.1 Java Socket 網(wǎng)絡(luò)編程基礎(chǔ)5</p>
10、<p> 2.3.2 Socket編程的實現(xiàn)6</p><p> 2.4 Java 圖形編程7</p><p> 2.5多線程機制7</p><p> 3 需求分析和總體設(shè)計9</p><p> 3.1 需求分析作用9</p><p> 3.1.1 界面需求分析9</p&
11、gt;<p> 3.1.2 軟件需求分析9</p><p> 3.2 總體設(shè)計9</p><p> 3.2.1 系統(tǒng)設(shè)計思想10</p><p> 3.2.2 系統(tǒng)總體設(shè)計10</p><p> 3.3 功能模塊及流程11</p><p> 3.3.1 系統(tǒng)主要模塊11
12、</p><p> 3.3.2服務(wù)器端作用12</p><p> 3.3.3客戶端作用13</p><p> 4 詳細(xì)設(shè)計及實現(xiàn)15</p><p> 4.1 系統(tǒng)主流程15</p><p> 4.2 如何判斷輸贏16</p><p> 4.3 開發(fā)環(huán)境的搭建19&
13、lt;/p><p> 4.4 功能模塊的界面實現(xiàn)20</p><p> 5 軟件的測試23</p><p> 5.1 軟件測試的方法23</p><p><b> 6 總結(jié)語25</b></p><p><b> 參考文獻(xiàn)26</b></p>
14、<p><b> 1 緒論</b></p><p><b> 1.1 背景及意義</b></p><p><b> 1.背景</b></p><p> 隨著經(jīng)濟社會的迅速發(fā)展,人們生活水平有了很大的提高,人們的生活觀念也發(fā)生了巨大的改變。高品質(zhì)的生活、現(xiàn)代化得生活方式成為人們共
15、同追求的目標(biāo);休閑、娛樂性活動作為時尚生活中的一部分,而被大多數(shù)的人所追捧。棋類項目作為一種智力型項目,可以益智健心、修身養(yǎng)性,也可以滿足人們對于娛樂和休閑的新需求。一些項目比如五子棋等等,由于項目本身互動的特點,一直被人們所喜愛,因此得以生存和發(fā)展,成為許多人喜愛的休閑娛樂性棋類項目。</p><p> 而今,以網(wǎng)絡(luò)技術(shù)為核心和計算機技術(shù)的現(xiàn)代網(wǎng)絡(luò)技術(shù)已經(jīng)在現(xiàn)實生活得到了十分的廣泛的使用。休閑類網(wǎng)絡(luò)游戲集合了
16、益智性、趣味性、互動性、娛樂性于一體,已經(jīng)成為多數(shù)人群的選擇的休閑方式。</p><p> 借此,本論文在分析了當(dāng)前計算機網(wǎng)絡(luò)的蓬勃發(fā)展和人們對于休閑娛樂性生活方式的追求,以java語言為工具,在MyEclipse的環(huán)境那下,以精美的界面,以常規(guī)安全的socket建立連接,設(shè)計更為益智的網(wǎng)絡(luò)版五子棋游戲,增強了趣味性和益智性。</p><p><b> 2.意義</b&
17、gt;</p><p> 現(xiàn)在人們壓力日益增大,人們需要勞逸結(jié)合也獲得更高的工作效率,工作之余的娛樂對每一個人來說都是必不可少的放松方式。五子棋游戲簡單易學(xué)同時具有很大奧妙性,也非常富有趣味性與消遣性。在經(jīng)過不斷發(fā)展后,五子棋已經(jīng)成為棋盤娛樂的重要的組成部分,它能夠開發(fā)智力、增強思維能力,而且富含哲理,有助于修身養(yǎng)性。是人們休閑娛樂的不二的選擇。而網(wǎng)絡(luò)互動娛樂是近幾年迅速發(fā)展起來的新的娛樂形式,成為IT產(chǎn)業(yè)中增
18、長最快的娛樂形式之一。</p><p> 網(wǎng)絡(luò)五子棋游戲很多是使用Java語言開發(fā)的一款游戲。它使用SOCKET建立連接,多線程處理數(shù)據(jù),這些特點使這款游戲無論是客戶端還是服務(wù)器的實現(xiàn)都相對容易。</p><p><b> 1.2 選題的目的</b></p><p> 隨著計算機網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)游戲已經(jīng)成為最具潛力的熱點領(lǐng)域。各種
19、各樣的游戲使人眼花繚亂,而特別是其中一些休閑益智類的棋牌游戲,集娛樂性、趣味性、益智性和互動性于一體,擁有很大的用戶。棋類游戲能鍛煉人的思維,起到修身養(yǎng)性的作用。五子棋游戲可以分為兩類:一類是單機版五子棋游戲,另一類是網(wǎng)絡(luò)五子棋游戲。隨著計算機網(wǎng)絡(luò)和JAVA技術(shù)的不斷發(fā)展,使用Java開發(fā)網(wǎng)絡(luò)五子棋游戲?qū)⑹且粋€實用性很強的畢業(yè)設(shè)計項目。</p><p> 網(wǎng)絡(luò)五子棋游戲的總體功能是要設(shè)計出具有精美界面的,具備人
20、工智能的,支持網(wǎng)絡(luò)對弈的五子棋游戲。本系統(tǒng)最終的目的是建立一個有具體規(guī)則的網(wǎng)絡(luò)五子棋平臺,達(dá)到網(wǎng)絡(luò)對弈的目的。</p><p><b> 1.3 五子棋介紹</b></p><p> 五子棋起源于中國古代的傳統(tǒng)黑白棋種之一,是一種兩人對弈的純策略型棋類游戲?,F(xiàn)代五子棋日本稱之為“連珠”,英譯為Renju,英文為“FIR”(Five in a Row 的縮寫)或“G
21、obang”,中文有“串珠”、 “五子連”、“連五子”等很多種名字。它發(fā)展于日本,流行于歐美。容易上手,老少皆宜,而且引人入勝;不僅能提高智力,而且富含哲理。</p><p> 傳統(tǒng)五子棋的棋具與圍棋類似,棋子分為黑白兩色,棋盤有大有小,棋子放置于棋盤線交叉點上。兩人對局,各選一色,輪流落子。五子棋游戲規(guī)則:游戲雙方輪流在棋盤下棋子,一方的棋子在橫、豎、兩個對角線上首先到達(dá)五子者為勝方。因為五子棋在落子后不能移
22、動或拿掉,所以也可以用紙和筆來進(jìn)行游戲。</p><p> 隨著五子棋的發(fā)展,逐步發(fā)現(xiàn)先行優(yōu)勢非常大,最后總結(jié)出“先行必勝”的結(jié)論。五子棋成為競技運動,核心問題是怎樣解決傳統(tǒng)五子棋下法中“先行必勝”的問題。而競技五子棋便是參賽雙方打破“先行必勝”的問題,以棋盤和棋子為介體,進(jìn)行智力性對抗的競技體育項目。</p><p> 1.4 主要完成內(nèi)容</p><p>
23、 本課題為了分析了五子棋規(guī)則及技巧,以及研究客戶端界面的布局,決定用Java開發(fā)五子棋游戲。主要完成客戶端界面設(shè)計和網(wǎng)絡(luò)對戰(zhàn)2個功能模塊??蛻舳素?fù)責(zé)收集用戶的信息和界面維護(hù),以及錯誤處理;服務(wù)器的建立以及對戰(zhàn)用戶的基本信息和兩個對戰(zhàn)用戶的棋盤信息,判斷輸贏。</p><p> 2 開發(fā)環(huán)境及工具介紹</p><p> 2.1 開發(fā)環(huán)境及運行環(huán)境</p><p>
24、; 2.1.1 開發(fā)環(huán)境</p><p> ★ Microsoft Windows XP或以上版本</p><p> ★ JDK 1.60</p><p> ★ MyEclipse8.5</p><p> 2.1.2 運行環(huán)境</p><p> ★ Microsoft Windows XP或以上
25、版本 操作系統(tǒng)</p><p> ★ 1024*768或以上的屏幕分辨率</p><p> 2.1.2 開發(fā)工具</p><p> Java的開發(fā)工具很多,比如JBuilder、MyEclipse、NetBeans IDE、JCreator 等等,不同的工具可能對開發(fā)不同的程序有針對的優(yōu)勢。我選擇MyEclipse進(jìn)行編寫,我們說一下MyEclipse的優(yōu)勢
26、。</p><p> ★ MyEclipse是一種具有可擴展的開放源代碼IDE。MyEclipse可以在同一IDE中集成了來自不同供應(yīng)商的工具,并實現(xiàn)了工具之間的相互操作,從而顯著簡化了項目工作流程。 </p><p> ★ MyEclipse框架的靈活性來自于它的擴展點。在XML中定義的已知接口,并充當(dāng)插件的耦合點。擴展點的范圍包括從簡單字符串,到一個Java類的描述。</
27、p><p> ★ MyEclipse的最大特點是它能接受由Java開發(fā)者自己編寫的開放源代碼插件。</p><p> 2.2 Java 簡介</p><p> Java是一種簡單的、分布式的、面向?qū)ο蟮?、可移植、解釋的、安全的的多線程語言。它以其平臺無關(guān)性、硬件結(jié)構(gòu)無關(guān)性、強安全性、面向?qū)ο?、語言簡潔的特點,在網(wǎng)絡(luò)編程語言中占據(jù)了無可比擬的優(yōu)勢,成為實現(xiàn)電子商
28、務(wù)系統(tǒng)的首選語言[2]。</p><p> 2.2.1 Java的起源和發(fā)展</p><p> Java是Sun公司在1995年推出的新興的編程語言,它是一種跨平臺的、應(yīng)用于當(dāng)前高速發(fā)展的網(wǎng)絡(luò)的編程語言。在編程語言中,可認(rèn)為Basic語言促使了C語言的出現(xiàn),C語言促進(jìn)了C++的出現(xiàn),而C++又促使了Java語言的出現(xiàn)。</p><p> 自從Java正式推出
29、后,以它特有的優(yōu)勢迅速發(fā)展,經(jīng)過幾年的發(fā)展,Java已經(jīng)在軟件開發(fā)等領(lǐng)域占有很大的市場。Java分為三種:J2SE、J2EE和J2ME。J2SE是Java平臺標(biāo)準(zhǔn)版[3],主要應(yīng)用于桌面程序和Java小應(yīng)用程序開發(fā);J2EE主要用于企業(yè)級開發(fā)和大型網(wǎng)站的開發(fā);J2ME主要用于手機等移動設(shè)備程序的開發(fā)。</p><p> 2.2.2 Java特點</p><p><b> ★
30、 平臺無關(guān)性</b></p><p> Java的平臺無關(guān)性能讓這種軟件在每個平臺上都能正常地運行,就是"只要寫一次程序,在任何地方、任何時間該程序永遠(yuǎn)都能夠運行"。Java解釋器生成與體系無關(guān)的字節(jié)碼指令,這些指令對應(yīng)于Java虛擬機里表示,Java解釋器得到字節(jié)碼后,對它進(jìn)行轉(zhuǎn)換,只要安裝Java運行系統(tǒng),Java就可以在任何處理器上運行。</p><p
31、><b> ★ 簡單性</b></p><p> Java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),開發(fā)者只要知道一些概念就能夠編寫一些應(yīng)用程序。</p><p><b> ★ 多線程</b></p><p> 設(shè)計Java的多線程,是為了滿足人們對創(chuàng)建交互式網(wǎng)上程序的需要。用Ja
32、va編寫出來的應(yīng)用程序可以同時執(zhí)行很多任務(wù)。多線程機制使應(yīng)用程序可以并行執(zhí)行,而且同步機制保證了對共享數(shù)據(jù)的正確操作。</p><p><b> ★ 健壯性</b></p><p> Java語言被病毒感染和破壞得最少。Java丟棄了難學(xué)和危險的指針功能,而大部分病毒程序常用的方法就是通過巧妙地運用地址變量如指針來獲取計算機的資源,從而使程序不安全。</p
33、><p> ★ 面向?qū)ο笳Z言</p><p> Java的設(shè)計集中于對象及其接口,它提供了簡單的類機制以及動態(tài)的接口模型。對象中封裝它的狀態(tài)變量和相應(yīng)的方法,實現(xiàn)了模塊化和信息的隱藏;而類則是提供對象的原型,并且通過繼承的機制,子類可以使用父類所提供的方法,以實現(xiàn)代碼的復(fù)用。</p><p><b> ★ 自動內(nèi)存管理</b></
34、p><p> 也可以說自動內(nèi)存管理是Java健壯性的體現(xiàn),內(nèi)存管理是很多種應(yīng)用程序內(nèi)的很關(guān)鍵因素。在網(wǎng)絡(luò)上的其他地方讀取大量的數(shù)據(jù),之后把該數(shù)據(jù)寫入硬盤上的數(shù)據(jù)庫內(nèi),一般的設(shè)計就是把數(shù)據(jù)讀入內(nèi)存中的某些集合內(nèi),對這些數(shù)據(jù)執(zhí)行某些操作,之后把數(shù)據(jù)寫入數(shù)據(jù)庫。在數(shù)據(jù)寫入數(shù)據(jù)庫后,在下一批處理之前,臨時存儲數(shù)據(jù)的集合必須清空舊數(shù)據(jù),或被刪除后再建。這種操作可能執(zhí)行很多次,很多語言要手工清空或刪除集合數(shù)據(jù)結(jié)構(gòu)。Java的自
35、動內(nèi)存管理[4]正好解決這一點,它使程序員不用再為內(nèi)存管理寫大量的代碼。</p><p> 2.3 Java Socket 網(wǎng)絡(luò)編程簡介</p><p> 2.3.1 Java Socket 網(wǎng)絡(luò)編程基礎(chǔ)</p><p> 網(wǎng)絡(luò)編程,簡單的理解就是兩臺計算機相互通信。其基本模型就是客戶機/服務(wù)器模型,也就是通信雙方中的一方必須提供一個固定的端口,而另一方則
36、只需要知道這個端口,并去建立兩者之間的聯(lián)系,然后完成數(shù)據(jù)交換。這里提供固定位置的一方通常稱為服務(wù)器,而建立聯(lián)系的一方通常稱為客戶端[5]。</p><p> 基于客戶機/服務(wù)器的Socket通信模型如圖2-1所示:</p><p> 圖2-1 基于客戶機/服務(wù)器的Socket通信模型圖</p><p> Socket工作過程如下:</p>&l
37、t;p> (1)建立連接:服務(wù)器端程序分配一個端口號,開始監(jiān)聽來自客戶端的請求。當(dāng)客戶請求一個連接時,服務(wù)器使用accept()方法打開Socket連接,將該Socket連接到此端口上。</p><p> (2)數(shù)據(jù)通信:服務(wù)器和客戶端使用Socket的InputStream(輸入流)和OutputStream(輸出流)進(jìn)行通信。</p><p> (3)關(guān)閉連接:通信結(jié)束,服
38、務(wù)器和客戶端程序斷開連接,釋放所有占用的系統(tǒng)資源。</p><p> Java為這個模型的實現(xiàn)提供了簡化的Socket編程接口。在程序中只要導(dǎo)入java.io包就可以方便的使用java的Socket編程接口。</p><p> Java中Socket連接機制如圖2-2所示:</p><p> 圖2-2 Socket的連接機制[6]</p>&l
39、t;p> 2.3.2 Socket編程的實現(xiàn)</p><p> Socket類表示了系統(tǒng)的IP地址和端口號的結(jié)合,可以理解為客戶端或者服務(wù)器端的一個特殊對象。它包含兩個處理流的方法,一個是getInputStream(),另一個是getOutputStream(),分別用來獲得網(wǎng)絡(luò)的輸入流和輸出流。構(gòu)造Socket對象的代碼如下:</p><p> Socket s = new
40、 Socket(IP, port); </p><p> IP,port分別為服務(wù)器端的IP地址和服務(wù)器端的端口號。</p><p> ServerSocket類是一個專門建立Socket服務(wù)器的類,它可以用服務(wù)器需要使用的端口號作為參數(shù)來創(chuàng)建ServerSocket對象。示例代碼如下:</p><p> ServerSocket ss = new Serve
41、rSocket(TCP_PORT);</p><p> 當(dāng)一個客戶端程序建立一個Socket連接,所連接的端口號為對應(yīng)TCP_PORT時,服務(wù)器對象ss便響應(yīng)這個連接,在用上述ss對象調(diào)用accept()創(chuàng)建一個代表服務(wù)器的Socket對象。創(chuàng)建后服務(wù)器便可以利用這個Socket對象與客戶端進(jìn)行數(shù)據(jù)交換。示例代碼如下:</p><p> Socket clientSocket = ss
42、.accept();</p><p> 在本系統(tǒng)的實現(xiàn)過程中,在支持網(wǎng)絡(luò)對弈的服務(wù)器類的定義中需要使用ServerSocket類來響應(yīng)多個客戶端的連接請求。能夠同時建立多個服務(wù)器,玩家可以選擇不同的服務(wù)器參與游戲。</p><p> 2.4 Java 圖形編程</p><p> Java中的Graphics類是一個工具類,用來繪圖和顯示格式化文本,Graph
43、ics類是在java.awt包中聲明的。在Java程序中繪圖必須在一個窗口或者是一個容器中進(jìn)行,繪圖窗體經(jīng)常被設(shè)計為一個組件容器。顯示格式化文本和繪圖是調(diào)用Graphics類的drawXX()方法完成的,例如drawString(String)等等。繪圖采用的坐標(biāo)系[7]是原點在左上角,縱軸向下以像素為單位的坐標(biāo)系。</p><p><b> 2.5多線程機制</b></p>
44、<p> 多線程機制是指單個程序可以運行多個不同的線程,執(zhí)行不同的任務(wù)。因為線程只能在單個進(jìn)程的作用域內(nèi)活動,所以創(chuàng)建線程比創(chuàng)建進(jìn)程要廉價得多,同一類線程共享代碼和數(shù)據(jù)空間,每個線程有獨立的運行桟和程序計數(shù)器(PC),線程切換的開銷小。因此多線程編程在現(xiàn)代軟件設(shè)計中在量采用。</p><p> 創(chuàng)建新線程必須編寫一個線程類,用Java編寫多線程代碼有兩種方式</p><p>
45、; ★ 直接繼承Java的線程類Thread;</p><p> ★ 實現(xiàn)Runnable接口</p><p> 無論采用哪種方式均需要在程序中編寫Run()方法,線程在運行時要完成的任務(wù)在該方法實現(xiàn)。Thread 類封裝了線程的行為。繼承Thread類須重寫run()方法實現(xiàn)各自的任務(wù)。程序中不要直接調(diào)用線程的run()方法,而是調(diào)用start()方法啟動線程,讓其進(jìn)入可調(diào)度的狀態(tài)
46、,線程獲得調(diào)度時將自動執(zhí)行run()方法。</p><p> 由于Java的單重繼承的限制,有些類必須繼承其它個類時又要實現(xiàn)線程的特性。這時可通過實現(xiàn)Runnable接口的方式來滿足兩方面的要求。Runnable 接口只有一個方法 run(),它就是線程運行時要執(zhí)行的方法,只要將具體代碼寫入其中即可。線程在調(diào)度時將自動調(diào)用Runnable 接口對象的run方法。</p><p> 多線
47、程是Java的一個特點,多線程可以使程序反應(yīng)更快、交互性更強,并能提高執(zhí)行效率。在網(wǎng)絡(luò)五子中如果服務(wù)器是單線程的,則只能與一個客戶端相連,就失去了網(wǎng)絡(luò)對戰(zhàn)的意義了。所以應(yīng)該采用多線程方式。當(dāng)服務(wù)器與一個客戶端建立連接,就開啟一個線程與之相連,同時監(jiān)聽其它用戶的連接。</p><p> 請求的通信協(xié)議規(guī)定:</p><p> public class Request {</p>
48、;<p> public static final int LOGIN = 1;//輸入用戶名的請求</p><p> public static final int CR_ROOM = 2;//創(chuàng)建房間的請求</p><p> public static final int GET_ROOM = 3;//獲取房間列表的請求</p><p>
49、public static final int DEL_ROOM = 4;//刪除房間</p><p> public static final int FLUSH_ROOM = 5;//刷新房間的請求</p><p> public static final int IN_ROOM = 6;//進(jìn)入房間</p><p> public static fina
50、l int IN_RESULT = 7;//進(jìn)入房間結(jié)果的請求</p><p> public static final int CHESS = 8;//落子的請求</p><p> public static final int SEND_MSG = 9;//發(fā)送聊天請求</p><p> public static final int NEWS_TART
51、= 10;//新開游戲請求</p><p> public static final int WIN = 11;//代表贏的請求</p><p> public static final int GIVEUP = 12;//放棄請求</p><p> public static final int SUM = 13;//求和</p><p&
52、gt; public static final int SUM_RESULT = 14;//求和結(jié)果處理</p><p> public static final int EXIT = 15;//退出</p><p> public static final int EXIT_ROOM = 16;//退出游戲大廳的請求</p><p> public sta
53、tic final int ROVS = 17;//轉(zhuǎn)觀戰(zhàn)請求</p><p> public static final int IN_LOOK = 18;//進(jìn)入觀戰(zhàn)</p><p> public static final int LOO_GET_DATA = 19;//觀看請求數(shù)據(jù)</p><p> public static final int BAC
54、K_CHESS = 20;//悔棋</p><p> public static final int BACK_CHESS_RESULT = 21;//悔棋結(jié)果處理</p><p><b> }</b></p><p> 3 需求分析和總體設(shè)計</p><p> 3.1 需求分析作用</p>&
55、lt;p> 軟件需求分析是軟件開發(fā)周期的第一個階段,也是關(guān)系到軟件開發(fā)成敗的最關(guān)鍵一步。只有通過了軟件需求分析,才能把軟件的功能和性能由總體的概念性和理論性描述轉(zhuǎn)化為具體的規(guī)格說明,從而建立軟件開發(fā)的基礎(chǔ)。實踐證明,需求分析工作進(jìn)行得準(zhǔn)確程度,在很大程度上決定了軟件開發(fā)的成敗。</p><p> 軟件需求分析的任務(wù)就是讓用戶與開發(fā)者明確開發(fā)的是一個什么軟件。具體的說,就是通過對問題及其環(huán)境的理解、分析與
56、綜合把握,建立邏輯模型,完成軟件的邏輯方案設(shè)計。</p><p> 3.1.1 界面需求分析</p><p> 軟件的界面簡潔明了而不失精美,操作簡單容易,功能按鈕名稱簡單易懂,棋盤的大小,棋子的樣式。</p><p> 3.1.2 軟件需求分析</p><p> 現(xiàn)有的網(wǎng)絡(luò)編程模式主要分成兩類:一種是基于C/S(Client/S
57、erver)模式,另一種是B/S (Browser/Server)模式。網(wǎng)絡(luò)五子棋系統(tǒng)應(yīng)用于局域網(wǎng),對交互性要求很高,本系統(tǒng)選用了C/S 模式進(jìn)行實現(xiàn),網(wǎng)絡(luò)內(nèi)部使用TCP/IP 方式利用Socket提供的服務(wù),使用Java Graphics類進(jìn)行用戶圖形界面的搭建。系統(tǒng)分成兩個部分,分別為服務(wù)端程序以及客戶端程序[8]。結(jié)合實際情況,將服務(wù)器端的程序和客戶端的程序放在一起,便可以更為方便的建立游戲和參與游戲,有效解決了在局域網(wǎng)中服務(wù)器未
58、開啟,則無法進(jìn)行游戲的缺陷。</p><p> 五子棋網(wǎng)絡(luò)游戲主要分為兩個部分,游戲服務(wù)端和游戲客戶端。游戲服務(wù)端主要存儲所有連線客戶的相關(guān)信息及各種狀態(tài),并負(fù)責(zé)游戲客戶之間數(shù)據(jù)的傳遞;游戲客戶端提供給客戶聯(lián)機對戰(zhàn)按鈕,使其能與其他玩家進(jìn)行游戲。由于將服務(wù)器端和客戶端程序放在一起,所以可以減少界面繪制的冗余代碼,使得客戶端和服務(wù)器端使用相同的界面。</p><p><b>
59、3.2 總體設(shè)計</b></p><p> 總體設(shè)計是軟件開發(fā)過程中的另一個重要階段,在這一階段中將根據(jù)需求分析中提出的邏輯模型,合理地完成物理模型的設(shè)計。這個階段的主要目標(biāo)是將反映了用戶信息需求的邏輯方案轉(zhuǎn)換成物理方案,并為下一階段提供必須的技術(shù)資料。</p><p> 總體設(shè)計應(yīng)遵循以下原則:</p><p> ★ 整體性:軟件是作為統(tǒng)一整體
60、而存在的。因此,在總體設(shè)計中要從整個軟件的角度去考慮。</p><p> ★ 靈活性:為保持軟件長久的生命力,要求該軟件具有很強的環(huán)境適應(yīng)性。為此,該軟件必須具有較好的開放性與結(jié)構(gòu)的可變性。</p><p> ★ 可靠性:可靠性是指軟件抵御外界干擾的能力及受外界干擾時的恢復(fù)能力。</p><p> ★ 經(jīng)濟性:經(jīng)濟性是指在滿足游戲軟件需求的前提下,盡可能地減少
61、對游戲的開銷。</p><p> 3.2.1 系統(tǒng)設(shè)計思想</p><p> 通過服務(wù)器的連接,不同的玩家可以連接到各自想?yún)⒓颖荣惖姆?wù)器地址,并開始各自的游戲。通過安全的SOCKET連接交換數(shù)據(jù)。通過多線程,使得每個對戰(zhàn)的雙方不會受到第三方數(shù)據(jù)的干擾。本系統(tǒng)的功能能夠?qū)崿F(xiàn)一個在網(wǎng)絡(luò)上供客戶進(jìn)行對戰(zhàn)的五子棋網(wǎng)絡(luò)游戲,因為是C/S 模式的網(wǎng)絡(luò)游戲,客戶只要連接到服務(wù)器上,就能選擇任何其
62、它用戶已創(chuàng)建好的游戲進(jìn)行對戰(zhàn)游戲。在C/S模式游戲中,Server一般提供所有用戶的全部信息,并能提供客戶之間的信息轉(zhuǎn)發(fā)??蛻糁g的通訊必須通過Server進(jìn)行,因為多個客戶能夠連接到同一臺Server上,所以Server必須用Thread 負(fù)責(zé)每個用戶的通訊和消息處理。</p><p> 客戶連接成功,Server利用特定的客戶Thread連接不斷從客戶讀取數(shù)據(jù),實現(xiàn)客戶和服務(wù)器或者客戶與客戶之間的信息的交互
63、??蛻舳送瑯硬捎玫氖蔷€程控制的思想,在每一個客戶端連接上服務(wù)器后,就為此客戶端啟動一個網(wǎng)絡(luò)收發(fā)數(shù)據(jù)線程。</p><p> 3.2.2 系統(tǒng)總體設(shè)計</p><p> 系統(tǒng)使用Socket 技術(shù)以及java 多線程機制進(jìn)行客戶與服務(wù)端之間信息的交互,但一個真正實用程序必須針對具體應(yīng)用定制一套協(xié)議用于用戶程序之間進(jìn)行交互,而該協(xié)議的定制往往是編寫程序的關(guān)鍵也是核心內(nèi)容,該協(xié)議的完善決定
64、程序是否能夠正常運行。</p><p> 所謂協(xié)議[9]就是程序之間交互的信息的格式規(guī)定, 服務(wù)端和客戶端都遵循該協(xié)議才能夠進(jìn)行對話, 通俗講是人類之間的語言。 </p><p> 3.3 功能模塊及流程</p><p> 3.3.1 系統(tǒng)主要模塊</p><p> 游戲各模塊功能如表3-1:</p><p&g
65、t; 表3-1 各模塊功能</p><p> 同時根據(jù)上面的系統(tǒng)的設(shè)計要求,可以將此網(wǎng)絡(luò)五子棋游戲分為以下五個模塊:</p><p> 初始化模塊:建立棋盤數(shù)組并清零;初始化界面并在屏幕上畫出棋盤。</p><p> 主循環(huán)控制模塊:負(fù)責(zé)控制下棋順序,當(dāng)輪到某方下子時,負(fù)責(zé)將程序流程轉(zhuǎn)到相應(yīng)的模塊中。</p><p> 玩家落子模
66、塊:即用戶在指定落子區(qū)域單擊后,程序就會得到該棋子的坐標(biāo),并且將棋盤數(shù)組中坐標(biāo)處記錄棋子的顏色,1代表白色,2代表黑色,以說明是哪一方下的棋子。</p><p> 勝負(fù)判斷模塊:根據(jù)預(yù)先設(shè)定的五子棋規(guī)則,判斷游戲輸贏。</p><p> 網(wǎng)絡(luò)模塊[10]:網(wǎng)絡(luò)功能的實現(xiàn),使兩臺不同計算機的用戶通過網(wǎng)絡(luò)連接,實現(xiàn)網(wǎng)絡(luò)對弈的功能。</p><p> 網(wǎng)絡(luò)編程的模式
67、和選取</p><p> 網(wǎng)絡(luò)編程模式主要分成兩類: 一種是基于C/S(客戶機/服務(wù)器)模式, 另一種是B/S(瀏覽器/服務(wù)器)式;C/S 程序具有好的交互性, 功能強大, 但是客戶端必須安裝客戶端軟件, 限制了其應(yīng)用; B/S 模式下要求客戶端具有瀏覽器, 但瀏覽器在安全方面有一些限制, 交互性與功能有一些限制網(wǎng)絡(luò)五子棋系統(tǒng)應(yīng)用,所以一般的網(wǎng)絡(luò)五子棋游戲都選用了C/S 模式進(jìn)行實現(xiàn),使用TCP/IP 方式利用
68、Socket 通過傳輸層提供服務(wù)。</p><p> 在Socket工作中,用ClientSocket類建立客戶端連接,用ServerSocket類建立服務(wù)器端連接,這兩個組件分別用來操縱客戶端和服務(wù)器端的Socket對象進(jìn)行連接和傳輸數(shù)據(jù)。在通信過程中,服務(wù)器端應(yīng)用程序先啟動,然后等待客戶端的連接請求。在另外一臺計算機上啟動客戶端應(yīng)用程序,同時輸入服務(wù)器端Socket地址和端口號進(jìn)行選擇服務(wù)器,找到服務(wù)器后就
69、向服務(wù)器端發(fā)請求連接服務(wù)器端,允許連接后即向客戶端Socket收到Accept信號??蛻舳撕头?wù)器端就正式建立起了后, 就可以分別調(diào)用Tserve Rsocket和TClientSocket的Socket屬性和客戶端進(jìn)行數(shù)據(jù)傳輸??蛻舳撕头?wù)器端Socket組件必須設(shè)置相同的端口號。</p><p><b> 服務(wù)器端作用</b></p><p> 服務(wù)器端[11
70、]主要通過建立流連接來連接客戶端,與客戶端進(jìn)行相互通信、轉(zhuǎn)發(fā)信息。接收客戶端的信息,接收信息后按照此客戶端的要求將信息發(fā)送到相應(yīng)的客戶端,服務(wù)器端起到了中轉(zhuǎn)的作用。</p><p> 服務(wù)器類用于接收客戶端的連接,并為每個客戶端在服務(wù)器端啟動唯一的守護(hù)線程,線程主要功能是接收客戶端發(fā)送過來的消息并做出相應(yīng)的處理??蛻舳税l(fā)送到服務(wù)器端的主要消息有兩部分:一部分是客戶端發(fā)送給服務(wù)器端需要服務(wù)器端進(jìn)行處理的,如客戶端
71、發(fā)送過的連接信息、客戶端改名信息、客戶端斷開連接信息等;另一部分是客戶端發(fā)送給服務(wù)器端需要服務(wù)端轉(zhuǎn)發(fā)給其他客戶端的消息,如客戶端給游戲另一方發(fā)送的棋盤狀態(tài)數(shù)據(jù)、聊天信息等。</p><p> 玩家進(jìn)入游戲界面時,如果玩家不想進(jìn)入別人已經(jīng)建立好的游戲中,那也可以自己從界面中建立一個房間,等待其他玩家的進(jìn)入。直接點擊創(chuàng)建房間,這樣一個自己的游戲就建立了,如果有玩家加入游戲,系統(tǒng)會提示某某玩家請求進(jìn)入房間,這時你可以
72、選擇是或者否。游戲各模塊功能跟客服端的模塊相同。</p><p> 服務(wù)器類使用狀況如圖3-1:</p><p> 圖3 -1 服務(wù)器類用況圖</p><p><b> 客戶端作用</b></p><p> 游戲客戶端的主要功能是為了初始化和組織用戶界面,并且定義了各個按鈕的功能。</p>&l
73、t;p> 玩家進(jìn)入游戲界面時,首先提示玩家選擇聯(lián)機對戰(zhàn),當(dāng)玩家選擇聯(lián)機對戰(zhàn)后,會彈出請輸入玩家名的聊天框,輸入玩家名點擊進(jìn)入(在此判斷是否會有相同名稱的玩家名),跳轉(zhuǎn)到另一個玩家界面,再此玩家可以創(chuàng)建房間或者加入已經(jīng)有了的房間。</p><p> 游戲客戶端使用狀況如圖3-2:</p><p> 圖3-2 游戲客戶端用況圖</p><p> 客戶端副
74、類的主要功能是當(dāng)前玩家與其他玩家進(jìn)行對弈時,網(wǎng)絡(luò)客戶端處理需要發(fā)送和接收的消息。</p><p> 圖3-3 棋盤類用況圖</p><p> 4 詳細(xì)設(shè)計及實現(xiàn)</p><p><b> 4.1 系統(tǒng)主流程</b></p><p> 玩家進(jìn)入游戲,選擇聯(lián)機對戰(zhàn),輸入玩家昵稱,進(jìn)入游戲大廳,選擇進(jìn)入房間、創(chuàng)建房
75、間或者轉(zhuǎn)觀戰(zhàn),進(jìn)入房間,進(jìn)入對弈階段。對弈結(jié)束,從新開始。</p><p> 系統(tǒng)主流程如圖4-1:</p><p> 圖4-1 網(wǎng)絡(luò)五子棋游戲流程圖</p><p> 4.2 如何判斷輸贏</p><p> 輸贏的判斷是網(wǎng)絡(luò)五子棋游戲中一個很重要的部分。當(dāng)雙方每放下一個棋子的時候,程序都要進(jìn)行判斷是否已經(jīng)產(chǎn)生了輸贏。如果是,則停止
76、游戲,并發(fā)送結(jié)果給服務(wù)器,服務(wù)器再發(fā)送結(jié)果給對方。橫,豎或者對角線方向上擁有五顆同樣的棋子時,即為勝利。</p><p> 圖4-2 五子棋判斷輸贏示意圖</p><p> 當(dāng)在棋盤中放入一個棋子時,比如白色。程序要計算它左邊連在一起的白色棋子的個數(shù),然后計算右邊與它相連在一起的白色棋子的個數(shù)。再將兩數(shù)相加,如果為四,與自己加起來剛好為五。則白棋獲勝。用同樣的方法在垂直和對角線方向進(jìn)
77、行判斷同色棋子個數(shù)。如果獲勝,則客戶端發(fā)送信息給服務(wù)器,否則由對方下棋,并重復(fù)進(jìn)行相同的運算。</p><p><b> 具體的算法如下:</b></p><p> 1.豎著判斷輸贏的算法:</p><p> public boolean isWin(int i,int j){</p><p> int j1=j
78、-1;</p><p> int count=1;</p><p> while(true){ </p><p> if(j1>=0&&chessBoard[i][j]==chessBoard[i][j1]){</p><p><b> count++;</b></p>
79、<p><b> j1--;</b></p><p><b> }else{</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b>&l
80、t;/p><p><b> j1=j+1;</b></p><p> while(true){ </p><p> if(j1<col&&chessBoard[i][j]==chessBoard[i][j1]){</p><p><b> count++;</b>&l
81、t;/p><p><b> j1++;</b></p><p><b> }else{</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }<
82、;/b></p><p> if(count>=5){</p><p> return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p
83、> 2.橫著判斷輸贏的算法:</p><p> public boolean isWin1(int i,int j){</p><p> int count=1;</p><p> int i1=i-1;</p><p> while(true){ </p><p> if(i1>=0&
84、amp;&chessBoard[i][j]==chessBoard[i1][j]){</p><p><b> count++;</b></p><p><b> i1--;</b></p><p><b> }else{</b></p><p><b>
85、; break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> i1=i+1;</b></p><p> while(true){ </p><p> if(
86、i1<row&&chessBoard[i][j]==chessBoard[i1][j]){</p><p><b> count++;</b></p><p><b> i1++;</b></p><p><b> }else{</b></p><p&g
87、t;<b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(count>=5){</p><p> return true;</p><p><b>
88、 }</b></p><p> return false;</p><p><b> }</b></p><p> 3.斜著(東北方向)判斷輸贏的算法</p><p> public boolean isWin2(int i,int j){</p><p> int cou
89、nt,i1,j1;</p><p><b> count=1;</b></p><p> j1=j+1;i1=i+1;</p><p> while(true){ </p><p> if(i1<row&&j1<col&&chessBoard[i][j]==ch
90、essBoard[i1][j1]){</p><p><b> count++;</b></p><p><b> i1++;</b></p><p><b> j1++;</b></p><p><b> }else{</b></p>
91、<p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> j1=j-1;i1=i-1;</p><p> while(true){ </p><p&g
92、t; if(i1>=0&&j1>=0&&chessBoard[i][j]==chessBoard[i1][j1]){</p><p><b> count++;</b></p><p><b> i1--;</b></p><p><b> j1--;</
93、b></p><p><b> }else{</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(count&g
94、t;=5){</p><p> return true;</p><p><b> }</b></p><p> return false;</p><p><b> }</b></p><p> 4.斜著(西北方向)判斷輸贏的算法</p><
95、p> public boolean isWin3(int i,int j){</p><p> int count,i1,j1;</p><p><b> count=1;</b></p><p> j1=j+1;i1=i-1;</p><p> while(true){ </p>
96、<p> if(i1>=0&&j1<col&&chessBoard[i][j]==chessBoard[i1][j1]){</p><p><b> count++;</b></p><p><b> i1--;</b></p><p><b> j1
97、++;</b></p><p><b> }else{</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> j1
98、=j-1;i1=i+1;</p><p> while(true){ </p><p> if(i1<row&&j1>=0&&chessBoard[i][j]==chessBoard[i1][j1]){</p><p><b> count++;</b></p><p
99、><b> i1++;</b></p><p><b> j1--;</b></p><p><b> }else{</b></p><p><b> break;</b></p><p><b> }</b><
100、/p><p><b> }</b></p><p> if(count>=5){</p><p> return true;</p><p><b> }</b></p><p> return false;</p><p><b&g
101、t; }</b></p><p> 4.3 開發(fā)環(huán)境的搭建</p><p><b> 1.安裝JDK</b></p><p> 從網(wǎng)站上下載免費安裝軟件,并按照要求一步一步安裝。</p><p> 2.安裝MyEclipse</p><p> 從官方網(wǎng)站上下載免費壓縮包,在
102、jdk安裝目錄下,解壓此壓縮包即可。</p><p><b> 3.配置環(huán)境變量</b></p><p> 在環(huán)境變量的配置中,假設(shè)JDK的安裝目錄為D:\Program Files\Java\jdk1.6.0_10</p><p><b> 環(huán)境變量PATH</b></p><
103、p> 方法一:在c:\Autoexe.bat文件的底部或者最后以后一個path命令之后,輸入:SET PATH=%PATH%;D:\Program Files\Java\jdk1.6.0_10\bin</p><p> 方法二:在“系統(tǒng)屬性”對話框中 直接設(shè)置環(huán)境變量:PATH=……;D:\Program Files\Java\jdk1.6.0_10\bin; </p><p>
104、; 4.4 功能模塊的界面實現(xiàn)</p><p> 界面是軟件與用戶交互的最直接的層,界面的好壞決定用戶對軟件的第一印象。而且設(shè)計良好的界面能夠引導(dǎo)用戶自己完成相應(yīng)的操作,起到向?qū)У淖饔?。同時界面如同人的面孔,具有吸引用戶的直接優(yōu)勢。設(shè)計合理的界面能給用戶帶來輕松愉悅的感受和成功的感覺,相反由于界面設(shè)計的失敗,讓用戶有挫敗感,再實用強大的功能都可能在用戶的畏懼與放棄中付諸東流。一個好的按鈕名稱應(yīng)該是易懂的,用詞
105、準(zhǔn)確的,屏棄模楞兩可的字眼,要與同一界面上的其它按鈕易于區(qū)分,能望文知意最好。理想的情況是用戶不用查閱幫助就能知道該界面的功能并進(jìn)行相關(guān)的正確操作。通常界面設(shè)計都按Windows 界面的規(guī)范來設(shè)計,可以說:界面遵循規(guī)范化的程度越高,則易用性相應(yīng)的就越好。</p><p> 本系統(tǒng)軟件界面有以下幾個功能:聯(lián)機對戰(zhàn)、輸入玩家姓名、創(chuàng)建房間、觀戰(zhàn)和退出等按鈕。點擊“開始游戲”按鈕,在界面中的展示如圖4-3,4-4,4
106、-5,4-6:</p><p><b> 圖4-3 聯(lián)機對戰(zhàn)</b></p><p> 開始游戲(聯(lián)機對戰(zhàn))</p><p> 圖4-4 玩家登錄注冊</p><p> 輸入玩家昵稱,同時判斷是否有已存在的玩家,若有重新輸入。</p><p><b> 圖4-5 游戲大廳<
107、;/b></p><p> 游戲大廳包括:轉(zhuǎn)觀戰(zhàn),創(chuàng)建房間,進(jìn)入房間(同時可以處理一些消息)</p><p><b> 圖4-6 玩家對戰(zhàn)</b></p><p> 五子棋對戰(zhàn)界面包括:新開,悔棋,放棄,求和,退出,聊天框功能(同時處理一些消息)</p><p><b> 5 軟件的測試<
108、/b></p><p> 5.1 軟件測試的方法</p><p> 軟件測試就是利用測試工具按照測試方案和流程對產(chǎn)品進(jìn)行功能和性能測試,甚至根據(jù)需要編寫不同的測試工具,設(shè)計和維護(hù)測試系統(tǒng),對測試方案可能出現(xiàn)的問題進(jìn)行分析和評估。執(zhí)行測試用例后,需要跟蹤故障,以確保開發(fā)的產(chǎn)品符合需求。</p><p><b> 軟件測試的目的:</b&g
109、t;</p><p> ★ 測試并不僅僅是為了找出錯誤。通過分析錯誤產(chǎn)生的原因和錯誤的發(fā)生趨勢,可以幫助項目管理者發(fā)現(xiàn)當(dāng)前軟件開發(fā)過程中的缺陷,以便改進(jìn)。</p><p> ★ 這種分析能幫助測試人員設(shè)計出有針對性的測試方法,改善測試的效率。</p><p> ★ 沒有發(fā)現(xiàn)錯誤的測試也是有價值的。完整的測試是評定軟件質(zhì)量的重要方法。</p>
110、<p><b> 軟件測試的方法:</b></p><p> 軟件測試可以分為黑盒測試和白盒測試。</p><p> 黑盒測試就是測試要在軟件的接口處進(jìn)行。這種方法是把測試內(nèi)容看做一個盒子,程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性不被測試人員考慮,只依據(jù)程序的需求規(guī)格說明書來檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或數(shù)據(jù)驅(qū)動測試。黑盒測試主要
111、是為了發(fā)現(xiàn)以下4種錯誤:</p><p> ★ 是否有不正確或遺漏的功能。</p><p> ★ 在接口上,輸入是否能正確的接受。能否輸出正確的結(jié)果。</p><p> ★ 是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息訪問錯誤。</p><p> ★ 是否有初始化和終止性的錯誤。</p><p> 白盒測試是細(xì)致檢查
112、軟件的過程性細(xì)節(jié)。此方法就是叫測試人員把軟件看成一個打開的盒子一樣,測試人員可以利用程序內(nèi)部的邏輯結(jié)構(gòu),設(shè)計及相關(guān)信息選擇測試用例,測試程序所有邏輯路徑。測試不同點的程序狀態(tài)來確定所測試出來的是否和預(yù)測的狀態(tài)相同。白盒測試又被叫做結(jié)構(gòu)測試或者邏輯驅(qū)動測試。白盒測試主要是相對進(jìn)行的。</p><p><b> 如下程序模塊檢查:</b></p><p> ★ 對程
113、序模塊的所有獨立的執(zhí)行路徑至少測試一遍。</p><p> ★ 對所有的邏輯判定,取“真”與取“假”的兩種情況至少測一遍。</p><p> ★ 測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等等。</p><p> 由以上的分析,本游戲采用的是黑盒測試的方法。</p><p> 具體測試結(jié)果如表5-1:</p><p>
114、表5-1 網(wǎng)絡(luò)客戶端功能測試</p><p> 用例測試結(jié)果:正確。</p><p><b> 6 總結(jié)語</b></p><p> 通過幾個月的對軟件系統(tǒng)的設(shè)計和實現(xiàn),一個能夠完成網(wǎng)絡(luò)對弈的五子棋游戲基本實現(xiàn)。全部的總結(jié)工作,具體概括如下:</p><p> 論文首先研究對比了網(wǎng)絡(luò)五子棋游戲的具體優(yōu)勢,分析
115、了C/S和B/S模式的各自的優(yōu)缺點。對應(yīng)系統(tǒng)的具體要求,構(gòu)建了基于C/S模式的網(wǎng)絡(luò)五子棋對戰(zhàn)的基本設(shè)計。</p><p> 采用了網(wǎng)絡(luò)編程中的一種,Socket編程,分析了Socket通信的基本原理及實現(xiàn)。</p><p> 完成了網(wǎng)絡(luò)五子棋對弈系統(tǒng)的總體的方案設(shè)計,以Java為編程語言基礎(chǔ),以MyEclipse為五子棋游戲的開發(fā)工具,完成了系統(tǒng)各模塊的設(shè)計,其中包括服務(wù)器模塊、客戶端
116、模塊以及美化界面方面的設(shè)計。</p><p> 雖然網(wǎng)絡(luò)五子棋這款游戲?qū)崿F(xiàn)了基本的設(shè)計,但是需要改進(jìn)的地方還有很多,早這里我首先感謝一下我的指導(dǎo)老師孫晨霞老師,在程序設(shè)計和規(guī)劃上給了我很多實質(zhì)性的建議,但是我個人認(rèn)為需要改進(jìn)的地方還有有以下幾點:</p><p> 游戲界面還是不夠美化,程序設(shè)計還是存在些許冗余,不能高效率的在個人PC上運行。</p><p>
117、 對游戲邏輯模塊進(jìn)行優(yōu)化,進(jìn)一步提高可擴展性,以適應(yīng)將來新的需求和變化。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 耿祥義、張躍平:Java基礎(chǔ)教程(第2版),清華大學(xué)出版社,2007.05,P10-P12</p><p> [2] Harvey M.Deitel,P.J.Deitel:Java大學(xué)基礎(chǔ)教程,劉
118、曉莉,周璐,錢方,等譯,機械工業(yè)出版社,2006.01,P20-P25</p><p> [3] 吳春煌:科技論文寫作,中山大學(xué)出版社,2001.07,P15-P35</p><p> [4] Oaks, Scott:java Threads,Third Edition,O'Reilly Media Inc,2004.03, P12-P20</p><p&g
119、t; [5] 馮博、應(yīng)群:面向?qū)ο蟮腏ava網(wǎng)絡(luò)編程。清華大學(xué)出版社,2004.11,P152-P155</p><p> [6] 孫晨霞、楊興運:Java程序設(shè)計。中國計劃出版社2007.8,P188-P191</p><p> [7]孫更新等:Java畢業(yè)設(shè)計指南與項目實踐,科學(xué)出版社,2008.03,P78-P88</p><p> [8] 單文仁:J
120、ava在我國的應(yīng)用現(xiàn)狀和發(fā)展趨勢,科技成果縱橫,2007.02,P132-P155</p><p> [9] 孫衛(wèi)琴:JAVA面向?qū)ο缶幊?,電子工業(yè)出版社,2006.07,P65-P69</p><p> [10] 朱福喜、黃昊著:Java項目開發(fā)與畢業(yè)設(shè)計指導(dǎo),北京:清華大學(xué)出版社,2008.05,P54-P65</p><p> [11] 郭驊:Java網(wǎng)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于java的“網(wǎng)絡(luò)版五子棋”游戲的設(shè)計和實現(xiàn)
- 基于Java的“網(wǎng)絡(luò)版五子棋”游戲的設(shè)計和實現(xiàn).doc
- java五子棋游戲畢業(yè)論文
- 基于java的五子棋游戲的設(shè)計——畢業(yè)論文
- 畢業(yè)論文---網(wǎng)絡(luò)五子棋游戲設(shè)計
- 基于java的五子棋游戲設(shè)計
- 五子棋游戲設(shè)計畢業(yè)論文
- 畢業(yè)論文——五子棋游戲設(shè)計
- 基于網(wǎng)絡(luò)和java語言的網(wǎng)絡(luò)五子棋游戲
- 五子棋游戲的設(shè)計與實現(xiàn)【畢業(yè)論文】
- 基于java的五子棋游戲的設(shè)計
- java五子棋畢業(yè)設(shè)計--java五子棋對弈程序的設(shè)計與實現(xiàn)
- 網(wǎng)絡(luò)五子棋的設(shè)計與實現(xiàn)-畢業(yè)論文
- 基于vc的五子棋游戲設(shè)計與實現(xiàn)【畢業(yè)論文】
- 基于java五子棋游戲開發(fā)
- 基于java的五子棋小游戲
- 基于android的五子棋游戲的設(shè)計畢業(yè)論文
- 基于java的五子棋游戲的設(shè)計(源代碼+論文)
- 五子棋畢業(yè)論文-html開發(fā)五子棋的原型設(shè)計
- java五子棋畢業(yè)設(shè)計論文
評論
0/150
提交評論