版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、- .-. -可修編- . z.基于JAVA的五子棋游戲系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)專 業(yè) 電子信息工程 學(xué)生 董永杰 指導(dǎo)教師 曾玉 -. z.摘 要 目前,隨著計(jì)算機(jī)網(wǎng)絡(luò)的的開展,以計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)為核心的現(xiàn)代網(wǎng)絡(luò)技術(shù)已經(jīng)在現(xiàn)實(shí)生活和生產(chǎn)中得到了廣泛的使用,已經(jīng)成為多數(shù)人群的休閑方式,也為多數(shù)人所喜好。當(dāng)然,為了滿足沒有網(wǎng)絡(luò)同樣能娛樂的要求,許多小游戲做成了單機(jī)和網(wǎng)絡(luò)的雙功能。 本軟件使用JAVA語(yǔ)戶端之間的連接,利用多線程技術(shù)言實(shí)現(xiàn),通過(guò)對(duì)圖形界面,繪圖,布局管理器等去構(gòu)造出游戲的單機(jī)功能,在此根底上,利用SCOKET的知識(shí),建立起效勞器與客來(lái)處理效勞器端與客戶端之間的數(shù)據(jù)傳輸,通信問題,使得客戶
2、端和效勞器端之間能夠同步的進(jìn)展處理。通過(guò)對(duì)軟件的編寫,更深入的理解了面向?qū)ο蟮母拍?,也體會(huì)到利用面向?qū)ο笳Z(yǔ)言處理一些問題的優(yōu)勢(shì)。同時(shí)也加深了對(duì)多線程,流套接字等高級(jí)技術(shù)的理解。關(guān)鍵詞: 多線程;流套接字;數(shù)據(jù)傳輸;同步。-. z.ABSTRACTAt present, With the rapid development of puter network. Taking puter technology and the network technology as the core, modern network technology is already used in the real li
3、fe and the production and already became the leisure mode of the most people. And most people like them. Of course, its a pity that there still have some clients lacking of network because of various causes.In order to satisfy the above clients requirements. A large number of games ,usually named as
4、 small games by players, are designed for involving two kinds of different function. The former game is often played by these players whose puters never connect with the network. Its called for stand-alone version games. Just as its name implies, the later is named as online version games This softw
5、are implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very
6、 convenient for both client and server to do the synchronous processing.Through to the software pilation, deepen understanding and grasp to the technology above understanding and holding.Key Words: multiple thread, Socket, transmission-data, synchronism.- .-. z.目錄TOC o 1-3 h u HYPERLINK l _Toc21007
7、第一章 緒論 PAGEREF _Toc21007 1 HYPERLINK l _Toc27600 1.1開發(fā)背景 PAGEREF _Toc27600 1 HYPERLINK l _Toc12224 1.2課題意義 PAGEREF _Toc12224 1 HYPERLINK l _Toc12802 1.3五子棋游戲的開展與現(xiàn)狀 PAGEREF _Toc12802 2 HYPERLINK l _Toc31735 1.4論文的組織構(gòu)造 PAGEREF _Toc31735 3 HYPERLINK l _Toc15132 第二章 五子棋程序相關(guān)技術(shù)介紹 PAGEREF _Toc15132 4 HYPER
8、LINK l _Toc14615 2.1軟件的根本功能 PAGEREF _Toc14615 4 HYPERLINK l _Toc5526 2.2開發(fā)運(yùn)行環(huán)境 PAGEREF _Toc5526 4 HYPERLINK l _Toc8885 2.3軟件的開發(fā)手段以及工具的介紹 PAGEREF _Toc8885 4 HYPERLINK l _Toc25007 2.3.1 Java簡(jiǎn)介 PAGEREF _Toc25007 4 HYPERLINK l _Toc18223 2.3.2 MyEclipse10開發(fā)環(huán)境簡(jiǎn)介 PAGEREF _Toc18223 7 HYPERLINK l _Toc28443 2
9、.4軟件的實(shí)現(xiàn)目的 PAGEREF _Toc28443 8 HYPERLINK l _Toc28420 第三章 五子棋程序分析與設(shè)計(jì) PAGEREF _Toc28420 9 HYPERLINK l _Toc17775 3.1用戶需求分析 PAGEREF _Toc17775 9 HYPERLINK l _Toc18471 3.2軟件功能構(gòu)造圖 PAGEREF _Toc18471 9 HYPERLINK l _Toc21699 3.3軟件各個(gè)功能的簡(jiǎn)要說(shuō)明 PAGEREF _Toc21699 10 HYPERLINK l _Toc15512 3.4軟件設(shè)計(jì)中使用到的JAVA軟件包以及類和方法 PA
10、GEREF _Toc15512 12 HYPERLINK l _Toc14412 3.5 五子棋界面設(shè)計(jì) PAGEREF _Toc14412 13 HYPERLINK l _Toc22278 3.6 五子棋算法設(shè)計(jì) PAGEREF _Toc22278 14 HYPERLINK l _Toc780 3.6.1 五子棋棋盤設(shè)計(jì) PAGEREF _Toc780 15 HYPERLINK l _Toc27978 3.6.2 棋子設(shè)計(jì) PAGEREF _Toc27978 16 HYPERLINK l _Toc3789 3.6.3 落子算法設(shè)計(jì) PAGEREF _Toc3789 17 HYPERLINK
11、l _Toc18429 3.6.4 判斷輸贏設(shè)計(jì) PAGEREF _Toc18429 19 HYPERLINK l _Toc18419 3.7 網(wǎng)絡(luò)五子棋算法設(shè)計(jì) PAGEREF _Toc18419 21 HYPERLINK l _Toc30581 第四章 軟件的具體實(shí)現(xiàn) PAGEREF _Toc30581 23 HYPERLINK l _Toc1263 4.1準(zhǔn)備工作 PAGEREF _Toc1263 23 HYPERLINK l _Toc18924 4.2游戲窗口界面的實(shí)現(xiàn) PAGEREF _Toc18924 23 HYPERLINK l _Toc11876 4.3下棋算法的實(shí)現(xiàn)PAGER
12、EF _Toc11876 25 HYPERLINK l _Toc13216 4.4完成判斷勝負(fù)的功能 PAGEREF _Toc13216 27 HYPERLINK l _Toc25904 4.5 系統(tǒng)測(cè)試 PAGEREF _Toc25904 30 HYPERLINK l _Toc16680 4.6 測(cè)試方案 PAGEREF _Toc16680 31 HYPERLINK l _Toc32246 4.6.1 界面功能測(cè)試 PAGEREF _Toc32246 31 HYPERLINK l _Toc11613 4.6.2 單機(jī)游戲測(cè)試 PAGEREF _Toc11613 32 HYPERLINK l
13、_Toc9703 4.6.3 聯(lián)網(wǎng)游戲測(cè)試 PAGEREF _Toc9703 33 HYPERLINK l _Toc16252 4.7 測(cè)試結(jié)果 PAGEREF _Toc16252 34 HYPERLINK l _Toc25301 第五章 總結(jié)與展望 PAGEREF _Toc25301 35 HYPERLINK l _Toc31600 致 PAGEREF _Toc31600 36 HYPERLINK l _Toc28886 附錄 PAGEREF _Toc28886 37 HYPERLINK l _Toc15725 JIcon.java程序: PAGEREF _Toc15725 37 HYPER
14、LINK l _Toc20991 Qipan.java局部程序: PAGEREF _Toc20991 37 HYPERLINK l _Toc25396 參考文獻(xiàn) PAGEREF _Toc25396 43- .-. -可修編- . z.第一章 緒論1.1開發(fā)背景 隨著計(jì)算機(jī)的快速開展,各種游戲被紛紛請(qǐng)進(jìn)了電腦。而像五子棋這類不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性的棋類游戲更是備受推崇。這使得那些喜愛下棋,又常??嘤跊]有對(duì)手的棋迷們能隨時(shí)過(guò)足棋癮。而且這類軟件個(gè)個(gè)水平頗高,大有與人腦分庭抗禮之勢(shì)。其中戰(zhàn)勝過(guò)國(guó)際象棋世界冠軍-卡斯帕羅夫的深藍(lán)便是最具說(shuō)服力的代表,其它像圍棋的手淡
15、、象棋的將族等也以其優(yōu)秀的人工智能深受棋迷喜愛。 五子棋是我國(guó)古代的、傳統(tǒng)的黑白棋種之一,大約在南北朝時(shí)期隨圍棋一起先后傳入朝鮮、日本等地?,F(xiàn)代五子棋日文稱之為連珠,英譯為Ren-ju,英文稱之為Gobang或FIR(Five in a Row的縮寫),亦有連五子、五子連、串珠、五目、五目碰、五格等多種稱謂。通過(guò)一系列的規(guī)則變化使連珠五子棋這一簡(jiǎn)單的游戲復(fù)雜化、規(guī)化,而最終成為今天的職業(yè)連珠五子棋,同時(shí)也成為一種國(guó)際比賽棋。 五子棋既有現(xiàn)代休閑的明顯特征短、平、快,又有古典哲學(xué)的高深學(xué)問陰陽(yáng)易理;它既有簡(jiǎn)單易學(xué)的特性,為人民群眾所喜聞樂見,又有深?yuàn)W的技巧和高水平的國(guó)際性比賽;它的棋文化源淵流長(zhǎng)
16、,具有的神秘和西方的直觀;既有場(chǎng)的概念,亦有點(diǎn)的連接。它是中西文化的交流點(diǎn),是古今哲理的結(jié)晶。五子棋起源于古代中國(guó),開展于日本,風(fēng)行于歐洲。它在不同的國(guó)度也有著不同的稱謂,如國(guó)人稱其為情侶棋;歐洲人稱其為紳士棋;日本人稱其為中老年棋;美國(guó)人則喜歡將其稱為商業(yè)棋。由此可見,盡管國(guó)度不同,語(yǔ)言各異,但人們都可以借助這一簡(jiǎn)單又深?yuàn)W的棋藝進(jìn)展交流、比賽,增進(jìn)友誼。1.2課題意義人類之所以不斷在進(jìn)步,是因?yàn)槲覀內(nèi)祟愐恢辈粩嗟脑谒伎?,五子棋游戲程序的開發(fā)符合人類進(jìn)步也是促進(jìn)人類進(jìn)步的一大動(dòng)力之一。五子棋游戲程序讓人們方便快捷的可以下五子棋,讓人們?cè)诤螘r(shí)都能通過(guò)下棋來(lái)提高邏輯思維能力,同時(shí)也培養(yǎng)兒童的興趣以
17、及愛好,讓孩子更加聰明。同時(shí),五子棋游戲程序的開發(fā)也使得五子棋這個(gè)游戲得到了廣泛的推廣,讓世界各地的人們知道五子棋,玩上五子棋,這已經(jīng)不是局限。五子棋游戲程序使得越來(lái)越多的人喜歡上了五子棋,熱愛下五子棋,它是具有很好的帶動(dòng)性的。隨著互聯(lián)網(wǎng)絡(luò)的不斷普及,越來(lái)越多的人可以在網(wǎng)絡(luò)上就能夠與他人下五子棋了。1.3五子棋游戲的開展與現(xiàn)狀目前,連珠這一棋類運(yùn)動(dòng)已迅速在國(guó)際上開展起來(lái)。外國(guó)人都十分看好這一不起眼的智力游戲,并認(rèn)為五子棋不僅能提高思維、開發(fā)智力、手腦并用、修身養(yǎng)性 而且富含哲理,具有的神秘和西方的直觀,是中西文化的交匯點(diǎn)。許多國(guó)家的人對(duì)五子棋都有不同的愛稱,例如國(guó)人把五子棋稱之為情侶棋,言下之
18、意是情人之間下五子棋有利于增加情感的交流;歐洲人稱之為中老年棋,表示五子棋適合中老年人的生理特點(diǎn)和思維方式;美洲人喜歡將五子棋稱之為商業(yè)棋,就是說(shuō)商人談生意時(shí)可邊下棋邊談生意,棋下完了生意也談成了。由此可見,盡管國(guó)度不同,語(yǔ)言各異,但人們都可以借助五子棋這一簡(jiǎn)單而又深?yuàn)W的棋藝進(jìn)展交流、比賽,增進(jìn)友誼。當(dāng)前,有多個(gè)國(guó)家和地區(qū)都在下五子棋,并有各種規(guī)模和級(jí)別的比賽。年月在日本京都、年月在俄羅斯聯(lián)邦的莫斯科、年月在瑞典、年月在愛沙尼亞的塔林分別舉行了第一、二、三、四屆世界錦標(biāo)賽。除第三屆的冠軍是愛沙尼亞人之外,其余三屆的冠軍都是日本人。五子棋 的世界錦標(biāo)賽,每?jī)赡昱e辦一次,其申國(guó)競(jìng)爭(zhēng)也十分劇烈。日本
19、目前擁有自己的五子棋職業(yè)棋手,并且對(duì)連珠五子棋技術(shù)的研究也相當(dāng)普遍和全面,就水平也正在日益增強(qiáng)。同時(shí),五子棋的理論研究與探索也呈現(xiàn)蓬勃開展的勢(shì)頭,從年第一部五子棋專著問世以來(lái),目前,全世界有多種五子棋的書籍及期刊,分別以日文、俄文、英文、瑞典文及中文。五子棋在我國(guó)的、*、*、等省區(qū)市都有很大的開展。屢次舉辦了地區(qū)的五子棋賽,如思曼杯、京空杯、奇奇童杯、第六屆民族團(tuán)結(jié)杯和第四豈民族運(yùn)動(dòng)會(huì)的五子棋比賽。地區(qū)舉辦了上文杯五子棋大賽。省以及其他省市亦舉辦過(guò)許多五子棋比賽。所有這些賽事都越來(lái)越多地吸引了無(wú)數(shù)人們的關(guān)注,說(shuō)明了根埴于中國(guó)的五子棋有著廣泛的群眾根底,是群眾喜聞樂見的體育活動(dòng)。而現(xiàn)在,很多很多
20、游戲平臺(tái)上面都有五子棋游戲供我們玩,任何游戲平臺(tái)上面只要有棋牌類游戲的,則它就有五子棋在里面,網(wǎng)絡(luò)五子棋比賽,在聯(lián)眾,263,QQ游戲,UC里進(jìn)展了10幾年了??梢姡遄悠逵螒蛟诰W(wǎng)絡(luò)上面是非?;鸨┑?。而且在棋牌游戲里面玩家人數(shù)排名總會(huì)占到很前面,不愧是風(fēng)行全球的棋牌游戲??!在未來(lái)中,將會(huì)有越來(lái)越多的人關(guān)注五子棋,喜歡五子棋,則將其變?yōu)樯虡I(yè)化也會(huì)越來(lái)越多,而且還可以以教育孩子的方式來(lái)將其嵌套進(jìn)去,或者用來(lái)做測(cè)試等等,可以說(shuō)以后的五子棋游戲會(huì)是則的精彩,則的讓人憧憬。則對(duì)于它的游戲開發(fā)和開展也將會(huì)上升到舉足輕重的地位去,它的開展會(huì)是相當(dāng)之快的,就讓我們拭目以待吧。1.4論文的組織構(gòu)造本文由第一章緒
21、論,第二章五子棋程序相關(guān)技術(shù)介紹,第三章五子棋程序分析與設(shè)計(jì),第四章軟件的具體實(shí)現(xiàn),第五章總結(jié)與展望,最后由致、附錄和參考文獻(xiàn)八局部組成。第一章緒論由研究背景、五子棋的開展前景、五子棋程序的根本步驟和本文的組織構(gòu)造組成。第二章介紹軟件的開發(fā)工具和和軟件的根本功能,另外介紹軟件所要實(shí)現(xiàn)的目標(biāo)。第三章軟件總體分析與設(shè)計(jì)。第四章詳細(xì)分析軟件各模塊的設(shè)計(jì)與實(shí)現(xiàn)包括繪制棋盤、下棋功能、判斷勝負(fù)、下棋信息、時(shí)間設(shè)置、認(rèn)輸?shù)裙δ芙M成。第五章是總結(jié)與展望。第六章是致。第七章是附錄。第八章是介紹參考文獻(xiàn)。- .-. z.第二章 五子棋程序相關(guān)技術(shù)介紹2.1軟件的根本功能顯示一個(gè)十五行十五列的圍棋棋盤。在棋盤上面
22、在對(duì)應(yīng)位置通過(guò)點(diǎn)擊鼠標(biāo)下子,棋盤上將在相應(yīng)的位置上顯示棋子,并且棋子在橫縱交點(diǎn)上??梢宰詣?dòng)判斷游戲是否完畢,是否黑方或者是白方已經(jīng)勝利,并且跳出對(duì)話框來(lái)提示玩家。在游戲棋盤上方會(huì)有一個(gè)游戲信息,這個(gè)游戲信息是用來(lái)提示當(dāng)前是黑白雙方的哪一方下子,玩家可以根據(jù)這個(gè)提示來(lái)相應(yīng)的下棋,而不會(huì)導(dǎo)致 不清楚輪到哪一方下棋。可以重新開場(chǎng)游戲,并且有認(rèn)輸功能,在下棋提示上提示哪方時(shí)點(diǎn)認(rèn)輸,哪一方就輸了,并且有悔棋功能。還可以對(duì)游戲時(shí)間進(jìn)展設(shè)置,判斷是否超出規(guī)定的時(shí)間,如果超出時(shí)間則自動(dòng)判斷為輸。2.2開發(fā)運(yùn)行環(huán)境中心處理器:Intel Core i5-3230M,2.6GHZ;存:4G;硬盤:750G;操作系
23、統(tǒng):WINDOWS 7;開發(fā)工具: MyEclipse10;編程語(yǔ)言:JAVA。2.3軟件的開發(fā)手段以及工具的介紹2.3.1 Java簡(jiǎn)介 Java 編程語(yǔ)言的風(fēng)格十分接近C、C+語(yǔ)言。Java是一個(gè)純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它繼承了 C+ 語(yǔ)言面向?qū)ο蠹夹g(shù)的核心,Java舍棄了C +語(yǔ)言中容易引起錯(cuò)誤的指針以引用取代、運(yùn)算符重載operator overloading、多重繼承以接口取代等特性,增加了垃圾回收器功能用于回收不再被引用的對(duì)象所占據(jù)的存空間,使得程序員不用再為存管理而擔(dān)憂。在 Java SE 1.5 版本中,Java 又引入了泛型編程Generic Programming、類型
24、平安的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱等語(yǔ)言特性。 Java 不同于一般的編譯執(zhí)行計(jì)算機(jī)語(yǔ)言和解釋執(zhí)行計(jì)算機(jī)語(yǔ)言。它首先將源代碼編譯成二進(jìn)制字節(jié)碼(bytecode),然后依賴各種不同平臺(tái)上的虛擬機(jī)來(lái)解釋執(zhí)行字節(jié)碼,從而實(shí)現(xiàn)了一次編譯、到處執(zhí)行的跨平臺(tái)特性。不過(guò),每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大幅提升。 與傳統(tǒng)程序不同,Sun 公司在推Java 之際就將其作為一種開放的技術(shù)。全球數(shù)以萬(wàn)計(jì)的 Java 開發(fā)公司被要求所設(shè)計(jì)的 Java 軟件必須相互兼容。Java 語(yǔ)言靠群體的力量而
25、非公司的力量是 Sun 公司的口號(hào)之一,并獲得了廣闊軟件開發(fā)商的認(rèn)同。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。 Sun 公司對(duì) Java 編程語(yǔ)言的解釋是:Java 編程語(yǔ)言是個(gè)簡(jiǎn)單、面向?qū)ο蟆⒎植际?、解釋性、?qiáng)健、平安與系統(tǒng)無(wú)關(guān)、可移植、高性能、多線程和動(dòng)態(tài)的語(yǔ)言。 Java 平臺(tái)是基于 Java 語(yǔ)言的平臺(tái)。這樣的平臺(tái)目前非常流行,因此微軟公司推出了與之競(jìng)爭(zhēng)的.NET平臺(tái)以及模仿 Java 的 C#語(yǔ)言。 Java技術(shù)的重要性就不講了,從最近流行的一個(gè)統(tǒng)計(jì)數(shù)據(jù)上來(lái)說(shuō),目前世界上編程語(yǔ)言Java 、C 、VB、C+依次排名前4位,這排名本身不說(shuō)明什么,但至少也是工業(yè)界對(duì)編程語(yǔ)言使
26、用上一個(gè)側(cè)面的反映。 Java編程語(yǔ)言與眾不同之處在于:Java程序既是編譯型的轉(zhuǎn)換為一種稱為Java字節(jié)碼的中間語(yǔ)言,又是解釋型的JVM 對(duì)字節(jié)碼進(jìn)展解析和運(yùn)行。編譯只進(jìn)展一次,而解釋在每次運(yùn)行程序時(shí)都會(huì)進(jìn)展。編譯后的字節(jié)碼采用一種針對(duì)JVM 優(yōu)化過(guò)的機(jī)器碼形式;解釋器是JVM 的實(shí)現(xiàn)。 Java具有眾多優(yōu)點(diǎn),比方平臺(tái)無(wú)關(guān)性,平安性,面向?qū)ο螅瑥?qiáng)健式,分布式等。與c+相比,Java去掉了其中的指針運(yùn)算、構(gòu)造、typedefs、#define、需要釋放存等功能,減少了平常出錯(cuò)的50%,讓Java的語(yǔ)言功能很精煉。而且,因?yàn)镴ava很小,所以整個(gè)解釋器只需215K的RAM,并增加了一些很有用的功
27、能。2.3.2 MyEclipse10開發(fā)環(huán)境簡(jiǎn)介 MyEclipse10 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組效勞,用于通過(guò)插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,MyEclipse10 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具。MyEclipse10的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得MyEclipse10擁有其他功能相對(duì)固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以MyEclipse10為框架開發(fā)自己的IDE。 MyEclipse10是一個(gè)開放源代碼的軟件開發(fā)工程,專注于為高度集成的工具開發(fā)提供一個(gè)全功能的、具有商業(yè)品質(zhì)的
28、工業(yè)平臺(tái)。它主要由MyEclipse10工程、MyEclipse10工具工程和MyEclipse10技術(shù)工程三個(gè)工程組成,具體包括四個(gè)局部組成MyEclipse Platform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來(lái)支持插件開發(fā),MyEclipse Platform則是一個(gè)開放的可擴(kuò)展IDE,提供了一個(gè)通用的開發(fā)平臺(tái)。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開發(fā)工具的根底。MyEclipse Platform允許工具建造者獨(dú)立開發(fā)與他人工具無(wú)縫集成的工具從而無(wú)須分辨一個(gè)工具功能在哪里完畢,而另一個(gè)工具功能在哪里開場(chǎng)。雖然大多數(shù)用戶很樂于將 MyEclipse10
29、當(dāng)作 Java IDE來(lái)使用,但MyEclipse10 的目標(biāo)不僅限于此。MyEclipse10還包括插件開發(fā)環(huán)境Plug-in Development Environment,PDE,這個(gè)組件主要針對(duì)希望擴(kuò)展 MyEclipse10的軟件開發(fā)人員,因?yàn)樗试S他們構(gòu)建與MyEclipse10 環(huán)境無(wú)縫集成的工具。由于MyEclipse10 中的每樣?xùn)|西都是插件,對(duì)于給MyEclipse10 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場(chǎng)所。MyEclipse SDK軟件開發(fā)者包是MyEclipse Platform、JDT和PDE所生產(chǎn)的組件合并,它們
30、可以一次下載。這些局部在一起提供了一個(gè)具有豐富特性的開發(fā)環(huán)境,允許開發(fā)者有效地建造可以無(wú)縫集成到MyEclipse Platform中的工具。MyEclipse SDK由MyEclipse10工程生產(chǎn)的工具和來(lái)自其它開放源代碼的第三方軟件組合而成。MyEclipse10工程生產(chǎn)的軟件以 GPL發(fā)布,第三方組件有各自自身的許可協(xié)議。 MyEclipse10的根底是富客戶機(jī)平臺(tái)Rich Client Platform, 即RCP。RCP包括以下組件: 核心平臺(tái)(啟動(dòng)MyEclipse10,運(yùn)行插件 OSGi標(biāo)準(zhǔn)集束框架 SWT可移植構(gòu)件工具包 JFace文件緩沖,文本處理,文本編輯器MyEclip
31、se10工作臺(tái)即Workbench ,包含視圖views、編輯器editors、視角perspectives、和向?qū)izards MyEclipse10采用的技術(shù)是IBM公司開發(fā)的SWT,這是一種基于Java的窗口組件,類似Java本身提供的AWT和Swing窗口組件;不過(guò)IBM聲稱SWT比其他Java窗口組件更有效率。MyEclipse10的用戶界面還使用了GUI中間層JFace,從而簡(jiǎn)化了基于SWT的應(yīng)用程序的構(gòu)建。MyEclipse10的插件機(jī)制是輕型軟件組件化架構(gòu)。在富客戶機(jī)平臺(tái)上, MyEclipse10使用插件來(lái)提供所有的附加功能,例如支持Java以外的其他語(yǔ)言。 已有的別離的插
32、件已經(jīng)能夠支持C/C+CDT、Perl、Ruby,Python、telnet和數(shù)據(jù)庫(kù)開發(fā)。插件架構(gòu)能夠支持將任意的擴(kuò)展參加到現(xiàn)有環(huán)境中,例如配置管理,而決不僅僅限于支持各種編程語(yǔ)言。MyEclipse10的設(shè)計(jì)思想是:一切皆插件。MyEclipse10核心很小,其它所有功能都以插件的形式附加于MyEclipse10核心之上。MyEclipse10根本核包括:圖形API (SWT/Jface), Java開發(fā)環(huán)境插件(JDT ),插件開發(fā)環(huán)境(PDE)等2.4軟件的實(shí)現(xiàn)目的五子棋游戲程序所要實(shí)現(xiàn)的目的是讓我們可以在電腦上下棋,而不需要去買,可以隨時(shí)玩,也可以聯(lián)機(jī)對(duì)戰(zhàn),方便快捷。而且能更好的推廣五
33、子棋于世界各地,此軟件也在于提供應(yīng)愛好五子棋的人,也吸引更多的人喜歡上五子棋,也具有很大的商業(yè)價(jià)值。使五子棋游戲程序在以后的制作中功能越來(lái)越強(qiáng)大,外觀越來(lái)越好看。- .-. z.第三章 五子棋程序分析與設(shè)計(jì)3.1用戶需求分析 通過(guò)軟件功能的分析,根據(jù)五子棋愛好者的需求,得出以下需求信息:具有重新開場(chǎng)功能;具有認(rèn)輸功能;具有提示該輪到哪一方下棋的功能;退出游戲功能;判斷勝負(fù)功能;時(shí)間設(shè)置功能;五子棋難度選擇功能;聯(lián)機(jī)功能。還有用戶對(duì)游戲界面的要求,通過(guò)上述的用戶需求,可以得出一個(gè)總體的設(shè)計(jì)方案。由上述的用戶需要,可以對(duì)程序的根本功能進(jìn)展一個(gè)有效的分析,規(guī)定下游戲的根本功能。3.2軟件功能構(gòu)造圖此
34、五子棋程序最主要的五大功能是:下棋,判斷勝負(fù),重新開場(chǎng)與認(rèn)輸,聯(lián)網(wǎng)游戲的設(shè)置與五子棋難度的選擇。大體的功能如圖3-1:五子棋程序棋盤的設(shè)計(jì)五子棋程序棋盤的設(shè)計(jì)下棋方法的判定落子的設(shè)計(jì)輸贏的判定游戲提示聯(lián)機(jī)對(duì)完設(shè)計(jì)選擇難度圖 3-1 五子棋功能設(shè)定圖3.3軟件各個(gè)功能的簡(jiǎn)要說(shuō)明繪制十五行十五列的棋盤:首先是每行每列的距離都是一樣的,并且棋盤上面有五個(gè)星,棋盤中間有個(gè)天元點(diǎn),跟圍棋的棋盤一樣。點(diǎn)擊鼠標(biāo)以后,會(huì)在相應(yīng)位置落下棋子,并被繪制出來(lái),黑子是一個(gè)實(shí)心的黑圓,白子是一個(gè)實(shí)心的白圓加上一個(gè)等大空心的黑圓。棋子落在交點(diǎn)上:我們?cè)谙挛遄悠迤宓臅r(shí)候,棋子都是會(huì)落在交點(diǎn)上的,而并非落在格子里面,則我們就
35、要規(guī)定當(dāng)我點(diǎn)擊鼠標(biāo)時(shí),選取距離鼠標(biāo)所取點(diǎn)的最近的左上交點(diǎn)為繪制棋子的中心點(diǎn),則就可以實(shí)現(xiàn)棋子落在交點(diǎn)上了。黑白雙方輪流落子:黑方落子以后就要輪到白方,交替進(jìn)展,這是下棋的根本要求,因此我們就要弄一個(gè)互斥事件進(jìn)去,讓他們交替的落子。不能落在一樣位置:當(dāng)我們落子時(shí),會(huì)不小心落到一樣位置上去,則就要出現(xiàn)提示,不能落在一樣位置上,需要重新落子,實(shí)現(xiàn)的設(shè)想是當(dāng)這個(gè)點(diǎn)已經(jīng)繪制過(guò)棋子以后,我們就要給一個(gè)布爾變量,讓它為假,則只能在它為真時(shí)才能繪制棋子,否則就要重新落子到別的地方去。判斷輸贏:當(dāng)五個(gè)一樣顏色子都連在了一起的時(shí)候,我們就要判其為贏,這五個(gè)子可以在橫豎方向上連起,也可以在斜方向上連起。游戲信息:我
36、們應(yīng)該在棋盤的上面設(shè)置一個(gè)游戲信息的,用來(lái)提示當(dāng)前輪到哪一方下棋了,以便于玩家知道誰(shuí)在下,這個(gè)功能只要在黑白雙方輪流下棋功能的過(guò)程中添加一個(gè)提示信息用于顯示到界面上的就可以了。重新開場(chǎng)游戲就是把棋盤上的子全部清空,回復(fù)到一開場(chǎng)的時(shí)候的狀態(tài),重置之前所有的數(shù)據(jù)。認(rèn)輸?shù)墓δ芫褪窃谂袛噍斱A功能的根底上添加的,讓玩家對(duì)自己沒信心的時(shí)候使用。退出游戲的功能就是直接把窗口關(guān)閉就可以了。游戲難度選擇:游戲難度選擇是由玩家自主選擇的與電腦下五子棋的一個(gè)重要方法??梢愿鶕?jù)自身的下棋水平來(lái)選擇和那種電腦來(lái)下。難度分為三種,分別是:簡(jiǎn)單、中等與困難。而且電腦的思維是根據(jù)難度提升而提升。聯(lián)機(jī)對(duì)戰(zhàn):聯(lián)機(jī)對(duì)戰(zhàn)是為了方便玩
37、家與玩家相互之間切磋棋藝而設(shè)定的一大功能模塊,可以在一個(gè)局域網(wǎng)里面,然后聯(lián)機(jī)對(duì)戰(zhàn)。當(dāng)雙方建立聯(lián)系以后,點(diǎn)擊開場(chǎng)就可以進(jìn)展聯(lián)網(wǎng)對(duì)戰(zhàn)了。這極大的提高了五子棋的娛樂程度。3.4軟件設(shè)計(jì)中使用到的JAVA軟件包以及類和方法在用JAVA設(shè)計(jì)軟件的時(shí)候,使用到SUM公司提供的一些軟件包,這樣使得我們編寫程序更加簡(jiǎn)便,以下是使用到的軟件包:Java*.swing.JFrame /java*.swing軟件包提供一組輕量級(jí)全部是 Java 語(yǔ)言組件,盡量讓這些組件在所有平臺(tái)上的工作方式都一樣。JFrame 類是 的擴(kuò)展版本,該版本添加了對(duì) JFC/Swing 組件架構(gòu)的支持。JFrame 是用來(lái)創(chuàng)立窗體的sw
38、ing 類,用來(lái)創(chuàng)立一個(gè)圖形界面的原始窗口,并且可以設(shè)置其大小,位置等屬性,是swing 編程的根底類之一。Java.awt /java.awt 軟件包包含用于創(chuàng)立用戶界面和繪制圖形圖像的所有類。Java.awt.Toolkit /Toolkit此類是所有 Abstract Window Toolkit 實(shí)際實(shí)現(xiàn)的抽象超類。Toolkit 的子類被用于將各種組件綁定到特定本機(jī)工具包實(shí)現(xiàn)。Toolkit.geiDefaultToolkit().getScreenSize().width; Toolkit.geiDefaultToolkit().getScreenSize().height; /以
39、上這兩個(gè)方法的作用是取得我們電腦顯示屏幕的寬度以及高度。geiDefaultToolkit()為獲取默認(rèn)工具包,如果名為java.awt.headless 的系統(tǒng)屬性被設(shè)置為 true,則使用 Toolkit 的 headless 實(shí)現(xiàn)。 如果不存在 java.awt.headless 或 java.awt.headless 被設(shè)置false,且存在名為 awt.toolkit 的系統(tǒng)屬性,則該屬性將被視為 Toolkit 子類的名稱;否則將使用特定于平臺(tái)的默認(rèn) Toolkit 實(shí)現(xiàn)。 getScreenSize()這個(gè)方法是獲取屏幕的大小。在具有多個(gè)顯示屏的系統(tǒng)上,使用主顯示屏。從 Grap
40、hicsConfiguration 和 GraphicsDevice 可以獲得多屏幕感知顯示尺寸。Java*.swing.JOptionPane / JOptionPane 有助于方便地彈出要求用戶提供值或向其發(fā)出通知的標(biāo)準(zhǔn)對(duì)話框Java.awt.event.MouseListener /MouseLinstener 是鼠標(biāo)監(jiān)聽,功能是接收用戶通過(guò)鼠標(biāo)所做的操作,可以取得用戶點(diǎn)擊鼠標(biāo)的坐標(biāo),從而進(jìn)展其他的操作。Graphics 類, 它的功能是類似于畫筆的功能,用來(lái)在窗口中繪制文字以及圖形等。他的調(diào)用是通過(guò)覆寫JFrame 的 paint() 方法來(lái)使用的,通過(guò) repaint() 方法來(lái)調(diào)用
41、。Java.io.File /這個(gè)是產(chǎn)生中斷并且調(diào)用文件用到的類。Java.io通過(guò)數(shù)據(jù)流、序列化和文件系統(tǒng)提供系統(tǒng)輸入和輸出。File 類文件和目錄路徑名的抽象表示形式。Java.awt.image.BufferedImage /BufferedImage 子類描述具有可訪問圖像數(shù)據(jù)緩沖區(qū)的 Image。BufferedImage 由圖像數(shù)據(jù)的 ColorModel 和 Raster 組成。Raster 的 SampleModel 中 band 的數(shù)量和類型必須與 ColorModel 所要求的數(shù)量和類型相匹配,以表示其顏色和 alpha 分量。所有 BufferedImage 對(duì)象的左上角
42、坐標(biāo)都為 (0,0)。因此,用來(lái)構(gòu)造 BufferedImage 的任何 Raster 都必須滿足:min*=0 且 minY=0。 可以用來(lái)調(diào)用一個(gè)圖片作為我們下棋的背景圖片使用。3.5 五子棋界面設(shè)計(jì)開場(chǎng)開發(fā)游戲的第一步就是先制作出游戲的窗口界面,一個(gè)漂亮美麗大方的游戲界面,往往先能吸引玩家去嘗試,所以這個(gè)地方不能夠馬虎。首先我們得按照大家的習(xí)慣,也就是游戲風(fēng)格。按照國(guó)人的五子棋游戲風(fēng)格。一般是在木質(zhì)的棋盤上下,這樣能夠顯示出棋類游戲的沉穩(wěn)、大氣而又不失典雅的氣質(zhì)。所以我們?cè)O(shè)計(jì)界面的時(shí)候需要按照木質(zhì)棋盤的顏色來(lái)設(shè)計(jì)底色。在一般的五子棋游戲比賽中,需要有比賽的信息顯示,方便下棋者與觀看者根據(jù)
43、信息思考。所以在我們?cè)O(shè)計(jì)的界面上,必要的信息是不可缺少的。國(guó)人多喜歡把棋盤放在左邊,然后右邊顯示下棋的信息,所以設(shè)計(jì)棋盤的時(shí)候應(yīng)該按照國(guó)人的喜好擺放位置。根本流程如圖3-2所示:圖3-2 五子棋界面設(shè)計(jì)流程圖綜上所述,棋盤的設(shè)計(jì)是以木質(zhì)顏色為棋盤底色,畫上棋盤線條,把棋盤擺設(shè)在左邊,然后再右邊添加下棋的信息,如:狀態(tài),時(shí)間顯示,開場(chǎng)游戲等一些按鈕。3.6 五子棋算法設(shè)計(jì)五子棋算法設(shè)計(jì)可以包括如圖3-3所示設(shè)計(jì):圖3-3 五子棋算法設(shè)計(jì)圖五子棋的算法設(shè)計(jì)包括棋盤設(shè)計(jì),棋子設(shè)計(jì),落子設(shè)計(jì)以及輸贏判斷。能設(shè)計(jì)出這四個(gè)算法,一個(gè)根本的五子棋算法就算完成了。3.6.1 五子棋棋盤設(shè)計(jì)五子棋棋盤設(shè)計(jì)可以使
44、用JAVA自帶的畫圖算法。設(shè)計(jì)成十五行十五列的小型棋盤即可,然后按照圍棋棋盤的設(shè)定,畫上天元以及天星等標(biāo)記,則此棋盤就已經(jīng)設(shè)計(jì)完成了。設(shè)計(jì)圖如下:圖3-4 棋盤設(shè)計(jì)流程圖棋盤設(shè)計(jì)如上圖所示,首先是設(shè)計(jì)棋盤大小,然后設(shè)計(jì)棋盤底色這里設(shè)計(jì)底色一般為木質(zhì)顏色,如:蠟黃色和線條顏色,接下來(lái)就可以畫棋盤線條了,執(zhí)行一個(gè)循環(huán),循環(huán)次數(shù)為15次,畫出行線,然后再執(zhí)行一個(gè)15次循環(huán),畫列線。最后找到相對(duì)應(yīng)的點(diǎn),畫上天元和天星。如此下來(lái),一個(gè)優(yōu)質(zhì)的棋盤就已經(jīng)完成了。顏色、線條等個(gè)方面符合國(guó)人的審美觀。讓玩家下起來(lái)有一種和現(xiàn)實(shí)下五子棋一樣的感覺。3.6.2 棋子設(shè)計(jì)棋子設(shè)計(jì)也可以使用JAVA自帶的畫圖算法,分為黑
45、白兩種顏色的棋子,畫一個(gè)實(shí)心圓即可表示棋子。具體的實(shí)現(xiàn)設(shè)計(jì)如圖3-5所示:圖3-5 棋子設(shè)計(jì)流程圖棋子設(shè)計(jì)就需要使用java自帶的畫圖方法,獲取橫豎穿插點(diǎn),然后以該點(diǎn)為圓心,畫一個(gè)半徑為13的圓,然后填充兩種顏色:黑色和白色。完成后判定該圓是否屬于剛剛落下的棋子,如果是,則在填充一個(gè)半徑為6的紅色圓,表示該棋子剛剛走完。3.6.3 落子算法設(shè)計(jì)由于需要設(shè)計(jì)單機(jī)游戲和聯(lián)機(jī)對(duì)戰(zhàn)。但是該算法不涉及到聯(lián)機(jī)對(duì)戰(zhàn),所以該算法只針對(duì)單機(jī)游戲。初步設(shè)定單機(jī)游戲分為三種難度等級(jí)。分別為容易、中等和困難。我們可以通過(guò)一個(gè)算法來(lái)表達(dá)不同難度,電腦只能從玩家手中獲取玩家下棋的情況,包括以下幾種情況:當(dāng)計(jì)算出的自己已經(jīng)
46、有四個(gè)連珠并且沒有被堵住的情況下當(dāng)然也就是說(shuō)下一顆子就必贏的情況當(dāng)計(jì)算出的對(duì)方已經(jīng)有四個(gè)連珠并且沒有被堵住的情況下當(dāng)然也就是說(shuō)必須堵住當(dāng)計(jì)算出的自己已經(jīng)有三個(gè)連珠并且沒有被堵住的情況下當(dāng)然也就是說(shuō)下一顆子就必贏的情況當(dāng)計(jì)算出的對(duì)方已經(jīng)有三個(gè)連珠并且沒有被堵住的情況下當(dāng)然也就是說(shuō)必須堵住四三連的情況 三三連的情況其算法流程圖如圖3-6所示:圖 3-6 五子棋算法流程圖開場(chǎng)下子,系統(tǒng)賦予該棋子Value初始值,然后系統(tǒng)自動(dòng)分/|這四個(gè)方向進(jìn)展判斷是否完畢。當(dāng)系統(tǒng)定義為簡(jiǎn)單的時(shí)候只能滿足以下情況:當(dāng)計(jì)算出的自己已經(jīng)有四個(gè)連珠并且至少有一個(gè)沒有被其他顏色棋子攔截的情況下,就會(huì)自動(dòng)去補(bǔ)齊。當(dāng)計(jì)算出的對(duì)方
47、已經(jīng)有四個(gè)連珠并且沒有被攔截住的情況就會(huì)去攔截。 其他情況則不攔截。所以簡(jiǎn)單的電腦較為容易。中等難度算法當(dāng)自己已經(jīng)有四個(gè)連珠并且至少有一個(gè)沒有被其他顏色棋子攔截的情況下,就會(huì)自動(dòng)去補(bǔ)齊。當(dāng)計(jì)算出的對(duì)方已經(jīng)有四個(gè)連珠并且沒有被攔截住的情況就會(huì)去攔截。當(dāng)計(jì)算出的自己已經(jīng)有三個(gè)連珠并且沒有被攔截的情況下就會(huì)繼續(xù)補(bǔ)齊到第四顆棋子,然后繼續(xù)1號(hào)操作。 當(dāng)計(jì)算出的對(duì)方已經(jīng)有三個(gè)連珠并且沒有被攔截的情況就會(huì)主動(dòng)去攔截。 當(dāng)為棋盤出現(xiàn)四三連三三連連子的情況時(shí)候它不攔截當(dāng)系統(tǒng)設(shè)定為困難的時(shí)候當(dāng)計(jì)算出的自己已經(jīng)有四個(gè)連珠并且至少有一個(gè)沒有被其他顏色棋子攔截的情況下,就會(huì)自動(dòng)去補(bǔ)齊。當(dāng)計(jì)算出的對(duì)方已經(jīng)有四個(gè)連珠并且
48、沒有被攔截住的情況就會(huì)去攔截。當(dāng)計(jì)算出的自己已經(jīng)有三個(gè)連珠并且沒有被攔截的情況下就會(huì)繼續(xù)補(bǔ)齊到第四顆棋子,然后繼續(xù)1號(hào)操作。 當(dāng)計(jì)算出的對(duì)方已經(jīng)有三個(gè)連珠并且沒有被攔截的情況就會(huì)主動(dòng)去攔截。 當(dāng)計(jì)算機(jī)即將出現(xiàn)四三連的情況時(shí)候,計(jì)算機(jī)就會(huì)自動(dòng)去補(bǔ)齊。當(dāng)計(jì)算機(jī)即將出現(xiàn)三三連的情況時(shí)候,計(jì)算機(jī)就會(huì)自動(dòng)去補(bǔ)齊。 當(dāng)對(duì)方快或者已經(jīng)出現(xiàn)四三連子的時(shí)候,電腦就會(huì)視優(yōu)先級(jí)去攔截一個(gè)方向。當(dāng)對(duì)方快或者已經(jīng)出現(xiàn)三三連子的時(shí)候,電腦就會(huì)視優(yōu)先級(jí)去攔截一個(gè)方向。3.6.4 判斷輸贏設(shè)計(jì)五子棋判斷輸贏的規(guī)則就是連續(xù)五個(gè)顏色一樣的子,代表該顏色所代表的一方獲勝。其具體設(shè)計(jì)流程圖如圖3-7所示:圖3-7 五子棋輸贏判斷流程
49、圖五子棋游戲勝負(fù)的判斷是五子棋游戲的最根本的算法設(shè)計(jì)。根據(jù)五子棋游戲的規(guī)則,當(dāng)任一行、列、斜行連續(xù)一樣的棋子數(shù)到達(dá)5以后,則判定改色棋子的玩家勝利。所以設(shè)計(jì)判斷五子棋輸贏的方法就從查找連續(xù)一樣棋子開場(chǎng)。首先從橫向查找,循環(huán)查找橫向是否有連續(xù)顏色一樣的五個(gè)以上的棋子。假設(shè)有,則判斷勝利,假設(shè)沒有,則可以豎向查找,步驟和橫向查找類似。假設(shè)有,則判斷勝利,假設(shè)沒有,則可以繼續(xù)斜向查找,其步驟和判斷結(jié)果和前面類似。假設(shè)還是不能判斷勝利,則搜索是否還有可下的棋盤點(diǎn)位。假設(shè)有,則證明判斷失敗,假設(shè)沒有則可以宣布和棋。五子棋的判定方法不分單機(jī)或者聯(lián)網(wǎng),無(wú)論是和電腦對(duì)戰(zhàn),還是和玩家聯(lián)機(jī)對(duì)戰(zhàn)其判斷結(jié)果都如上述方
50、法來(lái)判斷。3.7 網(wǎng)絡(luò)五子棋算法設(shè)計(jì)網(wǎng)絡(luò)五子棋是使用的Socket網(wǎng)絡(luò)編程來(lái)實(shí)現(xiàn)的。下面先介紹下Socket編程流程圖:圖3-8 Socekt原理流程圖這個(gè)是整個(gè)Socket原理流程圖。利用這個(gè)原理可以把它應(yīng)用到網(wǎng)絡(luò)五子棋的流程圖。網(wǎng)絡(luò)五子棋的整體設(shè)計(jì)思路如圖3-9所示:圖3-9 網(wǎng)絡(luò)五子棋網(wǎng)絡(luò)通信原理圖首先開啟效勞器程序?yàn)榭蛻舳颂峁┬冢跏蓟?。然后等待已注?cè)好的客戶端程序的連接;客戶端主程序開場(chǎng)運(yùn)行,初始化。通過(guò)客戶端代理程序向效勞器端發(fā)送連接處理請(qǐng)求;效勞器端監(jiān)聽到客戶端發(fā)送過(guò)來(lái)的請(qǐng)求后,進(jìn)展相應(yīng)的處理,并將處理結(jié)果打包,由效勞器代理程序?qū)⑻幚砗玫慕Y(jié)果包發(fā)送到客戶端;客戶端這時(shí)就可以接收
51、到來(lái)自效勞器端處理好的數(shù)據(jù)并做相應(yīng)的處理,如客戶端界面刷新顯示數(shù)據(jù)等問題。接著不斷重復(fù)以上操作。從而實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)戰(zhàn)通信的目的。-. z.第四章 軟件的具體實(shí)現(xiàn)4.1準(zhǔn)備工作首先用MyEclipse來(lái)建一個(gè)工程,我將此工程的名字命為:FIR。然后在我所建的工程里建立一個(gè)包,包名為goumoku。再在包里面建立我需要的類,建立一個(gè)名字為MainFrame的JAVA類,繼承Java*.swing.JFrame這個(gè)類,而且同時(shí)引入MouseListener 這個(gè)監(jiān)聽的接口。通過(guò)這個(gè)接口實(shí)現(xiàn)對(duì)五子棋的每項(xiàng)功能進(jìn)展鼠標(biāo)監(jiān)聽。然后準(zhǔn)備一個(gè)算法類Qipan,其中包括三種算法比照,分別為簡(jiǎn)單,中等,復(fù)雜三個(gè)等級(jí),
52、這樣可以提高游戲者的興趣,根據(jù)自己的技術(shù)選擇相應(yīng)的難度。也包括棋盤的設(shè)計(jì),輸贏的判斷,下子的判斷等功能。最后建立效勞器端和客服端,實(shí)現(xiàn)網(wǎng)絡(luò)編程。4.2游戲窗口界面的實(shí)現(xiàn)圖4-1 單機(jī)游戲主界面當(dāng)玩家運(yùn)行程序以后,就會(huì)出現(xiàn)個(gè)棋盤的主界面。這個(gè)界面是有木質(zhì)顏色來(lái)作為棋盤的底色。而且棋盤已經(jīng)畫成功。等待玩家下一個(gè)步驟,是否選擇聯(lián)機(jī)游戲或者選擇單機(jī)游戲。當(dāng)玩家選擇好了單機(jī)游戲以后,由于本軟件實(shí)現(xiàn)了難度選擇,所以玩家可以選擇難度默認(rèn)為中等難度,難度分為三種:簡(jiǎn)單,中等,困難。在玩家選擇了單機(jī)游戲而且又選擇好了難度以后,系統(tǒng)會(huì)更具玩家所選擇的游戲難度來(lái)表達(dá)電腦的水平。當(dāng)玩家選擇聯(lián)機(jī)游戲時(shí),系統(tǒng)會(huì)出現(xiàn)等待的
53、界面,當(dāng)系統(tǒng)掃描局域網(wǎng)的IP,假設(shè)該局域網(wǎng)有個(gè)IP也在運(yùn)行次程序,則主動(dòng)匹配,完成網(wǎng)絡(luò)游戲的功能。假設(shè)無(wú)IP運(yùn)行,則系統(tǒng)將一直搜索等待。棋盤實(shí)現(xiàn)核心代碼如以下圖:圖4-2 棋盤實(shí)現(xiàn)核心代碼4.3下棋算法的實(shí)現(xiàn)圖4-3 五子棋下棋界面當(dāng)玩家在選擇是否單機(jī)或聯(lián)機(jī)以后,就可以下棋了,圖4-1顯示了玩家單機(jī)游戲的界面,無(wú)論是人機(jī)五子棋,還是人人五子棋在下棋的動(dòng)作方面都如圖4-1所示的方法來(lái)顯示。其落子的判定是根據(jù)玩家的鼠標(biāo)點(diǎn)擊來(lái)獲取時(shí)間源,然后對(duì)鼠標(biāo)點(diǎn)擊時(shí)間判定,獲取鼠標(biāo)點(diǎn)擊坐標(biāo)。獲取坐標(biāo)以后,首先需要判定這個(gè)坐標(biāo)點(diǎn)有無(wú)已經(jīng)存在的棋子,假設(shè)存在則點(diǎn)擊無(wú)效,假設(shè)不存在,則根據(jù)坐標(biāo)與最近的十字穿插點(diǎn)相匹配
54、。獲取十字穿插點(diǎn)以后,則系統(tǒng)畫出相對(duì)應(yīng)的黑白棋子,下棋子事件就成功了。假設(shè)玩家選取的是單機(jī)游戲,則可以選取難度,每個(gè)難度等級(jí)都有對(duì)應(yīng)的算法。三個(gè)難度選擇不同,對(duì)應(yīng)的算法不同。系統(tǒng)定義為簡(jiǎn)單的時(shí)候只能滿足以下情況:當(dāng)計(jì)算出的自己已經(jīng)有四個(gè)連珠并且至少有一個(gè)沒有被其他顏色棋子攔截的情況下,就會(huì)自動(dòng)去補(bǔ)齊。當(dāng)計(jì)算出的對(duì)方已經(jīng)有四個(gè)連珠并且沒有被攔截住的情況就會(huì)去攔截。當(dāng)計(jì)算出的自己已經(jīng)有三個(gè)連珠并且沒有被攔截的情況下就會(huì)繼續(xù)補(bǔ)齊到第四顆棋子,然后繼續(xù)1號(hào)操作。 其他情況則不攔截。系統(tǒng)定義為中等難度時(shí)候會(huì)滿足當(dāng)計(jì)算出的自己已經(jīng)有四個(gè)連珠并且至少有一個(gè)沒有被其他顏色棋子攔截的情況下,就會(huì)自動(dòng)去補(bǔ)齊。當(dāng)計(jì)
55、算出的對(duì)方已經(jīng)有四個(gè)連珠并且沒有被攔截住的情況就會(huì)去攔截。當(dāng)計(jì)算出的自己已經(jīng)有三個(gè)連珠并且沒有被攔截的情況下就會(huì)繼續(xù)補(bǔ)齊到第四顆棋子,然后繼續(xù)1號(hào)操作。 當(dāng)計(jì)算出的對(duì)方已經(jīng)有三個(gè)連珠并且沒有被攔截的情況就會(huì)主動(dòng)去攔截。 當(dāng)為四三連三三連連的時(shí)候它不攔截系統(tǒng)定義為困難難度時(shí)候會(huì)滿足當(dāng)計(jì)算出的自己已經(jīng)有四個(gè)連珠并且至少有一個(gè)沒有被其他顏色棋子攔截的情況下,就會(huì)自動(dòng)去補(bǔ)齊。當(dāng)計(jì)算出的對(duì)方已經(jīng)有四個(gè)連珠并且沒有被攔截住的情況就會(huì)去攔截。當(dāng)計(jì)算出的自己已經(jīng)有三個(gè)連珠并且沒有被攔截的情況下就會(huì)繼續(xù)補(bǔ)齊到第四顆棋子,然后繼續(xù)1號(hào)操作。 當(dāng)計(jì)算出的對(duì)方已經(jīng)有三個(gè)連珠并且沒有被攔截的情況就會(huì)主動(dòng)去攔截。 當(dāng)計(jì)算
56、機(jī)即將出現(xiàn)四三連的情況時(shí)候,計(jì)算機(jī)就會(huì)自動(dòng)去補(bǔ)齊。當(dāng)計(jì)算機(jī)即將出現(xiàn)三三連的情況時(shí)候,計(jì)算機(jī)就會(huì)自動(dòng)去補(bǔ)齊。困難等級(jí)的難度所有三子以上的情況都會(huì)攔截圖4-4 五子棋落子點(diǎn)的判斷原則4.4完成判斷勝負(fù)的功能圖4-5 五子棋獲勝判定界面當(dāng)棋局在橫、豎、斜任意一個(gè)方向連著五個(gè)顏色一樣棋子的時(shí)候,在這時(shí)候系統(tǒng)就會(huì)判斷,假設(shè)是黑子,則系統(tǒng)判斷黑棋獲勝,且彈出一個(gè)黑棋獲勝的對(duì)話框,如圖4-3所示。當(dāng)系統(tǒng)判定*種棋子獲勝后,就代表本局已經(jīng)完畢了,玩家可以點(diǎn)擊開場(chǎng)游戲重新開場(chǎng)下一局。也可以在換難度以后,再?gòu)男麻_場(chǎng)游戲。判斷勝負(fù)關(guān)鍵代碼如圖4-6所示:圖4-6 五子棋獲勝判斷4.5 系統(tǒng)測(cè)試1測(cè)試的重要性軟件的測(cè)
57、試在軟件生命周期中占據(jù)重要的地位,在傳統(tǒng)的瀑布模型中,軟件測(cè)試學(xué)僅處于運(yùn)行維護(hù)階段之前,是軟件產(chǎn)品交付用戶使用之前保證軟件質(zhì)量的重要手段。近來(lái),軟件工程界趨向于一種新的觀點(diǎn),即認(rèn)為軟件生命周期每一階段中都應(yīng)包含測(cè)試,從而檢驗(yàn)本階段的成果是否接近預(yù)期的目標(biāo),盡可能早的發(fā)現(xiàn)錯(cuò)誤并加以修正,如果不在早期階段進(jìn)展測(cè)試,錯(cuò)誤的延時(shí)擴(kuò)散常常會(huì)導(dǎo)致最后成品測(cè)試的巨大困難。 事實(shí)上,對(duì)于軟件來(lái)講,不管采用什么技術(shù)和什么方法,軟件中仍然會(huì)有錯(cuò)。采用新的語(yǔ)言、先進(jìn)的開發(fā)方式、完善的開發(fā)過(guò)程,可以減少錯(cuò)誤的引入,但是不可能完全杜絕軟件中的錯(cuò)誤,這些引入的錯(cuò)誤需要測(cè)試來(lái)找出,軟件中的錯(cuò)誤密度也需要測(cè)試來(lái)進(jìn)展估計(jì)。測(cè)試
58、是所有工程學(xué)科的根本組成單元,是軟件開發(fā)的重要局部。自有程序設(shè)計(jì)的那天起測(cè)試就一直伴隨著。統(tǒng)計(jì)說(shuō)明,在典型的軟件開發(fā)工程中,軟件測(cè)試工作量往往占軟件開發(fā)總工作量的40以上。而在軟件開發(fā)的總本錢中,用在測(cè)試上的開銷要占30到50。如果把維護(hù)階段也考慮在,討論整個(gè)軟件生存期時(shí),測(cè)試的本錢比例也許會(huì)有所降低,但實(shí)際上維護(hù)工作相當(dāng)于二次開發(fā),乃至屢次開發(fā),其中必定還包含有許多測(cè)試工作。 在實(shí)踐中,軟件測(cè)試的困難常常使人望而卻步或敷衍了事,這是由于對(duì)測(cè)試仍然存在一些不正確的看法和錯(cuò)誤的態(tài)度,這包括: 認(rèn)為測(cè)試工作不如設(shè)計(jì)和編碼那樣容易取得進(jìn)展難以給測(cè)試人員*種成就感; 以發(fā)現(xiàn)軟件錯(cuò)誤為目標(biāo)的測(cè)試是非建立
59、性的,甚至是破壞性的,測(cè)試中發(fā)現(xiàn)錯(cuò)位是對(duì)責(zé)任者工作的一種否認(rèn); 測(cè)試工作枯燥無(wú)味,不能引起人們的興趣; 測(cè)試工作是艱辛而細(xì)致的工作; 對(duì)自己編寫的程序盲目自信,在發(fā)現(xiàn)錯(cuò)誤后,顧慮別人對(duì)自己的開發(fā)能力的看法。這些觀點(diǎn)對(duì)軟件測(cè)試工作是極為不利的,必須澄清認(rèn)識(shí)、端正態(tài)度,才可能提高軟件產(chǎn)品的質(zhì)量。 2測(cè)試的目的 如果測(cè)試的目的是為了盡可能多地找出錯(cuò)誤,則測(cè)試就應(yīng)該直接針對(duì)軟件比擬復(fù)雜的局部或是以前出錯(cuò)比擬多的位置。 軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程; 測(cè)試是為了證明程序有錯(cuò),而不是證明程序無(wú)錯(cuò)誤; 一個(gè)好的測(cè)試用例是在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤; 一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。
60、 這種觀點(diǎn)可以提醒人們測(cè)試要以查找錯(cuò)誤為中心,而不是為了演示軟件的正確功能。但是僅憑字面意思理解這一觀點(diǎn)可能會(huì)產(chǎn)生誤導(dǎo),認(rèn)為發(fā)現(xiàn)錯(cuò)誤是軟件測(cè)試的唯一目,查找不出錯(cuò)誤的測(cè)試就是沒有價(jià)值的,事實(shí)并非如此。 首先,測(cè)試并不僅僅是為了要找出錯(cuò)誤。通過(guò)分析錯(cuò)誤產(chǎn)生的原因和錯(cuò)誤的分布特征,可以幫助工程管理者發(fā)現(xiàn)當(dāng)前所采用的軟件過(guò)程的缺陷,以便改良。同時(shí),這種分析也能幫助我們?cè)O(shè)計(jì)出有針對(duì)性地檢測(cè)方法,改善測(cè)試的有效性。其次,沒有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完整的測(cè)試是評(píng)定測(cè)試質(zhì)量的一種方法。4.6 測(cè)試方案4.6.1 界面功能測(cè)試1測(cè)試目標(biāo):系統(tǒng)界面按鈕的可用性。2測(cè)試時(shí)間:2017年3月20日3測(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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024雙人合伙商業(yè)店鋪協(xié)議模板
- 2024年企業(yè)工程承包詳細(xì)協(xié)議細(xì)則
- 德邦物流2024年專項(xiàng)快遞服務(wù)協(xié)議
- 2024年度供應(yīng)商保密義務(wù)協(xié)議
- 2023-2024學(xué)年浙江省嘉興市高考數(shù)學(xué)試題考前三個(gè)月(江蘇專版)
- 2024年戰(zhàn)略采購(gòu)合作協(xié)議模板
- 2024房屋權(quán)屬更名補(bǔ)充協(xié)議
- 2024年產(chǎn)品委托加工協(xié)議文本
- 6.1圓周運(yùn)動(dòng)(含答案)-2022-2023學(xué)年高一物理同步精講義(人教2019必修第二冊(cè) )
- 2024年制造業(yè)勞務(wù)承包基本協(xié)議格式
- 綿陽(yáng)市高中2022級(jí)(2025屆)高三第一次診斷性考試(一診)語(yǔ)文試卷(含答案)
- 自然資源調(diào)查監(jiān)測(cè)勞動(dòng)和技能競(jìng)賽
- 2 0 2 4 年 7 月 國(guó)開專科《法理學(xué)》期末紙質(zhì)考試 試題及答案
- 6.1 我對(duì)誰(shuí)負(fù)責(zé) 誰(shuí)對(duì)我負(fù)責(zé) 課件-2024-2025學(xué)年統(tǒng)編版道德與法治八年級(jí)上冊(cè)
- 2023-2024學(xué)年天津市經(jīng)開區(qū)國(guó)際學(xué)校八年級(jí)(上)期末物理試卷
- DB23T 3842-2024 一般化工企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化評(píng)定規(guī)范
- 期中模擬押題卷(1-3單元)(試題)-2024-2025學(xué)年蘇教版數(shù)學(xué)六年級(jí)上冊(cè)
- 環(huán)氧樹脂項(xiàng)目可行性研究報(bào)告項(xiàng)目報(bào)告
- 公共政策分析第一章
- 2024-2025學(xué)年人教版數(shù)學(xué)三年級(jí)上冊(cè) 第三單元 測(cè)量 單元測(cè)試卷(含答案)
- 2024新信息科技三年級(jí)第四單元:創(chuàng)作數(shù)字作品大單元整體教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論