版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于Java ME的黑白棋游戲設(shè)計及實(shí)現(xiàn)</p><p><b> 摘 要</b></p><p> 在現(xiàn)代社會中,手機(jī)及其它無線設(shè)備越來越多的走進(jìn)普通老百姓的工作和生活。隨著3G技術(shù)的普及與應(yīng)用,基于Java開發(fā)的軟件在手機(jī)上的使用非常的廣泛,手機(jī)增值服務(wù)的內(nèi)容也是越來越多,對豐富人們的生活內(nèi)容、提供快捷的資訊起著不可忽視的作用。<
2、/p><p> 本文基于Java ME技術(shù),以計算機(jī)手機(jī)游戲的運(yùn)行流程為基礎(chǔ),分模塊開發(fā)一款黑白棋游戲軟件。</p><p> 本文對以下幾點(diǎn)內(nèi)容做了重點(diǎn)研究和探討:系統(tǒng)整體結(jié)構(gòu),根據(jù)設(shè)計目標(biāo),結(jié)合普通手機(jī)游戲的運(yùn)行流程,給出了系統(tǒng)總體設(shè)計方案,并探討了系統(tǒng)設(shè)計時需要用到的關(guān)鍵技術(shù)。本設(shè)計通過一個棋類游戲的開發(fā),闡述了棋類游戲的開發(fā)過程,包括軟件開發(fā)的邏輯分析,程序設(shè)計,軟件實(shí)現(xiàn)和軟件測試
3、幾個步驟。</p><p> 關(guān)鍵詞:Java ME;手機(jī)游戲;黑白棋</p><p><b> ABSTRACT</b></p><p> In modern society, more and more cell phones and other wireless devices into the work and life of o
4、rdinary people. With the popularization and application of 3G technology, developed in Java-based software on the mobile phone use is very extensive, mobile value-added services is more and more content to enrich people&
5、#39;s lives, to provide quick information and plays an essential role.</p><p> Based on Java ME technology, computer phone game running processes based on a Reversi game software module development.</p&g
6、t;<p> In this paper, the following contents focus on research and explore:The structure of the system as a whole, according to the design goals, combined with ordinary mobile phone games running processes, given
7、 the overall system design, and discusses the key technologies required system design. The design through the development of a chess game of chess game development process, including the analysis of the logic of the soft
8、ware development, program design, software implementation and software test</p><p> Keywords: Java ME; Mobile Games; Black and White Chess</p><p><b> 目 錄</b></p><p>
9、 第1章 緒論- 1 -</p><p> 1.1 研究背景- 1 -</p><p> 1.1.1 Java ME概況- 1 -</p><p> 1.1.2黑白棋開發(fā)背景- 2 -</p><p> 1.2 研究現(xiàn)狀及發(fā)展趨勢- 3 -</p><p> 1.2.1 國內(nèi)外研究現(xiàn)狀- 3 -&
10、lt;/p><p> 1.2.2 發(fā)展趨勢- 4 -</p><p> 1.3 黑白棋研究意義- 4 -</p><p> 第2章 黑白棋游戲簡介及需求分析- 6 -</p><p> 2.1 項目可行性分析- 6 -</p><p> 2.1.1 技術(shù)可行性- 6 -</p><p
11、> 2.1.2 操作可行性- 6 -</p><p> 2.2 需求分析- 6 -</p><p> 2.2.1 黑白棋規(guī)則- 7 -</p><p> 2.2.2 黑白棋戰(zhàn)術(shù)分析- 7 -</p><p> 2.2.3 黑白棋程序界面的需求- 7 -</p><p> 第3章 游戲設(shè)計與實(shí)
12、現(xiàn)- 8 -</p><p> 3.1 游戲的設(shè)計- 8 -</p><p> 3.1.1 游戲的模塊- 8 -</p><p> 3.1.2 游戲功能流程圖- 8 -</p><p> 3.1.3 游戲詳細(xì)設(shè)計- 9 -</p><p> 3.14 黑白棋開發(fā)環(huán)境- 10 -</p>
13、<p> 3.2 游戲的實(shí)現(xiàn)- 10 -</p><p> 第4章 游戲測試- 15 -</p><p> 4.1 系統(tǒng)測試- 15 -</p><p> 4.1.1 測試方法- 15 -</p><p> 4.1.2 測試用例及結(jié)果- 15 -</p><p> 4.1.3游戲的發(fā)
14、布- 16 -</p><p> 總 結(jié)- 17 -</p><p> 致 謝- 18 -</p><p> 參 考 文 獻(xiàn)- 19 -</p><p><b> 第1章 緒論</b></p><p><b> 1.1 研究背景</b></p>
15、;<p> 1.1.1 Java ME概況</p><p> Java的最大目標(biāo)和特點(diǎn),就是"一次編寫,到處運(yùn)行"的平臺無關(guān)性。但是,一套標(biāo)準(zhǔn)無法適應(yīng)各種不同的需求。因此,Java技術(shù)目前共有三套,分別針對不同的平臺和應(yīng)用。</p><p> Standard Edition(J2SE,標(biāo)準(zhǔn)版):針對桌面端PC和工作站的個人和低端商務(wù)應(yīng)用。 <
16、/p><p> Enterprise Edition(J2EE,企業(yè)版):針對服務(wù)器端企業(yè)級應(yīng)用,支持Servlets, JSP和XML等等。</p><p> Micro Edition(J2ME,袖珍版):針對有限內(nèi)存,顯示和處理能力的設(shè)備,主要是消費(fèi)電子和嵌入式設(shè)備領(lǐng)域(這實(shí)際正是Java語言設(shè)計最初的目標(biāo)領(lǐng)域)。</p><p> 圖1.1 Java總體架
17、構(gòu)圖</p><p> 在消費(fèi)電子和嵌入式設(shè)備領(lǐng)域,內(nèi)存從幾百K到幾十M,從沒有屏幕到Web-TV,CPU從低功耗的嵌入式處理器到206MHz的RISC處理器,硬件條件的差異是相當(dāng)大的。這就使得J2ME的標(biāo)準(zhǔn)需要有不同的層次和類別來適應(yīng)這個復(fù)雜的領(lǐng)域,因此相比之下J2ME就比J2SE和J2EE的標(biāo)準(zhǔn)要復(fù)雜得多。因此,清楚的理解J2ME的體系結(jié)構(gòu)的劃分才能更好的理解和掌握J(rèn)2ME。</p><
18、p> J2ME的3層體系結(jié)構(gòu)依照各種設(shè)備的資源特性,將J2ME技術(shù)構(gòu)架分為簡表(Profile)、配置(Configuration)和Java Virtual Machine(JVM)3層,然后再進(jìn)一步細(xì)分,這使J2ME能夠在每一類設(shè)備的限制下工作,而同時提供最低限度的Java語言功能性。</p><p> 關(guān)于J2ME的體系結(jié)構(gòu),可以這樣來進(jìn)行總結(jié):Configuration的分類是根據(jù)計算能力的不同
19、來劃分的,同類設(shè)備的計算能力相近。Configuration是一個規(guī)范,定義了這類設(shè)備的共同Java平臺,定義與設(shè)備無關(guān)的Java虛擬機(jī)和核心庫,是平臺相容性的基礎(chǔ)。Profile的分類是根據(jù)設(shè)備功能劃分的,同類功能的設(shè)備其他各種硬件條件和需求也相近。Profile是一組API,在某一Configuration的基礎(chǔ)上擴(kuò)展了針對設(shè)備特定功能的API,使得標(biāo)準(zhǔn)能夠完全適應(yīng)特殊的設(shè)備,徹底發(fā)揮設(shè)備的功能。</p><p&
20、gt; J2ME體系的一般結(jié)構(gòu)是:由Configuration定義的Java虛擬機(jī)運(yùn)行于設(shè)備的宿主操作系統(tǒng)之上,構(gòu)成整個平臺的基礎(chǔ)。Configuration提供了基本的語言特性,Profile提供針對設(shè)備的特殊功能API和擴(kuò)展類庫。應(yīng)用程序的運(yùn)行環(huán)境需要一個Configuration和至少一個Profile,多個Profile可以共存,也可以疊加。</p><p> MIDP(Mobile Informat
21、ion Device Profile)定義了針對移動信息處理設(shè)備(主要指智能手機(jī)和一部分具有無線通信功能的PDA)的圖形界面,輸入和時間處理,持久性存儲,無線電話網(wǎng)絡(luò)連接之上的一些消息處理(例如短消息),安全等等API,并且考慮到了移動信息設(shè)備的屏幕和內(nèi)存限制。類似于J2SE中的Applet框架,MIDP提供了基于javax.microedition.midlet 包的MIDlet應(yīng)用程序框架。</p><p>
22、 應(yīng)為MIDP提出較的比較早,目前重要的智能手機(jī)和PDA操作系統(tǒng)上都已有了相應(yīng)的實(shí)現(xiàn),而且應(yīng)用的也比較廣泛。 </p><p> 1.1.2黑白棋開發(fā)背景</p><p> Java語言是美國Sun Microsystem的James Gosling、Pratrick Naughton及Mike Sheridan等人于1991年精心設(shè)計出來的計算機(jī)編程語言,其構(gòu)想在于實(shí)現(xiàn)使用同一種編
23、程語言所寫出來的程序可以在不同的平臺上運(yùn)作。這種架構(gòu)對于消費(fèi)性電子產(chǎn)品而言是具有革命性的,因為在消費(fèi)性電子產(chǎn)品中的處理器及操作系統(tǒng)各不相同,要在這些平臺上開發(fā)程序必須要了解各個平臺的特性。</p><p> 近幾年,由于微處理器性能的大幅提升,加上無線通訊技術(shù)的突破,手持式移動設(shè)備開始受到大眾的青睞。短短幾年內(nèi),手機(jī)已經(jīng)升級了幾代產(chǎn)品,普及率逐年攀升,生產(chǎn)效率不斷上升,以至手機(jī)是大多是城市居民不可缺少的一件隨身
24、設(shè)備。繼短信、彩信等服務(wù)之后,中國移動提供基于Java的百寶箱業(yè)務(wù),應(yīng)用產(chǎn)品遍及商務(wù)應(yīng)用、信息獲取、英漢互譯、游戲娛樂等多媒體領(lǐng)域。</p><p> 為了適應(yīng)移動數(shù)據(jù)的發(fā)展,推動無線電子商務(wù)等業(yè)務(wù)的發(fā)展,J2ME(Java 2 Micro Edition)既用于嵌入式系統(tǒng)的Java被引入無線領(lǐng)域。J2ME的出現(xiàn)實(shí)際上是Java技術(shù)的回歸。隨著J2ME的應(yīng)用,它為移動互聯(lián)引入了一種新的模型,既允許手機(jī)可以從互聯(lián)
25、網(wǎng)上下載各種應(yīng)用程序,并在手機(jī)創(chuàng)造可執(zhí)行環(huán)境離線運(yùn)行這些程序。由于定義了可執(zhí)行下載的標(biāo)準(zhǔn),并在手機(jī)上創(chuàng)立了可執(zhí)行環(huán)境和程序開發(fā)語言。</p><p> 隨著計算機(jī)技術(shù)的日新月異,計算機(jī)的運(yùn)算速度不僅變得更加的快,也變得更加的智能。利用計算機(jī)資源來實(shí)現(xiàn)原本人類才有的思考過程已經(jīng)成為現(xiàn)實(shí)。在過去的30多年中,已經(jīng)建立了一些具有一定“智能”的計算機(jī)程序,例如下棋程序、定理證明系統(tǒng)、集成電路設(shè)計與分析系統(tǒng)、自然語言翻譯
26、系統(tǒng)、智能信息檢索系統(tǒng)、疾病診斷系統(tǒng)等。這些“人工智能” (Artificial Intelligence,簡稱AI)被運(yùn)用在人們生活的各個方面。1997年5月11日,超級計算機(jī)深藍(lán)以3勝2負(fù)1平擊敗世界國際象棋棋王卡斯帕羅夫,這標(biāo)志著人工智能已經(jīng)達(dá)到新的高度。通過設(shè)計開發(fā)一套玩棋盤游戲可以研究人工智能的實(shí)現(xiàn)過程。而黑白棋是一種常見的棋類游戲,它具有規(guī)則簡單、對弈時間短、趣味性強(qiáng)的特點(diǎn)。</p><p> 1.
27、2 研究現(xiàn)狀及發(fā)展趨勢</p><p> 1.2.1 國內(nèi)外研究現(xiàn)狀</p><p> Java語言的學(xué)習(xí)熱潮并沒有因為時間的推移而消退,相反,由于計算機(jī)技術(shù)的發(fā)展所帶來新應(yīng)用的出現(xiàn),Java越來越流行,這種情況是以往程序設(shè)計語言在其生存周期內(nèi)所不多見的。Java語言之所以這樣長盛不衰,一是因為其眾多的技術(shù)特點(diǎn)與現(xiàn)今的應(yīng)用十分合拍,可以覆蓋大部分的需求;二是因為SUN公司不斷推出新的版
28、本,完善Java自身的功能。</p><p> 黑白棋作為一個棋類競技運(yùn)動,在民間十分流行,為了熟悉黑白棋規(guī)則及技巧,以及研究簡單的人工智能,決定用Java開發(fā)黑白棋游戲。主要完成了人機(jī)對戰(zhàn)功能。在人機(jī)對弈中通過深度搜索和估值模塊,來提高電腦棋手的智能。分析估值模塊中的影響精準(zhǔn)性的幾個要素,以及提出若干提高精準(zhǔn)性的辦法,以及對它們搜索的節(jié)點(diǎn)數(shù)進(jìn)行比較,如遞歸算法、電腦學(xué)習(xí)等。算法的研究有助于理解程序結(jié)構(gòu),增強(qiáng)邏
29、輯思維能力,在其他人工智能方面也有很大的參考作用。盡管黑白棋的規(guī)則比較簡單,但它所包括的豐富戰(zhàn)略,不亞于那些相當(dāng)“經(jīng)典”的策略游戲。其中人工智能部分,由于采用了大量的搜索算法,其中很多被利用到各方面。</p><p> 1.2.2 發(fā)展趨勢</p><p> 近來隨著計算機(jī)的快速發(fā)展,各種各樣的電腦游戲?qū)映霾桓F,使得我們能有更多的娛樂項目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,
30、而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢。其中戰(zhàn)勝過國際象棋世界冠軍-卡斯帕羅夫的“深藍(lán)”便是最具說服力的代表,其它像圍棋的“手淡”、象棋的“將族”等也以其優(yōu)秀的人工智能深受棋迷喜愛。</p><p> 越來越多的具有智能的機(jī)器進(jìn)入了人類的生活,人工智能的重要性如今顯而易見。自人工智能屬于計算機(jī)科學(xué)的領(lǐng)域,它以計算機(jī)技術(shù)為基礎(chǔ),近幾十年來,它的理論和技術(shù)已經(jīng)日益成熟,應(yīng)用領(lǐng)域也正在不斷擴(kuò)大,顯示出強(qiáng)大的生命
31、力。人工智能在專家系統(tǒng),自然語言理解,自動定理證明,自動程序設(shè)計,人工智能在機(jī)器人學(xué)、模式識別、物景分析、數(shù)據(jù)庫的智能檢索、機(jī)器下棋(實(shí)質(zhì)上是博弈論問題)和家用電器智能化等領(lǐng)域都有廣泛的應(yīng)用。</p><p> 1.3 黑白棋研究意義</p><p> 利用這次畢業(yè)設(shè)計的機(jī)會可以熟悉java語言的各種特性,鍛煉程序設(shè)計的實(shí)踐能力,熟悉Java ME圖形用戶界面的開發(fā),以及鞏固數(shù)據(jù)結(jié)構(gòu)和
32、算法等課程的學(xué)習(xí)成果,并深入理解數(shù)據(jù)結(jié)構(gòu)和算法在程序設(shè)計中的核心地位。同時,借助開發(fā)本游戲的過程,可以熟悉人工智能的程序?qū)崿F(xiàn),有助于掌握棋類所需人工智能的常見算法,隨著游戲產(chǎn)業(yè)的日益壯大,人工智能在游戲中的突出表現(xiàn),人工智能越來越得到世人的重視。在這次的人機(jī)對戰(zhàn)算法中,通過一定的算法,實(shí)現(xiàn)電腦的下棋及走棋運(yùn)作,加深了對人工智能工作原理的了解。</p><p> 第2章 黑白棋游戲簡介及需求分析</p>
33、;<p> 黑白棋是19世紀(jì)末英國人發(fā)明的。直到上個世紀(jì)70年代一個日本人將其發(fā)展,借用莎士比亞名劇奧賽羅(othello)為這個游戲重新命名,也就是現(xiàn)在大家玩的黑白棋。游戲通過相互翻轉(zhuǎn)對方的棋子,最后以棋盤上誰的棋子多來判斷勝負(fù)。它的游戲規(guī)則簡單,因此上手很容易,但是它的變化又非常復(fù)雜。有一種說法是:只需要幾分鐘學(xué)會它,卻需要一生的時間去精通它。</p><p> 2.1 項目可行性分析<
34、;/p><p> 獲得項目需求并對其進(jìn)行詳細(xì)分析,是項目開始的基礎(chǔ)。只有獲得明確的需求,并做出好的需求分析文檔并得到有效解決,才能保證項目最后的成功。</p><p> 2.1.1 技術(shù)可行性</p><p> 技術(shù)上的可行性分析主要分析技術(shù)條件是否能順利完成開發(fā)工作,硬、軟件能否滿足開發(fā)者的需要等。</p><p> 軟件方面,手機(jī)游戲
35、需要的各種軟件環(huán)境都已具備,其靈活性、安全性和易用性為游戲編程提供了良好的條件。因此,系統(tǒng)的軟件開發(fā)平臺已成熟可行。</p><p> 硬件方面,科技飛速發(fā)展的今天,硬件更新的速度越來越快,容量越來越大,可靠性越來越高,價格越來越低,其硬件平臺完全能滿足此系統(tǒng)的需要。</p><p> 2.1.2 操作可行性</p><p> 操作可行性,是對開發(fā)系統(tǒng)在一個
36、給定的工作環(huán)境中能否運(yùn)行或運(yùn)行好壞程度的量度。本系統(tǒng)以手機(jī)應(yīng)用為主,游戲簡單、易于操作。所有玩過手機(jī)游戲的人都可以玩。</p><p><b> 2.2 需求分析</b></p><p> 為了開發(fā)出真正滿足用戶需求的程序,尤其是游戲程序,首先必須知道用戶的需求。把用戶需求作為前提條件,來指導(dǎo)程序的開發(fā)</p><p> 2.2.1 黑白
37、棋規(guī)則</p><p> 棋盤共有8行8列共64格。開局時,棋盤正中央的4格先置放黑白相隔的4枚棋子。黑子先行,雙方輪流落子。只要落子和棋盤上任一枚己方的棋子在一條線上(橫、直、斜線皆可)夾著對方棋子(不可以有空格),就能將對方的這些棋子轉(zhuǎn)變?yōu)槲壹悍?。如果在任一位置落子都不能夾住對手的任一顆棋子,就要讓對手下子。當(dāng)雙方皆不能下子時,游戲就結(jié)束,子多的一方勝。</p><p> 2.2.
38、2 黑白棋戰(zhàn)術(shù)分析</p><p> 因為黑白棋獨(dú)特的規(guī)則,很容易出現(xiàn)雙方比分的劇烈變化,在游戲后期可能僅用幾個回合就將大量對方棋子變成己方,從而扭轉(zhuǎn)局勢。因此,太著眼于比分是沒有必要的,更重要的是占據(jù)有利位置。中間位置的棋子最容易受到夾擊,有橫、直、斜線共四個方向的可能。而邊緣的棋子則只有一個可能被夾擊的方向,四個角落上的位置被占據(jù)后,則完全不可能被攻擊。游戲的后期是關(guān)鍵位置的爭奪,而前期的布局,就是為搶占關(guān)
39、鍵位置作準(zhǔn)備。比如,若不想讓對方占據(jù)棋盤邊緣的有利位置,那么自己就應(yīng)避免在靠近邊緣的那一排落子。</p><p> 2.2.3 黑白棋程序界面的需求</p><p> 通過常見的一些具有代表性的黑白棋程序的對比分析,現(xiàn)在一個基于界面上的用戶需求已經(jīng)基本確立。該需求包含以下幾點(diǎn):</p><p> 1. 作為按鈕出現(xiàn)在主界面上的:開始、分?jǐn)?shù)、幫助、全屏。<
40、/p><p> 2. 能夠直觀顯示在游戲界面上的:各方棋子數(shù)目顯示。</p><p> 第3章 游戲設(shè)計與實(shí)現(xiàn)</p><p><b> 3.1 游戲的設(shè)計</b></p><p> 3.1.1 游戲的模塊</p><p> 為了實(shí)現(xiàn)黑白棋游戲的開發(fā),通過流程圖的分析,計劃采用以下幾大模塊。
41、</p><p> 1、繪圖模塊:本模塊用來負(fù)責(zé)主界面的繪制,包括棋盤、棋子、棋子個數(shù)的顯示、以及其它需要顯示的部分。</p><p> 2、人機(jī)模塊:人機(jī)模塊是本程序得以運(yùn)行的基礎(chǔ),并通過規(guī)則模塊決定能否下子。</p><p> 3、規(guī)則模塊:本模塊主要負(fù)責(zé)判斷下棋是否符合規(guī)則。</p><p> 4、按鍵模塊:本模塊通過判斷用戶按
42、鍵的位置,判斷出該坐標(biāo)所處棋盤中響應(yīng)位置。</p><p> 3.1.2 游戲功能流程圖</p><p> 程序所需執(zhí)行的流程見圖3.1,該圖表示出了程序執(zhí)行的流程,也基本表示出了程序的各個模塊和相互關(guān)系,后面的詳細(xì)設(shè)計和代碼實(shí)現(xiàn),就是基于本圖設(shè)計的。</p><p> 圖3.1 黑白棋功能流程圖</p><p> 3.1.3 游戲詳
43、細(xì)設(shè)計</p><p> 在這個黑白棋游戲中我們對其作了詳細(xì)設(shè)計,程序沒有涉及到數(shù)據(jù)庫方面的知識,其實(shí)現(xiàn)的功能模塊包括:</p><p><b> 游戲棋盤的設(shè)計:</b></p><p> 棋盤由8*8個方格組成,可用drawRect();方法畫出方格;用for循環(huán)依次畫出8*8個方格。最初黑棋和白棋各兩顆子占據(jù)一個方格的對角線。<
44、;/p><p><b> 棋子的存儲:</b></p><p> 將棋盤作為一個二維數(shù)組,黑棋和白棋賦予不同的值,每落一個棋子,就將棋子的值存儲在數(shù)組相應(yīng)的位置。新的游戲開始,將所存儲的值清除。</p><p><b> 白棋的落子位置:</b></p><p> 縱觀棋局,尋找落子點(diǎn);<
45、/p><p> 比較各落子點(diǎn)給自己帶來的收益,選擇最大的落子;</p><p> 在選擇落子點(diǎn)時會根據(jù)一些自己的經(jīng)驗來進(jìn)行,比如某一個點(diǎn)十分重要,則下棋時會努力爭奪該點(diǎn),某些點(diǎn)已方占據(jù)后非常不利,則會極力避免下在該位置</p><p> 通過計算機(jī)程序來模擬人的思考過程:</p><p> 1、縱觀棋局,尋找落子點(diǎn):</p>
46、<p> 設(shè)定 電腦為:Computer 1 人為: Man 1</p><p> a.通過對當(dāng)前棋盤進(jìn)行搜索,找到已方(Computer)的棋子O,然后對O進(jìn)行八個方向的搜索(因為對于一個點(diǎn)有八個方向的線段通過它,如圖) ,找到每個方向上的落子點(diǎn)(如果有),如此循環(huán)每個Computer棋子,找到所有的落子點(diǎn),然后將所有點(diǎn)進(jìn)行比較,去掉其中重復(fù)的,最后對每個落子點(diǎn)進(jìn)行遞歸搜索,按照合理的估分
47、原則進(jìn)行評價,得出每個落子點(diǎn)的價值(即可獲得的長期利益),將其進(jìn)行比較,取最大者落子,并改變棋局……</p><p> b.對當(dāng)前棋盤進(jìn)行搜索,找到空白點(diǎn)Ox,然后對Ox進(jìn)八方向搜索,看是否滿足落子條件,即看空白點(diǎn)Ox是否為合乎規(guī)則的落子點(diǎn),如果是,可以進(jìn)行遞歸搜索,得到該點(diǎn)的價值,然后將所有合乎規(guī)則的Ox進(jìn)行比較,選擇值最大的落子,并改變棋局……</p><p> c.分析可以發(fā)現(xiàn)總
48、共有50條直線存在落子的可能性,當(dāng)然一條線上存在著多個落子的可能性??赡芡ㄟ^對這50條線的固定搜索,找到可落子點(diǎn),其中也存在著可能重復(fù)的現(xiàn)象,所以要像a方法一樣對已搜索到的落子點(diǎn)進(jìn)行比較排除,然后對每個點(diǎn)進(jìn)行遞歸深入搜索……此方法我們可以在每個方向上設(shè)定一個值表示該方向上是否還存在落子可能,當(dāng)顯示不可能時,我們可以跳過,以節(jié)省時間。</p><p><b> 2、估值系統(tǒng):</b><
49、/p><p> 因為此棋最后是比較看誰最后的棋子多誰就贏,所以人在選擇落子點(diǎn)的時候主要是判斷那個落子點(diǎn)能夠吃到的子最多來選擇的,每個點(diǎn)代表的棋面實(shí)際價值是相同的,所以我們可以設(shè)定每個棋子的面值均為1,但棋盤上有一些經(jīng)驗必爭點(diǎn)Ax,占據(jù)這些點(diǎn)可能帶來不是一個或幾個子的收益,而是關(guān)乎整個棋局的勝負(fù)(例如,四個頂點(diǎn)),Ax它具有超過面值1的戰(zhàn)略意義;而另外一些與必爭點(diǎn)Ax相關(guān)的落子點(diǎn)也根據(jù)其與戰(zhàn)略點(diǎn)Ax位置關(guān)系具有不同于
50、面值的戰(zhàn)略意義,所以整個估值系統(tǒng)就是要找出各個點(diǎn)的準(zhǔn)確戰(zhàn)略值x。</p><p> 經(jīng)過分析,在不同情況下,相同點(diǎn)可能具有不同的戰(zhàn)略意義,所以要列出精確的戰(zhàn)略值可能比較難,只能采用統(tǒng)計平均值。</p><p> 由于分析上的難度+本人懶惰所以此程序僅采用一個大概經(jīng)驗值,沒有經(jīng)過詳細(xì)的統(tǒng)計分析,相信通過詳細(xì)的分析后,可以提高AI的思考準(zhǔn)確性……</p><p>
51、 3、尋找最佳:我們通過對落子點(diǎn)進(jìn)行遞歸搜索,并結(jié)合估值系統(tǒng),得到每個落子點(diǎn)的得分,然后比較選擇最大進(jìn)行落子。</p><p> 3.14 黑白棋開發(fā)環(huán)境</p><p> 操作系統(tǒng):Microsoft Windows XP</p><p> 程序語言:Java </p><p> 開發(fā)平臺:Java Micro Edition&l
52、t;/p><p> 開發(fā)工具:jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe</p><p><b> 3.2 游戲的實(shí)現(xiàn)</b></p><p> 本游戲中用到了兩個包,javax.microedition.midlet:只能包含一個MIDlet類,可作為所有MIDlet的父類:jav
53、ax.microedition.lcdui:界面類包,對GUI組件提供支持。</p><p><b> 1、界面的實(shí)現(xiàn)</b></p><p> 棋盤用drawRect() 方法實(shí)現(xiàn),用for循環(huán)來畫8*8的棋盤方框</p><p> 背景為一張圖片,用g.drawImage ();方法將背景畫入界面;黑色子和白色棋子的畫法同背景。<
54、;/p><p> 運(yùn)行程序,進(jìn)入游戲的初始界面;點(diǎn)擊按鈕可進(jìn)入相對應(yīng)的界面。相關(guān)代碼:</p><p> private void drawReady(){</p><p> g.setColor(0x0000ff);</p><p> g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_
55、PLAIN,Font.SIZE_LARGE));</p><p> g.drawString("黑白棋游戲", getWidth()/2, getHeight()/2,</p><p> Graphics.BASELINE | Graphics.HCENTER);</p><p> g.drawString("畢業(yè)設(shè)計"
56、, getWidth()/2+2*UNITY, getHeight()/2+UNITY,</p><p> Graphics.BASELINE | Graphics.HCENTER);}</p><p><b> 效果如下圖:</b></p><p> 1、運(yùn)行游戲,游戲進(jìn)入的最初界面,由此界面進(jìn)入游戲的各個界面。</p>
57、<p> 圖3.2 黑白棋游戲初始界面</p><p> 2、此界面為游戲開始界面,由8*8個方格組成,黑棋和白棋各兩顆子占據(jù)棋盤中間的一個方格的對角線</p><p> 圖3.3 黑白棋游戲開始界面</p><p> 3、幫助界面向玩家說明如何通過按鍵控制下棋。</p><p> 圖3.4 黑白棋游戲的幫助界面</
58、p><p> 4、游戲分?jǐn)?shù)界面在游戲結(jié)束時自動彈出,根據(jù)各方的棋子總數(shù)來計算分?jǐn)?shù),在游戲過程中也可點(diǎn)擊【分?jǐn)?shù)】按鈕查看分?jǐn)?shù)。</p><p> 圖3.5 白棋游戲的分?jǐn)?shù)界面</p><p> 本游戲的重新開始、白棋如何下子、吃子功能的部分代碼如下:</p><p><b> 重新開始的實(shí)現(xiàn):</b></p>
59、;<p> if(myGameCanvas.restartCommand == c) {</p><p> myGameCanvas.m_game.m_state = oldState = AllDef.RUN;</p><p> m_game.m_black.init();</p><p> m_game.m_white.init();
60、 }</p><p><b> 白子下棋如何下棋:</b></p><p> 以上一個棋子的位置向八個方向搜索符合規(guī)則的位置來下子。如果沿著指定方向,下一個子的坐標(biāo)過大或過小,及超出棋盤范圍,返回false;如果下一個棋子和要下的棋子是同一種顏色,返回false。部分代碼如下:</p><p> for(x=1; x<=8; x
61、++){</p><p> for(y=1; y<=8; y++){</p><p> if((2==x&&7==y) || (7==x&&2==y) || (2==x&&2==y) || (7==x&&7==y) ||</p><p> (1==x&&2==y) || (2
62、==x&&1==y) || (1==x&&7==y) || (7==x&&1==y) ||</p><p> (8==x&&2==y) || (2==x&&8==y) || (8==x&&7==y) || (7==x&&8==y) )</p><p> { continu
63、e; }</p><p> if(true==temp[x][y]) {</p><p> xy[0]= x; xy[1] = y;</p><p> return xy;</p><p><b> }</b></p><p><b> 吃子功能:</b>&l
64、t;/p><p> 當(dāng)下子的位置與離最近的同色旗子中, 若有其他棋子則中間的棋子則將其他的棋子圖片換為我方的圖片</p><p> private boolean eat(int x, int y, int xChange, int yChange){</p><p> if(x<1 || x>8 || y<1 || y>8){</p
65、><p> return AllDef.ERROR; }</p><p> int xNext = x + xChange;</p><p> int yNext = y + yChange;</p><p> while(true){</p><p> if(xNext<1 || xNext>8 |
66、| yNext<1 || yNext>8||</p><p> m_bod.getChessMan(xNext, yNext) == null ||</p><p> m_bod.getChessMan(x+xChange, y+yChange).toBool() == m_turn )</p><p> { return AllDef.ER
67、ROR;}</p><p><b> 判斷輸贏</b></p><p> 當(dāng)游戲結(jié)束時,用m_game.m_black.getNum() 來統(tǒng)計黑棋和白棋各個的總數(shù),棋子多者為勝。部分代碼如下:</p><p> if(m_game.m_white.getNum()+m_game.m_black.getNum() == 64){&l
68、t;/p><p> if(m_game.m_white.getNum() > m_game.m_black.getNum()){</p><p> msgStr = "白棋贏";</p><p><b> } }</b></p><p><b> 第4章 游戲測試</b&g
69、t;</p><p><b> 4.1 系統(tǒng)測試</b></p><p> 系統(tǒng)測試的目的主要在于發(fā)現(xiàn)錯誤,找出軟件的缺陷和隱患,是確保軟件質(zhì)量的重要方法。在完成黑白棋游戲之后,分別對游戲中各個進(jìn)行了測試,主要是檢驗該游戲在各種情況下中的功能能否實(shí)現(xiàn),是否滿足黑白棋游戲規(guī)則的走棋,從而驗證該系統(tǒng)確實(shí)符合預(yù)訂的需求。</p><p> 軟件
70、測試就是在軟件投入運(yùn)行前,對軟件需求分析、設(shè)計規(guī)格說明和編碼的最終復(fù)查,是軟件質(zhì)量保證的關(guān)鍵步驟。早在1973年, W.Hetael曾經(jīng)指出,測試是對程序或系統(tǒng)能否完成特定任務(wù)建立信心的過程。</p><p> 系統(tǒng)在開發(fā)過程中采用了多種措施保證軟件質(zhì)量,但是實(shí)際開發(fā)過程中還是不可避免地會產(chǎn)生差錯。系統(tǒng)中通??赡茈[藏著錯誤和缺陷,若將未經(jīng)周密測試的系統(tǒng)投入運(yùn)行,將會造成難以想象的后果。因此系統(tǒng)測試是管理系統(tǒng)開發(fā)
71、過程中為保證軟件質(zhì)量必須進(jìn)行的工作。大量統(tǒng)計資料表明,系統(tǒng)測試的工作量往往占管理系統(tǒng)開發(fā)總工作量的40%以上。因此必須重視測試工作。</p><p> 4.1.1 測試方法</p><p> 系統(tǒng)測試一般有白盒測試與黑盒測試兩種方法??紤]到各種因素和條件的限制,我們決定采用黑盒測試方案。黑盒測試注重于測試軟件的功能性需求,也就是說黑盒測試要求軟件工程師列出程序所有功能需求的輸入條件。通
72、過黑盒測試,我們能發(fā)現(xiàn)一些平時不能發(fā)現(xiàn)的細(xì)節(jié)性錯誤。</p><p> 4.1.2 測試用例及結(jié)果</p><p> 黑白棋功能測試用例見表4.1:</p><p> 表4.1 黑白棋游戲功能測試用例集</p><p> 4.1.3游戲的發(fā)布</p><p> 1、找到項目文件夾并打開。</p>
73、<p> 2、打開dist文件夾找到一個與項目名相同的Jar文件。</p><p> 3、將dist文件夾里名的Jar文件拷入手機(jī)</p><p> 4、安裝Jar文件即可。</p><p><b> 總 結(jié)</b></p><p> 通過這次畢業(yè)設(shè)計,對很多東西有了新的認(rèn)識和新的見解,認(rèn)識問題的
74、和思考解決辦法有了本質(zhì)上的進(jìn)步,特別是對一個游戲開發(fā)的模式有了更深的認(rèn)識,對專業(yè)技能的運(yùn)用更熟練。我覺得對自己有很大提高克服了自己粗心大意的老毛病這對我以后的學(xué)習(xí)和工作有很大的幫助。我感受到了編程是一項非常煩瑣周密的活動它不但需要一個人周密的思考問題的能力處理問題的能力還需要有足夠的耐心和嚴(yán)謹(jǐn)治學(xué)的作風(fēng)來不得半點(diǎn)馬虎。 通過本次論文設(shè)計我初步學(xué)會了論文設(shè)計的基本方法學(xué)會了怎樣去借鑒別人的方法和經(jīng)驗知道如何去查找資料和整
75、合處理這些資料的能力這為以后的寫論文打下了一個初步的基礎(chǔ)使我收益最大的是享受到了一種成功的喜悅。</p><p> 在這半學(xué)期之中從開始的確定論文題目然后是上網(wǎng)和上圖書館查找資料編寫java語言源程序然后是進(jìn)行編譯這個環(huán)節(jié)是一個非常艱難的,常常會因為一小點(diǎn)的錯誤而在編譯失敗與再次修改的漫漫循環(huán)之路中但失敗的越多對人的考驗就越多在編譯運(yùn)行成功之后的享受成功的喜悅也就越多另外在調(diào)試程序的過程中
76、不斷的思考和運(yùn)用已經(jīng)學(xué)到的知識這對于自己是有很大的提高的。</p><p><b> 致 謝</b></p><p> 必須感謝老師對我學(xué)習(xí)的支持,精神的支持。沒有他們的汗水,我是無法完成大專的學(xué)業(yè)的。</p><p> 感謝我的指導(dǎo)老師:孫老師;孫老師嚴(yán)謹(jǐn)求實(shí)、謙遜和藹、平易近人、處處為學(xué)生著想,令我敬佩。如果沒老師的悉心指導(dǎo)也不會
77、順利完成不也設(shè)計。</p><p> 感謝三年來教我知識的其他老師,在即將完成學(xué)業(yè)的時刻,我向所有教過我的老師表示衷心的感謝和崇高的敬意。</p><p> 感謝同組的同學(xué),雖然我們的畢業(yè)設(shè)計是彼此獨(dú)立開發(fā),但在畢業(yè)設(shè)計期間,經(jīng)常和他一起討論,相處的很融洽。</p><p> 感謝所有幫助過我的其他人。三年的大專求學(xué)生涯在這段期間得到了很多人的關(guān)懷和幫助,沒有
78、他們的關(guān)懷和幫助很難想象能順利完成學(xué)業(yè)。</p><p> 感謝互聯(lián)網(wǎng)上的前輩們,為我樹立了榜樣,同時留下了可供我參考的寶貴的資料和程序。</p><p> 最后,再次對關(guān)心、幫助我的老師和同學(xué)表示衷心地感謝。 由于我的水平有限,論文難免出現(xiàn)差錯和遺漏,敬請老師批評指正。</p><p><b> 參 考 文 獻(xiàn)</b></p>
79、;<p> [1] George F.Luger Artificial Intelligence: Structures and Strategies for Complex Problem Solving Addison Wesley[M].2001-7.[2] Mat Buckland.Ai Techniques For Game Programming[M].Premier Press.2002.[3] 張海藩
80、.軟件工程導(dǎo)論(第四版)[M]. 北京:清華大學(xué)出版社 2003-12.[4] 張宏林.數(shù)字圖像分析與處理技術(shù)[M].北京:人民郵電出版社 2003-2.[5] 棋類游戲的智能模塊設(shè)計――淺談人工智能[J].2004-09.[6] 蔡自興,徐光祐.人工智能及其應(yīng)用(第三版)[M].北京:清華大學(xué)出版社.2003-9.[7] 杜秀全,程家興.博弈算法在黑白棋中的應(yīng)用[J].2003.[8] 王小春.java me游戲編程(人機(jī)博
溫馨提示
- 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 me的黑白棋游戲設(shè)計及實(shí)現(xiàn)畢業(yè)設(shè)計
- 黑白棋游戲畢業(yè)設(shè)計
- 黑白棋游戲課程設(shè)計
- 黑白棋畢業(yè)論文---黑白棋游戲設(shè)計與開發(fā)(含外文翻譯)
- 基于qt的黑白棋游戲
- 黑白棋游戲畢業(yè)論文
- 黑白棋游戲設(shè)計與開發(fā)畢業(yè)論文
- vb黑白棋游戲課程設(shè)計報告
- c語言課程設(shè)計---黑白棋游戲
- c語言課程設(shè)計--黑白棋游戲
- 基于qt的黑白棋游戲開發(fā)(論文)
- 黑白棋游戲數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 基于Qt的黑白棋游戲(終稿).doc
- 畢業(yè)設(shè)計----黑白棋子的識別與分揀輸送裝置的設(shè)計
- 基于Alpha-Btea剪枝算法的黑白棋游戲的設(shè)計與開發(fā).pdf
- c語言課程設(shè)計報告--黑白棋
- 畢業(yè)設(shè)計---基于j2me的java游戲
- c語言程序設(shè)計課程設(shè)計(論文)-黑白棋
- 嵌入式wince課程設(shè)計報告(黑白棋)
- 畢業(yè)設(shè)計--基于java的游戲設(shè)計
評論
0/150
提交評論