版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p> 網(wǎng)絡(luò)五子棋的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 摘要</b></p><p> 1997年,伴隨計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)的發(fā)展,第一款圖形網(wǎng)絡(luò)游戲《網(wǎng)絡(luò)創(chuàng)世
2、界》問(wèn)世,應(yīng)用計(jì)算機(jī)與網(wǎng)絡(luò)的高尖端技術(shù),融合傳統(tǒng)的試聽(tīng)與數(shù)字娛樂(lè)精華,集娛樂(lè),競(jìng)技,互動(dòng)于一體,迅速風(fēng)靡全球。自此拉開(kāi)網(wǎng)絡(luò)游戲的序幕。</p><p> 目前,PK已經(jīng)成為現(xiàn)在人生活的一部分,人們以不同的方式通過(guò)網(wǎng)絡(luò)來(lái)娛樂(lè),休閑。五子棋是一種兩人對(duì)已的純策略型的棋類(lèi)游戲,似起源于中國(guó)古代的傳統(tǒng)的黑白棋種之一,發(fā)展與日本,流行于歐美。通過(guò)一系列的變化,使五子棋這一簡(jiǎn)單的游戲系統(tǒng)化,規(guī)范化,最終成為今天的職業(yè)連珠五
3、子棋,同事也成為一種國(guó)際比賽棋,它不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性,容易學(xué)會(huì),趣味橫生,引人入勝。本程序是eclipse平臺(tái)下的一個(gè)小程序,使用JAVA語(yǔ)言,通過(guò)對(duì)Socket技術(shù)的理解,實(shí)現(xiàn)客戶端與服務(wù)器之間的鏈接,利用多線程技術(shù)來(lái)處理服務(wù)器與客戶端的數(shù)據(jù)傳輸,通信,實(shí)現(xiàn)程序的聊天內(nèi)容,是的客戶端和服務(wù)器之間能夠同步的進(jìn)行處理。</p><p> 通過(guò)對(duì)本游戲的開(kāi)發(fā),更深入的理解了面
4、向?qū)ο蟮母拍钜约懊嫦驅(qū)ο箢A(yù)言的一些問(wèn)題的優(yōu)勢(shì),也對(duì)線程的理解更加理解。</p><p> 關(guān)鍵字:JAVA 線程 數(shù)據(jù)傳輸 五子棋 eclipse 網(wǎng)絡(luò) socket</p><p><b> Abstract</b></p><p> In 1997, along with the development of computer tec
5、hnology and network, the first graphics network game "network world", the application of computer and network of sophisticated technology, the fusion of traditional audio-visual and digital entertainment essenc
6、e, entertainment, athletics, interactive as a whole, quickly catch on around the world. Since then kick network game.</p><p> Currently, PK has become now a part of life, people in different ways through th
7、e network to entertainment and leisure. Gobang is one kind of two people to have pure strategy type chess game, originated in ancient Chinese traditional black white kind of like, one of the development in Japan, popular
8、 in Europe and the United States. Through a series of changes, the simple game gobang systematization, standardization and eventually become today's professional renju renju colleagues also become an </p><
9、p> Through the development of this game, more in-depth understanding of the concept of object oriented and object oriented predicted that some of the problems of advantage, also understand more understanding of the t
10、hread.</p><p> Key words: JAVA thread gobang the eclipse data transmission network</p><p><b> 目錄</b></p><p> 摘要·······
11、83;·························1</p><p> Abstract······
12、;·························2</p><p><b> 1.概述 </b></p><p>
13、 1.1:五子棋的發(fā)展························4</p><p> 1.1.1五子棋的研究背景····
14、83;·················4</p><p> 1.1.2五子棋的研究意義·············
15、·········5</p><p> 1.2:傳統(tǒng)五子棋和網(wǎng)絡(luò)五子棋···················5</p>
16、<p> 1.3五子棋的稱(chēng)謂·························5</p><p> 2開(kāi)發(fā)環(huán)境與編程語(yǔ)言</p><
17、p> 2.1開(kāi)發(fā)與運(yùn)行環(huán)境························6</p><p> 2.1.1開(kāi)發(fā)環(huán)境····
18、183;····················6</p><p> 2.1.2運(yùn)行環(huán)境··········
19、83;··············6</p><p> 2.2編程語(yǔ)言·················
20、···········6</p><p> 3.網(wǎng)絡(luò)五子棋的需求分析與總體設(shè)計(jì)</p><p> 3.1需求分析··············
21、;·············8</p><p> 3.1.1功能需求··················
22、········8</p><p> 3.1.2用戶界面需求·······················
23、;·8</p><p> 3.2總體設(shè)計(jì)···························8</p><p&g
24、t;<b> 4.構(gòu)架</b></p><p> 4.1客戶端的實(shí)現(xiàn)·························10</p>
25、;<p> 4.2客戶端的功能···························14</p><p> 4.3服務(wù)器端的實(shí)現(xiàn)
26、·························16</p><p> 4.4服務(wù)器端的功能······
27、;···················18</p><p> 4.5客戶端與服務(wù)器端的鏈接···········
28、··········19</p><p><b> 5.結(jié)論與體會(huì)</b></p><p> 5.1:經(jīng)驗(yàn)總結(jié)·············
29、·············21</p><p> 5.2發(fā)開(kāi)的心得體會(huì)··················
30、;······21</p><p> 參考文獻(xiàn)·························
31、3;····22</p><p><b> 1.概述</b></p><p><b> 1.1五子棋的發(fā)展</b></p><p> 五子棋相傳起源于四千多年前的堯帝時(shí)期,比圍棋的歷史還要悠久,可是早在“堯造圍棋”之前,民間就已有五子棋游戲。在上古的神話傳說(shuō)中有“女?huà)z造人,伏羲
32、做棋”一說(shuō),《增山海經(jīng)》中記載:“休輿之山有石焉,名曰帝臺(tái)之棋,五色而文狀鵪卵?!边h(yuǎn)古以來(lái)就以漂亮的石子為棋,因而規(guī)則剪發(fā)的五子棋也可能出自當(dāng)時(shí),并是用石子作為棋子。亦有傳說(shuō),五子棋最初流行于少數(shù)民族地區(qū),以后漸漸演變成圍棋并在炎黃子孫后代中演變開(kāi)來(lái)。</p><p> 五子棋不僅增強(qiáng)思維能力,體改智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短,平,快”,又有古典哲學(xué)的高深學(xué)問(wèn)“陰陽(yáng)易禮”
33、;既有簡(jiǎn)單易學(xué)的特征,又為廣大人民群眾所喜聞樂(lè)見(jiàn),又有深?yuàn)W的技巧和高中水平的國(guó)際性比賽;棋文化源遠(yuǎn)流長(zhǎng),具有東方的神秘河西方的直觀;既有“場(chǎng)”的概念,亦有“點(diǎn)”的鏈接。他是中西方的交流電,是古今哲學(xué)的結(jié)晶。</p><p> 隨著1996年中央電視臺(tái)(CCTV-5)《黑白世界-五子棋講座》的開(kāi)播和中國(guó)五子棋網(wǎng)上比賽的開(kāi)通,將世界連珠五子棋運(yùn)動(dòng)的最新?tīng)顩r及時(shí)展現(xiàn)在眼前,為五子棋愛(ài)好者提供了盡情參與的機(jī)會(huì),這無(wú)疑對(duì)
34、國(guó)內(nèi)的普及、發(fā)展起到了推動(dòng)的作用。北京連珠五子棋體育文_化交流中心已擁有了22位國(guó)際段位棋手,他們肩負(fù)著新的歷史使命,不斷為中國(guó)五子棋愛(ài)好者提供立足國(guó)內(nèi)、面向世界、一展才華的機(jī)會(huì)。我國(guó)于1998年8月成功地舉辦了第二屆世界杯青少年錦標(biāo)賽,1999年7月將在北京舉辦第六屆世界杯冠軍賽,2000年舉辦第三屆世界杯團(tuán)體賽。在北京的帶動(dòng)下,全國(guó)其他地區(qū)也先后成立了五子棋組織。河北廊坊地區(qū)成立了廊坊五子棋協(xié)會(huì);天津市成立了由天津市體委領(lǐng)導(dǎo)的天津市
35、五子棋工作委員會(huì);上海、云南、杭州等地也都成立了五子棋的組織。五子棋的發(fā)展在中國(guó)出現(xiàn)方興未艾之勢(shì)。</p><p> 1.1.1五子棋的研究背景</p><p> 隨著近幾年的軟件技術(shù)的不斷進(jìn)步,不斷完善,軟件游戲的操作要求越來(lái)越簡(jiǎn)單,大多數(shù)游戲普通人學(xué)幾分鐘就能玩,甚至連來(lái)年人也慢慢愛(ài)上了它。</p><p> 第二次世界大戰(zhàn)以后,電子計(jì)算機(jī)技術(shù)得到突飛猛進(jìn)
36、的發(fā)展,在眾多國(guó)家中美國(guó)的計(jì)算機(jī)技術(shù)發(fā)展最為迅速。1946年世界第一臺(tái)數(shù)字計(jì)算機(jī)在美國(guó)賓夕法尼亞大學(xué)建造完成。電子計(jì)算機(jī)的問(wèn)世,代表了電子數(shù)字計(jì)算機(jī)的到來(lái),具有掛時(shí)代的意義。在1956年我國(guó)研制成功國(guó)產(chǎn)計(jì)算機(jī)。1958年和1959年我國(guó)先后研制成功國(guó)產(chǎn)小型和大型電子計(jì)算機(jī)。后來(lái)出現(xiàn)了繼承電路和大規(guī)模集成電路,是電子計(jì)算機(jī)一代一代實(shí)現(xiàn)更新,性能越來(lái)越高,計(jì)算速度越來(lái)越快,硬件方面的不斷發(fā)展促使了阮籍技術(shù)也迅速發(fā)展。目前,網(wǎng)絡(luò)上我們經(jīng)長(zhǎng)看到
37、的大型3D網(wǎng)絡(luò)游和WEBGAME網(wǎng)頁(yè)游戲等都是通過(guò)3DMAX,MAYA,FLASH等編程語(yǔ)言像結(jié)合而發(fā)展出來(lái)的,所以叫游戲軟件。</p><p> 1.1.2五子棋的研究意義</p><p> 近年,國(guó)產(chǎn)網(wǎng)絡(luò)游戲發(fā)展迅速,出現(xiàn)了比較熱門(mén)的角色扮演類(lèi)游戲、即時(shí)戰(zhàn)略類(lèi)游戲、動(dòng)作射擊類(lèi)游戲等等。但是,國(guó)產(chǎn)網(wǎng)絡(luò)游戲在繼續(xù)迅猛發(fā)展的時(shí)候,也暴露出一些弊端,主要表現(xiàn)在網(wǎng)絡(luò)游戲產(chǎn)品的內(nèi)容和模式等方面
38、,如網(wǎng)游服務(wù)器負(fù)載太重、資源消耗太大、游戲內(nèi)容簡(jiǎn)單、模式單調(diào)乏味、網(wǎng)絡(luò)對(duì)戰(zhàn)還不能實(shí)現(xiàn)等等。因?yàn)闆](méi)能提供用戶真正期望的開(kāi)發(fā)環(huán)境。此外,隨著用戶量增加,服務(wù)器負(fù)載較大,造成了系統(tǒng)效率下降和健壯性的削弱,代價(jià)高,效率低,這些都是系統(tǒng)在網(wǎng)絡(luò)游戲發(fā)展上的瓶頸。此次開(kāi)發(fā)網(wǎng)絡(luò)五子棋,使網(wǎng)游服務(wù)器負(fù)載減輕,資源消耗大大減少,實(shí)現(xiàn)了網(wǎng)絡(luò)中倆人的對(duì)戰(zhàn)。</p><p> 1.2 傳統(tǒng)五子棋和網(wǎng)絡(luò)五子棋</p><
39、;p> 傳統(tǒng)五子棋僅提供了“單人模式”和“雙人模式”。其中“單人模式”是指,人與計(jì)算機(jī)進(jìn)行對(duì)弈,計(jì)算機(jī)按照事先編號(hào)的算法程序進(jìn)行下棋;而“雙人模式”是指,兩個(gè)人通過(guò)交替使用同一臺(tái)計(jì)算機(jī)來(lái)進(jìn)行下棋。無(wú)論哪種模式,都必須在同一臺(tái)計(jì)算機(jī)上來(lái)完成,無(wú)法異地下棋,因此叫單機(jī)五子棋。</p><p> 隨著網(wǎng)絡(luò)的迅猛發(fā)展,異地計(jì)算機(jī)開(kāi)始通信,異地的用戶通過(guò)網(wǎng)絡(luò)來(lái)進(jìn)行下棋,在勝負(fù)判別方面,單機(jī)版五子棋和網(wǎng)絡(luò)版五子棋并
40、沒(méi)有什么區(qū)別,只是網(wǎng)絡(luò)版的玩家雙方各自有一套勝負(fù)判別的程序。當(dāng)一方玩家下一步棋后,他的勝負(fù)判別程序就執(zhí)行一次,然后再將落子的信息傳給對(duì)方,對(duì)方的勝負(fù)判別程序也將執(zhí)行一次。就這樣就完成一次勝負(fù)的判別過(guò)程。</p><p><b> 1.3五子棋的稱(chēng)謂</b></p><p> 五子棋,日文亦有“連五子、五子連、串珠、五目、五目碰、五格、五石、五法、五聯(lián)、京棋”等多種
41、稱(chēng)謂,英文則稱(chēng)之為“FIR (Five In A Row的縮寫(xiě))、Gomoku(日語(yǔ)“五目”的羅馬拼音)、Gobang、connect 5、mo-rphion”。捷克語(yǔ)piskvorky,韓語(yǔ)omok……</p><p> 許多國(guó)家的人對(duì)五子棋都有不同的愛(ài)稱(chēng),例如,韓國(guó)人把五子棋稱(chēng)為“情侶棋”,暗示情人之間下五子棋有利于增加情感的交流;歐洲人稱(chēng)其為“紳士棋”,代表下五子棋的君子風(fēng)度勝似紳士;日本人則稱(chēng)其為“中老
42、年棋”,說(shuō)明五子棋適合中老年人的生理特點(diǎn)和思維方式;美國(guó)人喜歡將五子棋稱(chēng)為“商業(yè)棋”,也就是說(shuō),商人談生意時(shí)可邊下棋邊談生意,棋下完了生意也談成了。</p><p> 2.開(kāi)發(fā)環(huán)境與編程語(yǔ)言</p><p> 2.1開(kāi)發(fā)與運(yùn)行環(huán)境</p><p> 2.1.1 開(kāi)發(fā)環(huán)境</p><p> Intel Pentium 4|2.0GH
43、z,512M內(nèi)存,80G硬盤(pán)Microsoft Windows7 Professional</p><p><b> Eclipse </b></p><p><b> 2.1.2運(yùn)行環(huán)境</b></p><p> 本游戲?qū)儆谝豢钚蓍e游戲,要求的運(yùn)行環(huán)境為Intel Pentium 2及以上的處理器,32M以上的內(nèi)
44、存,20M以上的硬盤(pán)空間,Microsoft Windows 2000或XP及以上的系統(tǒng)。800*6—或以上的分辨率。</p><p><b> 2.2編程語(yǔ)言</b></p><p> 1990年12月,SUN MicroSystem公司成立了一個(gè)名為(Green Team)綠色項(xiàng)目的小組,Jame Gosling(Java之父),Bill Joe等人便是該小組
45、的成員,小組成立的初衷是為了開(kāi)發(fā)一種能夠在電視,控制烤箱等家用消費(fèi)類(lèi)電子產(chǎn)品上進(jìn)行交互式操作的分布式的系統(tǒng)框架,就這樣一個(gè)名為Oak的軟件誕生了。</p><p> 1992年9月3日(Green Team)綠色項(xiàng)目小組展示了Start7手持設(shè)備,它類(lèi)似于今天的PDA,這個(gè)設(shè)備中的程序就是用Oak程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)的,Oak的名字由來(lái)是因?yàn)镴ames Gosing的辦公窗外有一棵橡樹(shù),根據(jù)這橡樹(shù)命名。但是,在注冊(cè)
46、商標(biāo)時(shí)卻發(fā)現(xiàn)這個(gè)名字已經(jīng)被別的公司占用了,后來(lái)更名為Java(據(jù)說(shuō)是以當(dāng)時(shí)開(kāi)發(fā)小組島上的一種咖啡命名)</p><p> 1993年,全世界第一個(gè)Internet網(wǎng)頁(yè)瀏覽器Mosaic誕生了,,James Gosling認(rèn)為Internet與Java特性不謀而合,便使用Java在Internet平臺(tái)上編寫(xiě)出高交互性的網(wǎng)頁(yè)程序,這就是Java Applet??梢詫?shí)現(xiàn)一些類(lèi)似時(shí)鐘,統(tǒng)計(jì)圖等網(wǎng)頁(yè)特效,是在那個(gè)年代,其
47、他程序設(shè)計(jì)語(yǔ)言所不能達(dá)到的。</p><p> 1995年,Oak被命名為Java編程語(yǔ)言,并于5月23日正式對(duì)外發(fā)布了JDK 1.0版本,Java語(yǔ)言也就因此正式誕生了。</p><p> 1997年,三周內(nèi)超過(guò)22萬(wàn)的開(kāi)發(fā)者下載了JDK1.1軟件,超過(guò)8,000名開(kāi)發(fā)者參加了JavaOne大會(huì),Java Card 2.0平臺(tái)發(fā)布。隨后98年JDK 1.1正式發(fā)布,其被下載次數(shù)超過(guò)2
48、00萬(wàn),VISA公司應(yīng)用Java Card技術(shù)推出了世界上首張智能卡,Java社區(qū)(JCP)成立。</p><p> 1999年,Java 2平臺(tái)源代碼公開(kāi),JavaOne大會(huì)參會(huì)人數(shù)增長(zhǎng)到 20,000人,J2EE veta軟件發(fā)布。</p><p> 2002年J2EE SDK下載次數(shù)達(dá)200萬(wàn),78%的決策者認(rèn)為,J2EE技術(shù)是具有影響力的網(wǎng)絡(luò)構(gòu)建開(kāi)發(fā)平臺(tái)。</p>
49、<p> 2004年 Java 2 Platform,Stadard Edition 5發(fā)布,利用Java技術(shù)開(kāi)發(fā)的火星探測(cè)器成功登陸火星, Sun Java Studio Creator發(fā)布</p><p> 2005年,JavaOne大會(huì)召開(kāi),SUN公司公開(kāi)Java SE 6.此時(shí),Java的各種版本已經(jīng)更名,以取消其中的數(shù)字”2”:J2EE更名為 Java EE,J2SE更名為Java SE
50、,J2ME更名為Java ME。</p><p> 到目前為止,J2SE已經(jīng)發(fā)展為一個(gè)覆蓋面廣、效率高、易用性強(qiáng)的技術(shù)平臺(tái),但Java并沒(méi)有停止前進(jìn)的腳步。Mustang版本的J2SE正在緊鑼密鼓的開(kāi)發(fā)當(dāng)中,按以前的慣例,每?jī)赡陼?huì)發(fā)布一個(gè)全新的J2SE版本,所以Mustang開(kāi)發(fā)版對(duì)應(yīng)的J2SE6.0發(fā)布版將在2006年完成。 J2SE6.0 Specification Lead是Sun公司老資格的開(kāi)發(fā)者M(jìn)ar
51、k Reinhold,我們?cè)贘2SE1.2中就能看到他的影子。</p><p> Mark Reinhold曾經(jīng)是NIO(新 的I/O處理) API的Specification Lead,現(xiàn)在是Sun的J2SE架構(gòu)師與總工程師。Mark Reinhold透露說(shuō),J2SE6.0將更易于管理,可以給外部的管理軟件提供更多信息。它可以讓調(diào)試軟件在程序運(yùn)行的時(shí)候進(jìn)行檢查,而不是在運(yùn)行之前,這樣更容易找到問(wèn)題所在。他說(shuō),
52、J2SE6.0將會(huì)更好地和圖形用戶界面集成,包括微軟即將發(fā)布的Windows版Longhorn2005年3月23日是Java技術(shù)十周年慶典日,在這十年的發(fā)展中,Java平臺(tái)吸引了四百萬(wàn)開(kāi)發(fā)者,在網(wǎng)絡(luò)計(jì)算遍及全球的今天,更是有17.5億臺(tái)設(shè)備使用了Java技術(shù)。作為Java技術(shù)的基礎(chǔ),J2SE的功績(jī)不可掩沒(méi),我們期望J2SE伴隨Java</p><p><b> 平臺(tái)一路走好。</b><
53、;/p><p> 3.網(wǎng)絡(luò)五子棋的需求分析與總體設(shè)計(jì)</p><p><b> 3.1需求分析</b></p><p> 軟件的需求分析是軟件生存期中重要的一步,也是決定性的一步。只有通過(guò)需求分析才能把軟件功能和性能的總體概念描述為具體的軟件需求規(guī)格說(shuō)明,從而奠定軟件開(kāi)發(fā)的基礎(chǔ)。</p><p> 在此階段,了解用戶
54、要求本軟件必須滿足的所有功能和限制,以及用戶對(duì)軟件功能和性能的要求,弄清用戶想要軟件“做什么”,準(zhǔn)確地表達(dá)用戶的要求。</p><p><b> 3.1.1功能需求</b></p><p><b> ●能通過(guò)網(wǎng)絡(luò)下棋</b></p><p> ●符合五子棋的基本規(guī)則</p><p> ●提供
55、水平坐標(biāo)和垂直坐標(biāo)的功能</p><p><b> ●可提供聊天功能</b></p><p> 3.1.2用戶界面需求</p><p><b> ●界面友好親切</b></p><p><b> ●界面干凈整潔</b></p><p> ●操作
56、界面直觀,不繁瑣</p><p><b> 3.2總體設(shè)計(jì)</b></p><p> 在需求分析結(jié)束后,已經(jīng)弄清楚了軟件的各種需求,較好地解決了用戶要軟件“做什么”的問(wèn)題,接下來(lái)就將著手實(shí)現(xiàn)軟件的需求,即要著手解決“怎么做”的問(wèn)題。</p><p> 在這個(gè)階段著重實(shí)現(xiàn)需求的程序模塊設(shè)計(jì)問(wèn)題,并將需求轉(zhuǎn)化為軟件的系統(tǒng)結(jié)構(gòu),進(jìn)行模塊的劃分,
57、確定每個(gè)模塊的功能、接口及模塊之間的調(diào)用關(guān)系。根據(jù)需求分析制訂出整個(gè)軟件的系統(tǒng)結(jié)構(gòu)圖。</p><p> 如圖2.1所示:對(duì)于服務(wù)器端,制定服務(wù)器端的地址和端口,然后在Socket上監(jiān)聽(tīng)客戶端的請(qǐng)求,此時(shí)如果有客戶端已建立Socket樹(shù)且發(fā)送了連接請(qǐng)求,此時(shí)客戶端和服務(wù)器就創(chuàng)建了連接,如果服務(wù)器端有其他的連接就阻塞此次連接,客戶端再次發(fā)出請(qǐng)求,如果此時(shí)阻塞已沒(méi)有,客戶端和服務(wù)器就建立連接,接受用戶請(qǐng)求信息,處理
58、請(qǐng)求信息,將結(jié)果反饋給客戶端,客戶端接受到了服務(wù)結(jié)果。</p><p><b> 4.構(gòu)架</b></p><p> 選用了C/S模式進(jìn)行實(shí)現(xiàn),網(wǎng)絡(luò)內(nèi)部使用TCP/IP方式利用SOCKET 通過(guò)傳輸層提供的服務(wù),使用Java進(jìn)行圖形用戶的搭建,系統(tǒng)分為兩個(gè)部分為服務(wù)器端程序和客戶端程序。</p><p><b> 4.1客戶端實(shí)
59、現(xiàn)</b></p><p><b> 客戶端設(shè)有五個(gè)按鈕</b></p><p><b> ?。?)鏈接主機(jī)</b></p><p> 在開(kāi)始游戲前必須鏈接服務(wù)器,IP為本地的端口號(hào),鏈接主機(jī)后,會(huì)有第一個(gè)用戶進(jìn)入到游戲中。如圖4.2</p><p><b> (2)建立
60、游戲</b></p><p> 在鏈接完主機(jī)后,按下建立游戲按鈕,第一個(gè)用戶就建立了游戲。如圖4.3</p><p><b> ?。?)加入游戲</b></p><p> 當(dāng)?shù)谝粋€(gè)游戲者創(chuàng)建完游戲后,在進(jìn)來(lái)的用戶可以加入到與第一個(gè)創(chuàng)建游戲的用戶游戲中,再加入游戲前,必須選定一個(gè)有效用戶,然后兩個(gè)人才能進(jìn)行網(wǎng)絡(luò)五子棋的對(duì)抗游戲,如
61、圖4.4</p><p><b> (4)放棄游戲</b></p><p> 如果用戶創(chuàng)建完游戲后不想進(jìn)行游戲了,可以按下放棄游戲按鈕,自動(dòng)退出游戲,如圖4.5</p><p><b> (5)關(guān)閉程序</b></p><p> 在不想進(jìn)行游戲時(shí)可以直接關(guān)閉程序,如圖4.6</p>
62、;<p><b> ?。?)聊天系統(tǒng)</b></p><p> 兩個(gè)游戲者可以進(jìn)行聊天,方便用戶的交流,本軟件可以容納50個(gè)人在線下棋聊天。如圖4.7</p><p><b> 4.2客戶端的功能</b></p><p> 客戶端是接受服務(wù)器端所有用戶,用于用戶玩游戲的界面操作。</p>
63、<p><b> 分析如下:</b></p><p> ?、賑hessClient有一個(gè)ServerSocket來(lái)開(kāi)啟網(wǎng)絡(luò)服務(wù),接受Socket,有了該類(lèi)就可以進(jìn)行網(wǎng)絡(luò)對(duì)弈,對(duì)弈時(shí),客戶端下棋之后,在服務(wù)器端應(yīng)該馬上顯示客戶端下棋的位置,以保持游戲的同步,再有贏棋的時(shí)候雙方都有提示性話語(yǔ),贏棋的一方提示自己贏棋,并提示是否繼續(xù)玩。</p><p> pu
64、blic boolean connectServer(String serverIP,int serverPort) throws Exception//鏈接</p><p><b> {</b></p><p><b> try</b></p><p><b> {</b></p>
65、<p> chatSocket=new Socket(serverIP,serverPort);</p><p> in=new DataInputStream(chatSocket.getInputStream());</p><p> out=new DataOutputStream(chatSocket.getOutputStream());</p>
66、<p> clientThread clientthread=new clientThread(this);</p><p> clientthread.start();</p><p> isOnChat=true;</p><p> return true;</p><p><b> }</b>
67、</p><p> catch(IOException ex)</p><p><b> {</b></p><p> chatpad.chatLineArea.setText("chessClient:connectServer:無(wú)法連接,建議重新啟動(dòng)程序 \n");</p><p><
68、b> }</b></p><p> return false;</p><p><b> }</b></p><p> ?、赾hessClient中有keyPressed用于校對(duì)關(guān)鍵字,如果在聊天時(shí)必須將下拉菜單中選中所有人,然后才可以進(jìn)行聊天。代碼如下:</p><p> public voi
69、d keyPressed(KeyEvent e)</p><p><b> {</b></p><p> TextField inputWords=(TextField)e.getSource();</p><p> if(e.getKeyCode()==KeyEvent.VK_ENTER)</p><p><
70、;b> {</b></p><p> if(inputpad.userChoice.getSelectedItem().equals("所有人"))</p><p><b> {</b></p><p><b> try</b></p><p><
71、b> {</b></p><p> out.writeUTF(inputWords.getText());</p><p> inputWords.setText("");</p><p><b> }</b></p><p> catch(Exception ea)<
72、;/p><p><b> {</b></p><p> chatpad.chatLineArea.setText("chessClient:KeyPressed無(wú)法連接,建議重新連接 \n");</p><p> userpad.userList.removeAll();</p><p> inp
73、utpad.userChoice.removeAll();</p><p> inputWords.setText("");</p><p> controlpad.connectButton.setEnabled(true);</p><p><b> }</b></p><p><b&
74、gt; }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> try</b></p><p><b> {</b></p><p> out.
75、writeUTF("/"+inputpad.userChoice.getSelectedItem()+" "+inputWords.getText());</p><p> inputWords.setText("");</p><p><b> }</b></p><p> c
76、atch(Exception ea)</p><p><b> {</b></p><p> chatpad.chatLineArea.setText("chessClient:KeyPressed無(wú)法連接,建議重新連接 \n");</p><p> userpad.userList.removeAll();</
77、p><p> inputpad.userChoice.removeAll();</p><p> inputWords.setText("");</p><p> controlpad.connectButton.setEnabled(true);</p><p><b> }</b></p
78、><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 4.3服務(wù)器的實(shí)現(xiàn)</b></p><p> 服務(wù)器中有類(lèi)MessageServer,pub
79、licTalk ,makeMessageServer</p><p> ?、費(fèi)essageServer繼承了Panel類(lèi),設(shè)置了棋盤(pán)的大小,背景顏色,消息盤(pán)的大小,全面設(shè)置了界面中各種窗口的大小。</p><p> 代碼如下:class MessageServer extends Panel //implements ActionListener</p><p>
80、<b> {</b></p><p> TextArea messageBoard=new TextArea("",22,50,TextArea.SCROLLBARS_VERTICAL_ONLY);</p><p> Label statusLabel=new Label("當(dāng)前連接數(shù):",Label.LEFT);<
81、/p><p> Panel boardPanel=new Panel();</p><p> Panel statusPanel=new Panel();</p><p> MessageServer()</p><p><b> {</b></p><p> setSize(350,300
82、);</p><p> setBackground(Color.pink);</p><p> setLayout(new BorderLayout());</p><p> boardPanel.setLayout(new FlowLayout());</p><p> boardPanel.setSize(210,210);<
83、;/p><p> statusPanel.setLayout(new BorderLayout());</p><p> statusPanel.setSize(210,50);</p><p> boardPanel.add(messageBoard);</p><p> statusPanel.add(statusLabel,Bord
84、erLayout.WEST);</p><p> add(boardPanel,BorderLayout.CENTER);</p><p> add(statusPanel,BorderLayout.NORTH);</p><p><b> }</b></p><p><b> }</b>&
85、lt;/p><p> ?、?publicTalk實(shí)現(xiàn)了聊天功能</p><p> 代碼如下:public boolean peerTalk(String peerTalk,String talkMessage)</p><p><b> {</b></p><p> for(Enumeration enu=client
86、DataHash.keys();enu.hasMoreElements();)</p><p><b> {</b></p><p> Socket userClient=(Socket)enu.nextElement();</p><p> if(peerTalk.equals((String)clientNameHash.get(us
87、erClient)) && !peerTalk.equals((String)clientNameHash.get(clientSocket)))</p><p><b> {</b></p><p> synchronized(clientDataHash)</p><p><b> {</b>&l
88、t;/p><p> DataOutputStream peerOutData=(DataOutputStream)clientDataHash.get(userClient);</p><p><b> try</b></p><p><b> {</b></p><p> peerOutDat
89、a.writeUTF(talkMessage);</p><p><b> }</b></p><p> catch(IOException es)</p><p><b> {</b></p><p> es.printStackTrace();</p><p>&
90、lt;b> }</b></p><p><b> }</b></p><p> Feedback(talkMessage);</p><p> return(false);</p><p><b> }</b></p><p> else if(
91、peerTalk.equals((String)clientNameHash.get(clientSocket)))</p><p><b> {</b></p><p> Feedback(talkMessage);</p><p> return(false);</p><p><b> }<
92、/b></p><p><b> }</b></p><p> return(true);</p><p><b> }</b></p><p> ?、?makeMessageServer顯示服務(wù)器的狀態(tài)</p><p> 代碼如下:public void ma
93、keMessageServer(int port,MessageServer server) throws IOException</p><p><b> {</b></p><p> Socket clientSocket;</p><p> long clientAccessNumber=1;</p><p>
94、; this.server=server;</p><p><b> try</b></p><p><b> {</b></p><p> serverSocket=new ServerSocket(port);</p><p> server.messageBoard.setText(
95、"服務(wù)器開(kāi)始于:"+serverSocket.getInetAddress().getLocalHost()+":"+serverSocket.getLocalPort()+"\n");</p><p> while(true)</p><p><b> {</b></p><p>
96、; clientSocket=serverSocket.accept();</p><p> server.messageBoard.append("用戶連接:"+clientSocket+"\n");</p><p> DataOutputStream outData=new DataOutputStream(clientSocket.get
97、OutputStream());</p><p> clientDataHash.put(clientSocket,outData);</p><p> clientNameHash.put(clientSocket,("新來(lái)客"+clientAccessNumber++));</p><p> ServerThread thread=ne
98、w ServerThread(clientSocket,clientDataHash,clientNameHash,chessPeerHash,server);</p><p> thread.start();</p><p><b> }</b></p><p><b> }</b></p><
99、p> catch(IOException ex)</p><p><b> {</b></p><p> System.out.println("已經(jīng)有服務(wù)器在運(yùn)行. \n");</p><p><b> }</b></p><p><b> }<
100、/b></p><p><b> 4.4服務(wù)器的功能</b></p><p> 服務(wù)器是存儲(chǔ)所有連接者的相關(guān)信息以及各種狀態(tài),負(fù)責(zé)客戶間信息的傳遞。</p><p> Socket編程接口,代碼如下:</p><p> class ServerThread extends Thread</p>
101、<p><b> {</b></p><p> Socket clientSocket;</p><p> Hashtable clientDataHash;</p><p> Hashtable clientNameHash;</p><p> Hashtable chessPeerHash;&l
102、t;/p><p> MessageServer server;</p><p> boolean isClientClosed=false;</p><p> ServerThread(Socket clientSocket,Hashtable clientDataHash,Hashtable clientNameHash,Hashtable chessPeerH
103、ash,MessageServer server)</p><p><b> {</b></p><p> this.clientSocket=clientSocket;</p><p> this.clientDataHash=clientDataHash;</p><p> this.clientNameHa
104、sh=clientNameHash;</p><p> this.chessPeerHash=chessPeerHash;</p><p> this.server=server;</p><p><b> }</b></p><p> 運(yùn)行結(jié)果如圖4.8:</p><p> 4.5客戶
105、端與服務(wù)器的鏈接</p><p><b> 如圖4.9</b></p><p> 服務(wù)器端創(chuàng)建Socket監(jiān)聽(tīng)端口,等待客戶端的連接,客戶端連接服務(wù)器,被Socket監(jiān)聽(tīng)端口捕獲,與服務(wù)器建立了連接,客戶端的輸入輸出信息經(jīng)服務(wù)器傳給所要傳的用戶??蛻舳伺c服務(wù)器就建立額連接。</p><p><b> 5.總結(jié)與體會(huì)</b&
106、gt;</p><p><b> 5.1經(jīng)驗(yàn)總結(jié)</b></p><p> 網(wǎng)絡(luò)五子棋軟件的開(kāi)發(fā)讓我經(jīng)歷了一次前所未有的體驗(yàn),讓我真正體會(huì)到了“書(shū)到用時(shí)方恨少”的含義,體會(huì)到了厚積薄發(fā)的意義所在,這次的開(kāi)發(fā)是對(duì)自己所學(xué)的知識(shí)的一次大考驗(yàn),也是對(duì)自己潛能的一次挖掘。現(xiàn)在把一些開(kāi)發(fā)的經(jīng)驗(yàn)總結(jié)如下:</p><p> ?、僖浞譁?zhǔn)備,在系統(tǒng)分析于
107、設(shè)計(jì)階段要做的盡可能詳細(xì),全面,以免在后階段返工,浪費(fèi)時(shí)間,人力等。</p><p> ?、谶\(yùn)用高效的測(cè)試手段。測(cè)試要占開(kāi)發(fā)很大的時(shí)間,軟件編碼以后,并非總能百分百的成功,那就要進(jìn)行測(cè)試。在大程序中,多寫(xiě)異常處理的代碼,以及變量合法的檢驗(yàn)等,DEBUG中混合使用斷點(diǎn)測(cè)試以及報(bào)告函數(shù)(MessageBox),以提高DEBUG效率。</p><p> ?、垡朴诓檎視?shū)籍,資料。在軟件開(kāi)發(fā)過(guò)程中
108、,資料是必不可少的,在開(kāi)發(fā)時(shí)不要急于設(shè)計(jì)編碼,應(yīng)該學(xué)會(huì)畫(huà)出程序流程圖,想好下一步要干什么,怎樣做到編碼的利用最大化,多看一些前輩的代碼,吸取他們的優(yōu)點(diǎn),然后加以改進(jìn),使之更加完善。</p><p> 5.2開(kāi)發(fā)的心得體會(huì)</p><p> 此次畢業(yè)設(shè)計(jì)我選擇的是網(wǎng)絡(luò)五子棋的開(kāi)發(fā),在開(kāi)發(fā)過(guò)程中我運(yùn)用了大部分所學(xué)的知識(shí),像網(wǎng)絡(luò)操作系統(tǒng),局域網(wǎng)等課程的知識(shí),以及對(duì)服務(wù)器端的開(kāi)發(fā),以及如何將服
109、務(wù)器端和客戶端鏈接等問(wèn)題,在之前自己對(duì)于這些知識(shí)一無(wú)所知,但在編程中查閱了很多資料,從中學(xué)到了很多知識(shí),讓我感覺(jué)到王章高樓平地起,我們平時(shí)需要的事扎實(shí)的基礎(chǔ),我們不應(yīng)該輕視書(shū)本的知識(shí),不要認(rèn)為書(shū)本的知識(shí)很膚淺,只有學(xué)好書(shū)本的知識(shí)才能更廣泛的應(yīng)用到其他領(lǐng)域。</p><p> 網(wǎng)絡(luò)五子棋軟件的開(kāi)發(fā)再一次讓我體會(huì)到了,微軟的操作系統(tǒng)其簡(jiǎn)單快捷背后所隱藏的極其復(fù)雜的驅(qū)動(dòng)機(jī)制,微軟確實(shí)為我們帶來(lái)了很好的使用環(huán)境和開(kāi)發(fā)環(huán)
110、境,所有我們要做的事情都是站在巨人的肩膀上完成的。</p><p><b> 參考文獻(xiàn)</b></p><p> ?、僦x希仁,《計(jì)算機(jī)網(wǎng)絡(luò)》,電子工業(yè)出版社,2006;</p><p> ?、趯O晨霞,楊興運(yùn),《Java程序設(shè)計(jì)》,中國(guó)計(jì)劃出版社,2007;</p><p> ?、酃⑾榱x,張躍平,Java2使用教程(第二
111、版),北京,清華大學(xué)出版社</p><p><b> 2004,2;</b></p><p> ?、苄炝ⅲ瑢O計(jì)安,Java應(yīng)用與開(kāi)發(fā)案例教程,北京,清華大學(xué)出版社,20057;</p><p> ?、菖斫▏?guó),那約,連珠五子棋入門(mén),北京;金盾出版社,1997,6;</p><p> ?、薏探ㄆ?,《軟件綜合開(kāi)發(fā)案例教程》,
112、清華大學(xué)出版社,2011;</p><p> ?、連ruce Eckel,《java編程思想》,機(jī)械工業(yè)出版社,2007;</p><p> ?、嗔河?,《Java語(yǔ)言程序設(shè)計(jì)》,機(jī)械工業(yè)出版社,2011;</p><p> ?、釋O涌,《現(xiàn)代軟件工程》,北京希望電子出版社,2003;</p><p> ?、鈃FLANAGAN,《Java技術(shù)手冊(cè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程畢業(yè)論文-網(wǎng)絡(luò)對(duì)戰(zhàn)五子棋平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
- 軟件工程畢業(yè)論文-五子棋對(duì)戰(zhàn)游戲平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)絡(luò)五子棋的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)論文
- 網(wǎng)絡(luò)五子棋五子棋設(shè)計(jì)與實(shí)現(xiàn).doc
- qt網(wǎng)絡(luò)五子棋五子棋設(shè)計(jì)與實(shí)現(xiàn)
- 軟件工程畢業(yè)論文-基于vc++的五子棋程序設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文---網(wǎng)絡(luò)五子棋游戲設(shè)計(jì)
- 五子棋畢業(yè)論文-html開(kāi)發(fā)五子棋的原型設(shè)計(jì)
- 五子棋畢業(yè)論文
- 五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 五子棋游戲設(shè)計(jì)畢業(yè)論文
- 軟件工程畢業(yè)設(shè)計(jì)(論文)-基于android的五子棋游戲設(shè)計(jì)
- 畢業(yè)論文——五子棋游戲設(shè)計(jì)
- 五子棋游戲軟件工程課程設(shè)計(jì)
- java五子棋畢業(yè)設(shè)計(jì)--java五子棋對(duì)弈程序的設(shè)計(jì)與實(shí)現(xiàn)
- java五子棋游戲畢業(yè)論文
- 畢業(yè)論文 基于android的五子棋設(shè)計(jì)
- 基于vc的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 計(jì)算機(jī)畢業(yè)論文---五子棋游戲軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---網(wǎng)絡(luò)五子棋游戲
評(píng)論
0/150
提交評(píng)論