版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 南開大學(xué)濱海學(xué)院計(jì)算機(jī)科學(xué)系課程設(shè)計(jì)報(bào)告 - 27 - 南開大學(xué)濱海學(xué)院計(jì)算機(jī)科學(xué)系課 程 設(shè) 計(jì) 報(bào) 告 課題名稱:基于java的五子棋游戲 專 業(yè):數(shù)字媒體 班 級(jí):2班 學(xué)號(hào)姓名: 指導(dǎo)教師: 完成日期:2011年6月21日目錄第一章 緒論21.1背景介紹21.2研究價(jià)值2第二章 開發(fā)工具與語言簡介32.1 java簡介32.2 eclipse開發(fā)環(huán)境簡介4第三章 五子棋的相關(guān)知識(shí)53.1 五子棋簡介53.2 五子棋基本規(guī)則5第四章 程序設(shè)計(jì)流程及具體實(shí)現(xiàn)64.1 mvc設(shè)計(jì)模式64.2 程序設(shè)計(jì)104.2.1 單機(jī)五子棋104.2.2 判斷輸贏的算法134.2.3 交互界面的繪制13
2、4.2.4 設(shè)置悔棋134.2.5 儲(chǔ)存棋盤信息和加載144.2.5 tcp網(wǎng)路編程144.2.5 網(wǎng)絡(luò)五子棋17第五章 在windows平臺(tái)下的發(fā)布與效果展示19第六章 總結(jié)與展望24致謝25摘要:隨著計(jì)算機(jī)普及,網(wǎng)絡(luò)的飛速發(fā)展,網(wǎng)絡(luò)技術(shù)的成熟,計(jì)算機(jī)的發(fā)展為集辦公、娛樂于一體新式工具。在這一背景下,網(wǎng)絡(luò)游戲的需求與日俱增,五子棋作為傳統(tǒng)游戲之一,其歷史源遠(yuǎn)流長,而傳統(tǒng)游戲的開發(fā)更符合用戶的品味,更受用戶的喜愛。使用java語言開發(fā)的五子棋游戲程序,將五子棋游戲移植到網(wǎng)絡(luò)中更符合現(xiàn)代人娛樂理念,滿足用戶異地自由選擇游戲?qū)κ?、?shí)現(xiàn)單機(jī)和雙人對戰(zhàn)的游戲模式,也可以在游戲當(dāng)中進(jìn)行聊天,私聊、群聊等
3、功能,便于用戶實(shí)時(shí)進(jìn)行信息交流。同時(shí),注意從游戲的圖形界面上優(yōu)化,使得java五子棋游戲軟件具有很強(qiáng)的可操作性。本文論述了用java語言開發(fā)出的一款通俗易懂而充滿樂趣的五子棋小游戲。key words:gobang double against single machine the java language understandableabstract: along with the computer popularization, the rapid development of the network, the network technology maturity, the devel
4、opment of the computer for set office, entertainment in one new tool. in this context, the network games demand grows day by day, as a traditional game, one of gobang its long history, and the development of the traditional game more accord with users are more taste, the users favorite.use java lang
5、uage development of the game program, will gobang federation to transplant network game more accord with modern entertainment idea, meet user free choice different game opponent, and game mode, also can be in the middle of the game chat, private chat, group chat, and other functions, convenient for
6、the user to exchange of information in real time. at the same time, pay attention from the games graphical interface optimization, makes java gobang game software has very strong operation.this paper discusses the java language with developed a straightaway and fun gobang little game第一章:緒論1.1 背景介紹隨著
7、科技突飛猛進(jìn)的發(fā)展,電腦已經(jīng)進(jìn)入了家家戶戶,而現(xiàn)在越來越多的熱門詞匯也與電腦有了關(guān)系,與電腦有關(guān)的知識(shí)也越來越受學(xué)生的喜愛,很多學(xué)生在高考填寫志愿時(shí)會(huì)選擇與計(jì)算機(jī)有關(guān)的學(xué)科,如數(shù)字媒體技術(shù),影視動(dòng)畫,網(wǎng)絡(luò)編程等。同時(shí),許多公司里的有關(guān)計(jì)算機(jī)軟件開發(fā)的項(xiàng)目有越來越高的薪酬,計(jì)算機(jī)人才也是供不應(yīng)求。當(dāng)然,軟件的日益更新和增加也不再滿足人們的需求。于是,很多人便自己動(dòng)手開發(fā)自己所需要的軟件,只有自己才最清楚自己是需要什么樣的軟件。java語言作為一種面向?qū)ο蟮木幊陶Z言,具有分布式,可移植,高性能,多線程等特點(diǎn)。而且與c+相比,它通俗易懂而且操作性更強(qiáng),并且除去了指針等方面的要求。通過一定的學(xué)習(xí),人們
8、可以使用java開發(fā)工具開發(fā)出功能齊全,滿足特殊需求的應(yīng)用程序,對于學(xué)習(xí)者掌握一定的技能和開拓思維都有很大的幫助。五子棋游戲是一款較為常見的小游戲,通過雙方下棋來實(shí)現(xiàn)勝負(fù)。我們小組制作的五子棋游戲是通過兩種模式,單機(jī)和聯(lián)網(wǎng),讓玩家自己來決定所需的游戲模式,然后進(jìn)行游戲。并且其中可以自行選擇黑棋或者白棋,并有悔棋和存盤等附加功能。在實(shí)現(xiàn)過程中學(xué)到了許多的專業(yè)知識(shí),同時(shí)也鞏固了在課堂上學(xué)的一系列知識(shí)。通過研究這一款益智游戲,可以自己動(dòng)手實(shí)現(xiàn)想要的游戲效果。而且在開發(fā)研究過程中,我們可以復(fù)習(xí)所學(xué)過的許多java語言知識(shí),對所學(xué)的知識(shí)進(jìn)行系統(tǒng)性復(fù)習(xí),并在研究中得出了自己的心得體驗(yàn)。更可以在開發(fā)過程中得
9、到許多的樂趣,使知識(shí)有一定的提高。1.2 研究價(jià)值在系統(tǒng)地學(xué)習(xí)了java語言后,我們小組準(zhǔn)備自己動(dòng)手制作一個(gè)五子棋的小程序,可以將學(xué)過的眾多java知識(shí)有效地結(jié)合起來進(jìn)行綜合地運(yùn)用,在課本章程中,接口與多態(tài),異常的處理,i/o操作,多線程和網(wǎng)絡(luò)編程等知識(shí)都得到了一定的綜合運(yùn)用,而且可以對自己學(xué)過的技能能夠進(jìn)行檢驗(yàn),更可以全面復(fù)習(xí)有關(guān)的知識(shí)。在研究過程中雖然會(huì)遇到很多難題,但是通過自己找資料,與同學(xué)相互探討、研究,然后將難題一一解決,是一件非常能夠鍛煉能力的事情。雖然做出來的五子棋沒有網(wǎng)絡(luò)上的如此精致,但是也是充滿樂趣的一款游戲。從研究流程,設(shè)計(jì)棋盤到開發(fā)代碼,都是自己動(dòng)手制作。而且,可以學(xué)到更
10、多的新知識(shí),在學(xué)習(xí)中得到更多的樂趣。在五子棋的實(shí)現(xiàn)價(jià)值方面相比之下是無法和圍棋相比的,但剛好是這點(diǎn),造就了五子棋在社會(huì)可推廣的路。學(xué)棋不是為了出成績,因?yàn)楣谲娪肋h(yuǎn)只有一個(gè)。棋是培養(yǎng)習(xí)慣的一個(gè)載體。他的作用是為社會(huì)培養(yǎng)更多懂得思考他人的社會(huì)人才。由于五子棋比圍棋簡單易學(xué),更符合目前社會(huì)的發(fā)展。所以他不需要是難度很大的規(guī)則。當(dāng)然對不同層次的選手使用不同的規(guī)則也是可行的,關(guān)鍵看其產(chǎn)生的社會(huì)價(jià)值。在目前國內(nèi)連基礎(chǔ)培訓(xùn)都很少的時(shí)候,我想規(guī)則根本不需要考慮而對于曲子其本身來說,它的價(jià)值也是非凡的。有人說過,現(xiàn)階段五子棋的價(jià)值主要體現(xiàn)在它的休閑性、趣味性,而并非復(fù)雜性、競技性,五子棋現(xiàn)階段還不被人熟知,更談
11、不上職業(yè)化,但只要好好抓住了現(xiàn)階段五子棋的價(jià)值進(jìn)行發(fā)展,相信在不久五子棋就會(huì)逐步被廣大群眾所了解和認(rèn)識(shí),認(rèn)識(shí)到它更深的價(jià)值,那時(shí)五子棋就不僅僅是簡單的小游戲,職業(yè)化也并非天方夜譚了。相信這一天終會(huì)到來,因?yàn)槲遄悠灞旧淼膬r(jià)值,因?yàn)楣湃说闹腔郏惨驗(yàn)槟阄业呐?。第二?開發(fā)工具與語言簡介2.1 java簡介java是一種簡單的,跨平臺(tái)的,面向?qū)ο蟮?,分布式的,解釋的,健壯的安全的,結(jié)構(gòu)的中立的,可移植的,性能很優(yōu)異的多線程的,動(dòng)態(tài)的語言.在java出現(xiàn)以前,internet上的信息內(nèi)容都是一些乏味死板的html文檔。這對于那些迷戀于web瀏覽的人們來說簡直不可容忍。他們迫切希望能在web中看到一些
12、交互式的內(nèi)容,開發(fā)人員也極希望能夠在web上創(chuàng)建一類無需考慮軟硬件平臺(tái)就可以執(zhí)行的應(yīng)用程序,當(dāng)然這些程序還要有極大的安全保障。對于用戶的這種要求,傳統(tǒng)的編程語言顯得無能為力,而sun的工程師敏銳地察覺到了這一點(diǎn),從1994年起,他們開始將oak技術(shù)應(yīng)用于web上,并且開發(fā)出了hotjava的第一個(gè)版本。當(dāng)sun公司1995年正式以java這個(gè)名字推出的時(shí)候,幾乎所有的web開發(fā)人員都想到:噢,這正是我想要的。于是java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。java技術(shù)的重要性就不講了,從最近流行的一個(gè)統(tǒng)計(jì)數(shù)據(jù)上來說,目前世界上編程語言java 、c 、vb、c+依次排名前4位,這排名
13、本身不說明什么,但至少也是工業(yè)界對編程語言使用上一個(gè)側(cè)面的反映。java編程語言與眾不同之處在于:java程序既是編譯型的(轉(zhuǎn)換為一種稱為java字節(jié)碼的中間語言),又是解釋型的(jvm 對字節(jié)碼進(jìn)行解析和運(yùn)行)。編譯只進(jìn)行一次,而解釋在每次運(yùn)行程序時(shí)都會(huì)進(jìn)行。編譯后的字節(jié)碼采用一種針對jvm 優(yōu)化過的機(jī)器碼形式;解釋器是jvm 的實(shí)現(xiàn)。java具有眾多優(yōu)點(diǎn),比如平臺(tái)無關(guān)性,安全性,面向?qū)ο?,健壯式,分布式等。與c+相比,java去掉了其中的指針運(yùn)算、結(jié)構(gòu)、typedefs、#define、需要釋放內(nèi)存等功能,減少了平常出錯(cuò)的50%,讓java的語言功能很精煉。而且,因?yàn)閖ava很小,所以整個(gè)
14、解釋器只需215k的ram,并增加了一些很有用的功能。在internet方面,java的出現(xiàn)實(shí)現(xiàn)了互動(dòng)的頁面,是一次偉大的革命。java并不是為internet、www而設(shè)計(jì)的,它也可以用來編寫?yīng)毩⒌膽?yīng)用程序。java程序需要編譯,它被放置在internet服務(wù)器上,當(dāng)用戶訪問服務(wù)器時(shí),java程序被下載到本地的用戶機(jī)上,由瀏覽器解釋運(yùn)行。實(shí)際上有兩種java程序:一種java應(yīng)用程序是一個(gè)完整的程序,如web瀏覽器。另一種java小應(yīng)用程序是運(yùn)行于web瀏覽器中的一個(gè)程序。java程序和它的瀏覽器hotjava,提供了可讓瀏覽器運(yùn)行程序的方法。2.2 eclipse開發(fā)環(huán)境簡介eclipse
15、 是一個(gè)開放源代碼的、基于 java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 java 開發(fā)工具。eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得eclipse擁有其他功能相對固定的ide軟件很難具有的靈活性。許多軟件開發(fā)商以eclipse為框架開發(fā)自己的ide。eclipse是一個(gè)開放源代碼的軟件開發(fā)項(xiàng)目,專注于為高度集成的工具開發(fā)提供一個(gè)全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺(tái)。它主要由eclipse項(xiàng)目、eclipse工具項(xiàng)目和eclipse技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,具體包括四個(gè)部分組
16、成eclipse platform、jdt、cdt和pde。jdt支持java開發(fā)、cdt支持c開發(fā)、pde用來支持插件開發(fā),eclipse platform則是一個(gè)開放的可擴(kuò)展ide,提供了一個(gè)通用的開發(fā)平臺(tái)。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開發(fā)工具的基礎(chǔ)。eclipse platform允許工具建造者獨(dú)立開發(fā)與他人工具無縫集成的工具從而無須分辨一個(gè)工具功能在哪里結(jié)束,而另一個(gè)工具功能在哪里開始。雖然大多數(shù)用戶很樂于將 eclipse 當(dāng)作 java ide 來使用,但 eclipse 的目標(biāo)不僅限于此。eclipse 還包括插件開發(fā)環(huán)境(plug-in development enviro
17、nment,pde),這個(gè)組件主要針對希望擴(kuò)展 eclipse 的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與 eclipse 環(huán)境無縫集成的工具。由于 eclipse 中的每樣?xùn)|西都是插件,對于給 eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。 eclipse sdk(軟件開發(fā)者包)是eclipse platform、jdt和pde所生產(chǎn)的組件合并,它們可以一次下載。這些部分在一起提供了一個(gè)具有豐富特性的開發(fā)環(huán)境,允許開發(fā)者有效地建造可以無縫集成到eclipse platform中的工具。eclipse sdk由eclipse項(xiàng)目生產(chǎn)的工具
18、和來自其它開放源代碼的第三方軟件組合而成。eclipse項(xiàng)目生產(chǎn)的軟件以 gpl發(fā)布,第三方組件有各自自身的許可協(xié)議。 eclipse的基礎(chǔ)是富客戶機(jī)平臺(tái)(rich client platform, 即rcp)。rcp包括下列組件: 核心平臺(tái)(啟動(dòng)eclipse,運(yùn)行插件) osgi(標(biāo)準(zhǔn)集束框架) swt(可移植構(gòu)件工具包) jface(文件緩沖,文本處理,文本編輯器) eclipse工作臺(tái)(即workbench ,包含視圖(views)、編輯器(editors)、視角(perspectives)、和向?qū)В╳izards) eclipse采用的技術(shù)是ibm公司開發(fā)的(swt),這是一種基于j
19、ava的窗口組件,類似java本身提供的awt和swing窗口組件;不過ibm聲稱swt比其他java窗口組件更有效率。eclipse的用戶界面還使用了gui中間層jface,從而簡化了基于swt的應(yīng)用程序的構(gòu)建。eclipse的插件機(jī)制是輕型軟件組件化架構(gòu)。在富客戶機(jī)平臺(tái)上,eclipse使用插件來提供所有的附加功能,例如支持java以外的其他語 言。 已有的分離的插件已經(jīng)能夠支持c/c+(cdt)、perl、ruby,python、telnet和數(shù)據(jù)庫開發(fā)。插件架構(gòu)能夠支持將任意的擴(kuò)展加入到 現(xiàn)有環(huán)境中,例如配置管理,而決不僅僅限于支持各種編程語言。eclipse的設(shè)計(jì)思想是:一切皆插件。
20、eclipse核心很小,其它所有功能都以插件的形式附加于eclipse核心之上。eclipse基本內(nèi)核包括:圖形api (swt/jface), java開發(fā)環(huán)境插件(jdt ),插件開發(fā)環(huán)境(pde)等。第三章 五子棋的相關(guān)知識(shí)3.1五子棋簡介五子棋是一種兩人對弈的純策略型棋類游戲,相傳起源于四千多年前的堯帝時(shí)期,比圍棋的歷史還要悠久,可能早在“堯造圍棋”之前,民間就已有五子棋游戲。有關(guān)早期五子棋的文史資料與圍棋有相似之處,因?yàn)楣糯遄悠宓钠寰吲c圍棋是完全相同的。在上古的神話傳說中有“女媧造人,伏羲做棋”一說,增山海經(jīng)中記載:“休輿之山有石焉,名曰帝臺(tái)之棋,五色而文狀鶉卵?!崩钌谱⒁龂汉?/p>
21、鄲淳藝經(jīng)中曰:“棋局,縱橫各十七道,合二百八十九道,白黑棋子,各一百五十枚”??梢?,五子棋頗有淵源。亦有傳說,五子棋最初流行于少數(shù)民族地區(qū),以后漸漸演變成圍棋并在炎黃子孫后代中遍及開來。這種非游戲容易上手,老少皆宜,而且趣味橫生,引人入勝;不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。在古代,五子棋棋具雖然與圍棋相類同,但是下法卻是完全不同的。正如辭海中所言,五子棋是“棋類游戲,棋具與圍棋相同,兩人對局,輪流下子,先將五子連成一行者為勝?!?,至于國人中有將五子棋稱為“連五子”、“連珠”,也許是源于史書中“日月如合璧,五星如連珠(漢書)”。再說說“連珠”的起源,連珠源于日本,是日本
22、棋手對五子棋改良的結(jié)果。據(jù)日本史料文獻(xiàn)介紹,中國古代的五子棋先由中國傳到高麗(朝鮮),然后于公元1688年至1704年日本的元祿時(shí)代再從高麗傳到日本,最初在皇宮和貴族大家庭中流行,到元祿末期,開始在民間盛行。1899年,經(jīng)過公開征名,“連珠”這一名稱才被正式確定下來。目前,職業(yè)連珠在國際發(fā)展迅速,1988年,國際連珠聯(lián)盟(rif)在瑞典創(chuàng)立,成員國包括日本、俄羅斯、瑞典、亞美尼亞、阿塞拜疆、愛沙尼亞、法國、拉脫維亞、白俄羅斯等9個(gè)國家,總部設(shè)在瑞典的斯德哥爾摩?,F(xiàn)在全世界已有數(shù)十個(gè)國家和地區(qū)成為國際連珠聯(lián)盟的正式會(huì)員,中國于1996年正式加入。就各國五子棋的整體水平而言,目前歐洲實(shí)力最強(qiáng),特別
23、是俄羅斯和愛沙尼亞,而日本是傳統(tǒng)的連珠強(qiáng)國。中國的連珠水平則迅猛增長,特別是連珠研究與網(wǎng)絡(luò)連珠水平天下無敵,但更能確證實(shí)力的要到正式的大賽中加以驗(yàn)證。3.2五子棋基本規(guī)則玩家根據(jù)自身等級(jí)和習(xí)慣,可以自由選擇不同的游戲房間。其游戲規(guī)則也有所不同。詳細(xì)分為三種棋室:普通棋室、國標(biāo)棋室、職業(yè)棋室。其中普通棋室不受任何規(guī)則限制;國標(biāo)棋室有禁手規(guī)則限制;而職業(yè)棋室則在國標(biāo)棋室的基礎(chǔ)上增加“三手交換”和“五手兩打”兩項(xiàng)規(guī)則。(三手交換:是指黑棋下盤面第3著棋后,白方在應(yīng)白之前,如感覺黑方棋形不利于己方,可提出交換,即執(zhí)白棋一方變?yōu)閳?zhí)黑棋一方,而黑方不可以不換。五手兩打:是指黑棋在下盤面上關(guān)鍵的第5手棋時(shí),
24、必須下兩步棋,讓白棋在這兩步棋中任選一步,然后再繼續(xù)對弈。)國際比賽規(guī)則規(guī)定:對局中如黑方出現(xiàn)禁手,白方應(yīng)立即指出禁手點(diǎn),黑方即負(fù)。如白方在黑方出現(xiàn)禁手后,又落一步白子,黑棋禁手則不成立了。 所以 在有禁手的房間里,如果黑方出現(xiàn)禁手,白方應(yīng)立即按下禁手按鈕 。程序會(huì)判黑方負(fù)。如果這時(shí)白方又在棋盤上落一子,黑棋禁手則不成立了。為了簡化用戶對禁手按鈕的使用,也有走禁手就輸和禁手不能落子規(guī)則的房間,顧名思義不多介紹。雖然采取了禁手的限制,黑棋先行仍有優(yōu)勢,黑棋仍可以必勝。所以如果用戶是高段位的棋手,或者想成為高手一定要選擇國際上比賽選用的比賽標(biāo)準(zhǔn),即“三手交換,五手兩打”。五子棋行棋順序: 黑先、白
25、后,從天元開始相互順序落子。五子棋判斷勝負(fù) : 最先在棋盤橫向、豎向、斜向形成連續(xù)的相同色五個(gè)棋子的一方為勝。 黑棋禁手判負(fù)(lose),白棋無禁手。黑棋禁手包括“三、三”(double three)(包括“四、三、三”)、“四、四”(double four)(包括“四、四、三”)、“長連”(overline)。黑棋只能以“四、三”取勝。 如分不出勝負(fù),則定為平局(draw)。 對局中中途退場判為負(fù)。 五連與禁手同時(shí)形成,先五為勝。 黑方禁手形成時(shí),白方應(yīng)立即指出。若白方未發(fā)現(xiàn)或發(fā)現(xiàn)后未指明而繼續(xù)應(yīng)子,則不能判黑方負(fù)。 時(shí)間限定:每方20分鐘包干,然后1分鐘讀秒。簡明職業(yè)連珠五子棋比賽規(guī)則的解
26、釋:1 、五子棋是兩個(gè)人之間進(jìn)行的競技活動(dòng),由于對黑方白方規(guī)則不同,黑棋必須先行。2 、五子棋專用盤為 1515 ,五連子的方向?yàn)闄M、豎、斜。3 、禁手是對局中被判為負(fù)的行棋手段。白棋無禁手。 4 、在棋盤上以對局雙方均不可能形成五連為和棋。5 、在對局中,以在盤上落下的子又拿起來為拔子,判負(fù)。在對局中,一方自行終止比賽,判負(fù)。6 、黑方在落下關(guān)鍵的第五子即形成五連的同時(shí),又形成禁手。此時(shí)因黑方已成連五,故禁手失效,黑方勝。7 、所謂黑方形成禁手,是指黑方一子落下同時(shí)形成兩個(gè)或兩個(gè)以上的活三、沖四及長連禁手。此時(shí),白方應(yīng)立即向黑方指出禁手,自然而勝。第四章 程序設(shè)計(jì)思路4.1 mvc設(shè)計(jì)模式m
27、vc英文即model-view-controller,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照model、view、controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層模型層、視圖層、控制層。 mvc模式視圖(view)代表用戶交互界面,對于web應(yīng)用來說,可以概括為html界面,但有可能為xhtml、xml和 applet。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用可能有很多不同的視圖,mvc設(shè)計(jì)模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(model)處理。比如一個(gè)訂單的視圖只接受來自模型
28、的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請求傳遞給控制和模型。模型(model):就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過程對其它層來說是黑箱操作,模型接受視圖請求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計(jì)可以說是mvc最主要的核心。目前流行的ejb模型就是一個(gè)典型的應(yīng)用例子,它從應(yīng)用技術(shù)實(shí)現(xiàn)的角度對模型做了進(jìn)一步的劃分,以便充分利用現(xiàn)有的組件,但它不能作為應(yīng)用設(shè)計(jì)模型的框架。它僅僅告訴你按這種模型設(shè)計(jì)就可以利用某些技術(shù)組件,從而減少了技術(shù)上的困難。對一個(gè)開發(fā)者來說,就可以專注于業(yè)務(wù)模型的設(shè)計(jì)。mvc設(shè)計(jì)模式告訴我們,把應(yīng)用的模型按一定的規(guī)則抽取出來,抽取的層次很重
29、要,這也是判斷開發(fā)人員是否優(yōu)秀的設(shè)計(jì)依據(jù)。抽象與具體不能隔得太遠(yuǎn),也不能太近。mvc并沒有提供模型的設(shè)計(jì)方法,而只告訴你應(yīng)該組織管理這些模型,以便于模型的重構(gòu)和提高重用性。我們可以用對象編程來做比喻,mvc定義了一個(gè)頂級(jí)類,告訴它的子類你只能做這些,但沒法限制你能做這些。這點(diǎn)對編程的開發(fā)人員非常重要。 業(yè)務(wù)模型還有一個(gè)很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要指實(shí)體對象的數(shù)據(jù) 保存(持續(xù)化)。比如將一張訂單保存到數(shù)據(jù)庫,從數(shù)據(jù)庫獲取訂單。我們可以將這個(gè)模型單獨(dú)列出,所有有關(guān)數(shù)據(jù)庫的操作只限制在該模型中。 控制(controller)可以理解為從用戶接收請求, 將模型與視圖匹配在一起,共同完成用戶
30、的請求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點(diǎn)擊一個(gè)連接,控制層接受請求后, 并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個(gè)模型可能對應(yīng)多個(gè)視圖,一個(gè)視圖可能對應(yīng)多個(gè)模型。 模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)顯示視圖。如果用戶通過某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。因此,無論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是
31、一種模型的變化-傳播機(jī)制。模型、視圖、控制器三者之間的關(guān)系和各自的主要功能。運(yùn)行游戲游戲重置 游戲初始化用戶界面 白棋贏 黑棋贏人先 電腦先電腦黑棋人選白棋人選黑棋電腦白棋 判斷control類控制臺(tái)中心networkhelper網(wǎng)絡(luò)服務(wù)器網(wǎng)絡(luò)服務(wù)器chessmodel類棋子模型內(nèi)嵌方法client類客戶端sever類服務(wù)器端chess類棋子模型gobangbox類交互視圖jpaneup基本控件布局mypanel棋子棋盤繪制在五子棋mvc模式中control類是整個(gè)程序的靈魂,控制各個(gè)部門的協(xié)調(diào),及時(shí)反饋各方的信息。在gobangbox是整個(gè)視圖窗口,通過可視化編輯添加了jpanelup面板。
32、這個(gè)面板初始時(shí)為不可視,在網(wǎng)絡(luò)對戰(zhàn)模式中,修改為可見,以便用戶連接和創(chuàng)建連接網(wǎng)絡(luò)。mypanel是一個(gè)畫板。用來繪制棋盤和棋子。通過repaint()函數(shù)來重刷面板。chessmodel類是mvc中的m,即模式,內(nèi)嵌了以棋子為類型的對象數(shù)組,以及一系列和棋子相關(guān)聯(lián)的操作,例如下棋,悔棋,保存,等。對象和對象的操作封裝成一個(gè)chessmodel類得數(shù)據(jù)結(jié)構(gòu)。networkhelper網(wǎng)絡(luò)類是mvc的擴(kuò)展,封裝了客戶端和服務(wù)器端網(wǎng)絡(luò)連接的方法。4.2 程序基本框架4.2.1 單機(jī)五子棋開始單機(jī)模式下棋落子刷新mypanel更新chessmodel的狀態(tài)值本地硬盤文件讀入繪制棋盤,設(shè)置panel背景
33、保存判斷是否五子連珠加載游戲結(jié)束關(guān)閉游戲悔棋默認(rèn)模式who win函數(shù)調(diào)用保存棋子狀態(tài)為硬盤文件單機(jī)模式的設(shè)計(jì)主要集中在mvc的設(shè)計(jì),以及判斷五子連珠的算法。在gobangbox和control以及mypanel類中都有一個(gè)getinstance函數(shù)來返回各個(gè)類的實(shí)例對象。這樣control就可以任意調(diào)用各個(gè)類中的變量和函數(shù)。control類:變量:intusercolour記錄用戶棋子顏色intpartercolour記錄對方棋子顏色booleanturn在單機(jī)模式中,控制棋子的黑白替換booleansiglemode判斷是否為單機(jī)模式booleannetmode判斷是否為網(wǎng)絡(luò)模式boole
34、anpartputchess在網(wǎng)絡(luò)模式中,判斷是否對方在下棋booleanenable若對方在下棋,enable為假,則我方不能下棋booleanisserver判斷是否是服務(wù)器booleanisclient判斷是否是客戶端servers服務(wù)器對象clientc客戶端對象controlinstance返回自身實(shí)例句柄主要方法:setture方法由布爾值turn來控制黑白棋子替換。這個(gè)方法只有在單機(jī)模式才能調(diào)用,在網(wǎng)絡(luò)模式中其無效。userputchess方法是用戶下棋時(shí)調(diào)用。由control來調(diào)用chessmodel中的setchess方法,并調(diào)用mypanel中的repaint方法重畫畫板。
35、在單機(jī)模式中,用戶每下過一次子后就要setturn來替換用戶所持棋子,而在網(wǎng)絡(luò)模式中,要判斷enable是否為真,如果為真才可下子,在另一方為黑子的情況下是不能先下子的。并且在另一方放子之前不能連下兩子。這些都是又enable來控制的。getusercolour和setusercolour方法是用來獲得和設(shè)置用戶棋子顏色。reback和restart分別是調(diào)用chessmodel中的悔棋和重新開始,并重繪畫板。respond方法是在網(wǎng)絡(luò)模式中一方請求悔棋時(shí),用戶是否同意悔棋請求。chessmodel類:變量:intblack黑子intwhite白子intspace無子intwidth棋盤寬in
36、theight棋盤高stackst堆棧,若悔棋,入棧chesschessboard棋子數(shù)組,每個(gè)對象為chess方法:getchess和setchess方法返回和設(shè)置,chessboardrowcol對象的棋子狀態(tài)。在setchess時(shí)把chessboardrowcol的棋子狀態(tài)入棧。whowin方法判斷是否五子連珠。chesspush把棋子的行列值入棧。chessback棋子的列出棧,行出棧。并把chessboardrowcol的棋子狀態(tài)設(shè)置為space。save()和load()方法用來保存和載入未完成的棋局。chess類內(nèi)嵌int類型chessstate。把棋子狀態(tài)和棋子有機(jī)綁定。gob
37、angbox類布局結(jié)構(gòu)如下:mypanel類initialize為棋盤界面的初始化。計(jì)算長寬值并對棋盤添加mousepressed監(jiān)聽事件,監(jiān)聽用戶的點(diǎn)擊位置,通過e.getx();和e.gety()來獲得。drawchess和drawpanel方法畫棋子和畫棋盤。compute方法是在初始時(shí)和用戶變換界面大小時(shí)計(jì)算棋盤繪制的位置。4.2.2判斷輸贏的算法whowin方法的設(shè)計(jì)從下子的那個(gè)位置,上下左右左上左下右上右下下八個(gè)方位來判斷是否和新下的子同色。且連色不能中間斷。用j1,j2,j3,j4四個(gè)int值來記錄連子的個(gè)數(shù),如果個(gè)數(shù)大于等于四個(gè)就返回真值。如果中間出現(xiàn)間斷,則用break跳出循
38、環(huán),不再計(jì)算下個(gè)棋子直接返回假值。4.2.3交互界面的繪制mypanel中的繪制棋盤函數(shù)。g.drawline在指定位置繪制線。g.drawstring繪制字符串g.filloval繪制圓。背景圖的設(shè)置相對比較繁瑣。有兩種方式。1.在mypanel中的paintcomponent方法中繪制,調(diào)用畫圖方法g.drawimage(im,0,0,getwidth(),getheight(),this);且在初始化函數(shù)中初始化im = toolkit.getdefaulttoolkit().getimage(pic/bc.jpg);把im用默認(rèn)工具包來包裝。2.在gobangbox底層加一個(gè)jlabl
39、e,為jlable加圖像。this.getlayeredpane().add(background, new integer(integer.min_value)設(shè)置jlabel在gobangbox的最底層。并把所有的panel和控件都設(shè)置為透明。把其setopaque設(shè)置為(false);4.2.3設(shè)置悔棋悔棋的設(shè)置使用數(shù)據(jù)結(jié)構(gòu)棧。棧(stack)是操作限定在表的尾端進(jìn)行的線性表。表尾由于要進(jìn)行插入、刪除等操作,所以,它具有特殊的含義,把表尾稱為棧頂(top),另一端是固定的,叫棧底(bottom)。當(dāng)棧中沒有數(shù)據(jù)元素時(shí)叫空棧(empty stack)。在棧頂插入一個(gè)元素稱為壓?;蛘哌M(jìn)棧,從
40、棧頂刪除一個(gè)元素稱為出?;蛘咄藯?。仍然用線性表的表示方法,則??梢詫憺椋簊=(a1,a2,an-1)當(dāng)指定一端為棧頂時(shí),另一端就是棧底。棧底的元素個(gè)數(shù)n稱為棧的長度。棧可以分為順序棧和鏈棧。用一片連續(xù)的存儲(chǔ)空間來存儲(chǔ)棧中的數(shù)據(jù)元素,這樣的棧稱為順序棧(sequence stack)。類似于順序表,用一維數(shù)組來存放順序棧中的數(shù)據(jù)元素。棧頂指示器top設(shè)在數(shù)組下標(biāo)為0的端,top隨著插入和刪除而變化,當(dāng)棧為空時(shí),top=-1。鏈棧通常用單鏈表來表示,它的實(shí)現(xiàn)是單鏈表的簡化。所以,鏈棧結(jié)點(diǎn)的結(jié)構(gòu)與單鏈表結(jié)點(diǎn)的結(jié)構(gòu)一樣,如圖3.3所示。由于鏈棧的操作只是在一端進(jìn)行,為了操作方便,把棧頂設(shè)在鏈表的頭部,
41、并且不需要頭結(jié)點(diǎn)。使用pop()移除堆棧頂部的對象,并作為此函數(shù)的值返回該對象。使用push()把項(xiàng)壓入堆棧頂部。在下棋的時(shí)候下子的行列值入棧。表明在此位置有子置入,如果選擇悔棋,則出棧獲取行列值把其值設(shè)置為空。刷新重繪面板即可。4.2.4儲(chǔ)存棋盤信息和加載java io流的使用流定義: 任何有能力產(chǎn)出數(shù)據(jù)的數(shù)據(jù)源對象或者有能力接收數(shù)據(jù)的數(shù)據(jù)源對象。他屏蔽了實(shí)際的i/o設(shè)備處理數(shù)據(jù)的細(xì)節(jié)。流的分類: 按流向分為輸入流和輸出流,下面是對輸入流和輸出流的定義:輸入流:在java中,可從中讀出一系列字節(jié)的對象稱為“輸入流”。輸出流:能向其中寫入一系列字節(jié)的對象稱為“輸出流”。 按傳輸單位分為字節(jié)流(
42、stream)結(jié)尾的和字符流(reader和writer); 按功能還可以分為節(jié)點(diǎn)流和過濾流。 節(jié)點(diǎn)流:負(fù)責(zé)數(shù)據(jù)源和程序之間建立連接;(相當(dāng)于裸槍) 過濾流:用于給節(jié)點(diǎn)增加功能。(相當(dāng)于功能零部件) 過濾流的構(gòu)造方式是以其他流位參數(shù)構(gòu)造(這樣的設(shè)計(jì)模式稱為裝飾模式)。注:i/o流是一類很寶貴的資源,使用完后必須調(diào)用close()方法關(guān)閉流并釋放資源。在關(guān)閉流時(shí)只用關(guān)閉最外層的流。 我們將向輸出流寫入數(shù)據(jù)信息的叫數(shù)據(jù)源;我們將從輸入流讀取數(shù)據(jù)信息的叫目的地。數(shù)據(jù)源和目的地可以是(而且經(jīng)常)文件,但它們也可能是一個(gè)網(wǎng)絡(luò)連接(),甚至一個(gè)內(nèi)存塊。所有數(shù)據(jù)最終都要保存為一系列字節(jié)。java中以抽象類i
43、nputstream 和outputstreaml來實(shí)現(xiàn)單字節(jié)的字符。以抽象類reader和writer(它們的子類)來實(shí)現(xiàn)來專門處理采用unicode(每個(gè)字符都使用了雙字節(jié))格式保存的信息。在java中,唯一用來處理文字輸入的是bufferedreader方法。該方法又含了另一個(gè)方法,名為readline(),可用它讀取整行文本。默認(rèn)情況下,流不會(huì)進(jìn)行緩沖。即每讀一次,都會(huì)要求操作系統(tǒng)提供一個(gè)字節(jié)。通過bufferedinputstream和bufferedoutputstream對流構(gòu)建器進(jìn)行過濾分層,實(shí)現(xiàn)緩沖。用printwriter輸出。并且用bufferedreader包裝優(yōu)化。用
44、out.println向硬盤中寫入文件。用bufferedreader輸入。用bufferedreader包裝優(yōu)化。用in.readline()從硬盤中的文件讀入信息。4.2.5 tcp網(wǎng)絡(luò)編程網(wǎng)絡(luò)編程的目的就是指直接或間接地通過網(wǎng)絡(luò)協(xié)議與其他計(jì)算機(jī)進(jìn)行通訊。網(wǎng)絡(luò)編程中有兩個(gè)主要的問題,一個(gè)是如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺(tái)或多臺(tái)主機(jī),另一個(gè)就是找到主機(jī)后如何可靠高效的進(jìn)行數(shù)據(jù)傳輸。在tcp/ip協(xié)議中ip層主要負(fù)責(zé)網(wǎng)絡(luò)主機(jī)的定位,數(shù)據(jù)傳輸?shù)穆酚?,由ip地址可以唯一地確定internet上的一臺(tái)主機(jī)。而tcp層則提供面向應(yīng)用的可靠的或非可靠的數(shù)據(jù)傳輸機(jī)制,這是網(wǎng)絡(luò)編程的主要對象,一般不需要關(guān)心ip層是
45、如何處理數(shù)據(jù)的。目前較為流行的網(wǎng)絡(luò)編程模型是客戶機(jī)/服務(wù)器(c/s)結(jié)構(gòu)。即通信雙方一方作為服務(wù)器等待客戶提出請求并予以響應(yīng)??蛻魟t在需要服務(wù)時(shí)向服務(wù)器提出申請。服務(wù)器一般作為守護(hù)進(jìn)程始終運(yùn)行,監(jiān)聽網(wǎng)絡(luò)端口,一旦有客戶請求,就會(huì)啟動(dòng)一個(gè)服務(wù)進(jìn)程來響應(yīng)該客戶,同時(shí)自己繼續(xù)監(jiān)聽服務(wù)端口,使后來的客戶也能及時(shí)得到服務(wù)。下圖是客戶端與服務(wù)器的工作流程。java對這個(gè)模型的支持有很多種api,而這里我只想介紹有關(guān)socket的編程接口,對于java而言已經(jīng)簡化了socket的編程接口。首先我們來討論有關(guān)提供固定位置的服務(wù)方是如何建立的。java提供了serversocket來對其進(jìn)行支持.事實(shí)上當(dāng)你創(chuàng)建
46、該類的一個(gè)實(shí)力對象并提供一個(gè)端口資源你就建立了一個(gè)固定位置可以讓其他計(jì)算機(jī)來訪問你,serversocket server=new serversocket(6789);這里稍微要注意的是端口的分配必須是唯一的。因?yàn)槎丝谑菫榱宋ㄒ粯?biāo)識(shí)每臺(tái)計(jì)算機(jī)唯一服務(wù)的,另外端口號(hào)是從065535之間的,前1024個(gè)端口已經(jīng)被tcp/ip 作為保留端口,因此你所分配的端口只能是1024個(gè)之后的。好了,我們有了固定位置.現(xiàn)在所需要的就是一根連接線了.該連接線由客戶方首先提出要求。因此java同樣提供了一個(gè)socket對象來對其進(jìn)行支持,只要客戶方創(chuàng)建一個(gè)socket的實(shí)例對象進(jìn)行支持就可以了。socket cl
47、ient =new socket(inetaddress.getlocalhost(),5678);客戶機(jī)必須知道有關(guān)服務(wù)器的ip地址,對于著一點(diǎn)java也提供了一個(gè)相關(guān)的類inetaddress 該對象的實(shí)例必須通過它的靜態(tài)方法來提供,它的靜態(tài)方法主要提供了得到本機(jī)ip 和通過名字或ip直接得到inetaddress的方法。 最開始,線程只是用于分配單個(gè)處理器的處理時(shí)間的一種工具。但假如操作系統(tǒng)本身支持多個(gè)處理器,那么每個(gè)線程都可分配給一個(gè)不同的處理器,真正進(jìn)入“并行運(yùn)算”狀態(tài)。從程序設(shè)計(jì)語言的角度看,多線程操作最有價(jià)值的特性之一就是程序員不必關(guān)心到底使用了多少個(gè)處理器。程序在邏輯意義上被分
48、割為數(shù)個(gè)線程;假如機(jī)器本身安裝了多個(gè)處理器,那么程序會(huì)運(yùn)行得更快,毋需作出任何特殊的調(diào)校。 多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候?qū)崿F(xiàn)的。創(chuàng)建線程并使得其可以和網(wǎng)絡(luò)連線取得聯(lián)系。然后由線程來執(zhí)行剛才的操作,要?jiǎng)?chuàng)建線程要么直接繼承thread要么實(shí)現(xiàn)runnable接口,要建立和socket的聯(lián)系只要傳遞引用就可以了。而要執(zhí)行線程就必須重寫run方法,而run方法所做的事情就是剛才單線程版本main所做的事情。類直接從thread類繼承了下來。并且通過構(gòu)造函數(shù)傳遞引用和客戶socket建立了聯(lián)系,這樣每
49、個(gè)線程就有了。一個(gè)通訊管道.同樣我們可以填寫run方法,把之前的操作交給線程來完成,這樣多客戶并行的socket就建立起來了。線程是程序執(zhí)行的基本原子單位, 一個(gè)進(jìn)程可以由多個(gè)線程組成。在分布式編程中,正確使用線程能夠很好的提高應(yīng)用程序的性能及運(yùn)行效率。實(shí)現(xiàn)原理是將一個(gè)進(jìn)程分成多個(gè)線程,然后讓它們并發(fā)異步執(zhí)行,來提高運(yùn)行效率。并發(fā)執(zhí)行并不是同時(shí)執(zhí)行(占有cpu),任意時(shí)刻還是只能有一個(gè)線程占用cpu,只不過是它們爭奪cpu頻繁一些,感覺到他們似乎都在運(yùn)行。多線程是指程序中包含多個(gè)執(zhí)行流,即在一個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線程來執(zhí)行不同的任務(wù),也就是說允許單個(gè)程序創(chuàng)建多個(gè)并行執(zhí)行的線程來完成各
50、自的任務(wù)。在java中使用socket(套接字)完成tcp程序的開發(fā),使用此類可以方便地建立可靠的、雙向的、持續(xù)的、點(diǎn)對點(diǎn)的通信連接。在socket的程序開發(fā)中,服務(wù)器端使用serversocket等待客戶端的連接,對于java的網(wǎng)絡(luò)程序來講,每一個(gè)客戶端都使用一個(gè)socket對象表示。4.2.6 網(wǎng)絡(luò)五子棋開始網(wǎng)絡(luò)對戰(zhàn)模式服務(wù)器繪制棋盤,設(shè)置panel背景使jpaneup可視化顯示按鈕等基本控件等待連接選擇棋子選擇創(chuàng)建連接按鈕開始網(wǎng)絡(luò)對戰(zhàn)模式客戶端繪制棋盤,設(shè)置panel背景使jpaneup可視化顯示按鈕等基本控件連接端口號(hào)為客戶端創(chuàng)建的端口對方棋子反饋選擇連接按鈕在五子棋網(wǎng)絡(luò)編程中添加了三
51、個(gè)類。client類,server類和networkhelper類,server類服務(wù)器類,有networkhelpe類的對象,以net.listen()函數(shù)調(diào)用networkhelpe類來監(jiān)聽是否有客戶端連接。client類是客戶端類。有networkhelpe類的對象,通過control實(shí)例的setcolor布爾值來判斷是否服務(wù)器已設(shè)置過棋子顏色。通過control實(shí)例的partputchess布爾值來判斷是否服務(wù)器在下子狀態(tài)。在networkhelper類中,封裝了與網(wǎng)絡(luò)連接相關(guān)的各個(gè)函數(shù)和變量。變量:intport連接的端口號(hào)threadthread線程printwriterout輸出
52、流bufferedreaderin緩沖輸入流socketsocket套接字serversocketser服務(wù)器和端口綁定對象方法:listen()為服務(wù)器調(diào)用的函數(shù),監(jiān)聽到連接請求,在accept()后建立基本連接。out.println是向另一端發(fā)送消息,建立線程使其后臺(tái)運(yùn)行。connect()為客戶端調(diào)用的函數(shù),socket = new socket(ip, port);輸入服務(wù)器占用的端口號(hào)進(jìn)行連接,建立線程使其后臺(tái)運(yùn)行。parse()函數(shù)是線程的run函數(shù)調(diào)用的,依次讀每一行消息,用line.startswith提取關(guān)鍵字。用line.split( )以空格split分開字符串存在va
53、lue數(shù)組中便于程序調(diào)用?;谄逵幸惶纵^為復(fù)雜的消息傳送機(jī)制。提出悔棋請求的一方向另一方發(fā)送asking請求。以joptionpane.showconfirmdialog的形式得到反饋,若同意向請求方發(fā)送agreed請求,不同意則向請求方發(fā)送disgreed請求。請求方解析反饋,執(zhí)行相應(yīng)的代碼。服務(wù)器端棋子顏色的選擇也決定下棋的先后順序,所以如果服務(wù)器端選擇的是黑棋,則在客戶端中control實(shí)例中的enable為假,即白棋端不能放子。如果服務(wù)器端選擇的是白棋,則服務(wù)器端中的enable為假。在每次對方放子時(shí),另一方進(jìn)入waiting消息機(jī)制中,其enable為假,只能等待,不能下子。消息機(jī)制執(zhí)
54、行操作putchess服務(wù)器和客戶端下棋消息waiting在一方下子時(shí),另一方應(yīng)等待。不能執(zhí)行下子。設(shè)置enable為假asking提出悔棋請求agreed反饋同意悔棋請求disgreed反饋不同意悔棋請求chesscolour服務(wù)器方選擇棋子顏色消息。間接決定客戶端方的棋子顏色rebanken在一方悔棋后,悔棋方重新下子,另一方的不能放子,其enable為假restart一方選擇重新開始,另一方自動(dòng)重新開始。第五章 在windows平臺(tái)下的發(fā)布與效果展示單機(jī)界面:判斷輸贏:保存棋局:加載棋局:網(wǎng)絡(luò)對戰(zhàn)界面:服務(wù)器方通知客戶端選子:一方提出悔棋請求:另一方反饋是否同意悔棋(單擊確定重刷界面):第六章 總結(jié)與展望通過這次對java的學(xué)習(xí),讓我漸漸體會(huì)到了java的博大精深。以及怎么學(xué)習(xí)java,怎么學(xué)習(xí)計(jì)算機(jī)語言,怎樣對問題進(jìn)行解決和運(yùn)用java gui,查找java api的使用都用了更進(jìn)一步的理解。在文檔方面,完成了這次的課程設(shè)計(jì),我們了解到了課程設(shè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年太原客運(yùn)從業(yè)資格證試題下載
- 2024年太原客運(yùn)從業(yè)資格證急救考試試題教程及答案
- 運(yùn)動(dòng)會(huì)鐵餅加油稿模板
- 簡單個(gè)人的借款合同
- 幼兒園冬至國旗下的講話稿范文(33篇)
- 簡書發(fā)帖關(guān)鍵詞排名代發(fā)怎么做
- 新時(shí)代青年的使命與擔(dān)當(dāng)10
- 《中國高血壓臨床實(shí)踐指南2024》解讀
- 《漢字家園》課件長
- 多發(fā)性骨髓瘤的病例討論
- 第六章-復(fù)合材料課件
- 工程圖學(xué)習(xí)題集答案合工大課件
- 環(huán)境規(guī)劃課件
- 七大洲與四大洋課件
- 醫(yī)院關(guān)于成立創(chuàng)傷中心救治團(tuán)隊(duì)的通知
- 深度訪談技巧課件
- 北師大八年級(jí)上冊數(shù)學(xué)期中知識(shí)點(diǎn)梳理
- 惠普的管理流程-詳細(xì)解讀
- T-CIATCM 008-2019 中醫(yī)藥衛(wèi)生經(jīng)濟(jì)信息標(biāo)準(zhǔn)體系表
- 函數(shù)周期性和對稱性課件
- 地下車庫給排水及管線綜合設(shè)計(jì)要求
評(píng)論
0/150
提交評(píng)論