【正文】
eStates[ i ] == UNANALYSED ) { leftEdge = rightEdge = i 。//初始化為未被分析過 for ( int i = 0 。//將字符轉(zhuǎn)換成int,以利于計算當(dāng)前選手各種狀態(tài)的個數(shù) int line_size = () 。下面介紹分析每一行子力情況的函數(shù),部分代碼如下:void Evaluate::analyseLine( char player , string line ){ char enemy = ( player == MYSELF ) ? RIVAL : MYSELF 。 analyseLine(RIVAL, src)。 for (int a = i。 analyseLine(RIVAL, src)。 for (int a = 0。 analyseLine(RIVAL,src)。 for (int a = i。 analyseLine(RIVAL, src)。 for (int a = 0。 analyseLine( RIVAL , src_col ) 。 src_col += board[ j ][ i ] 。 ++ i ) { string src_row = , src_col = 。下面介紹計算每一方子力部分總分值的實現(xiàn)方法。例如,假如己方出現(xiàn)了一個五子相連的棋型,這個時候說明己方已經(jīng)贏得了這盤棋局。所以,需要通過子力來分析棋盤。所以,中間點的估值最高,然后隨著棋盤往外不斷的減小。棋盤的估值主要由三部分組成:棋盤不同點本身占有的分值,子力產(chǎn)生的分值以及己方與對方相鄰產(chǎn)生的分值。比如此時是玩家下棋,那么此時得到的這個分值就應(yīng)該是相對于玩家的。估值算法是基礎(chǔ),調(diào)用一次搜索算法就可能需要調(diào)用多次估值算法,所以估值的準(zhǔn)確性和估值算法的精簡性對算法質(zhì)量的影響非常大。例如:假設(shè)這個數(shù)組是a[5][5](棋盤有五行五列),’1’代表是黑子,’2’代表是白字,假如a[0][0]的值是’1’就代表這個棋盤第一行第一列是黑子?;谄骞δ苣K:在人機對戰(zhàn)游戲中,只要游戲還沒有結(jié)束,玩家就可以通過該模塊撤銷自己已經(jīng)在棋盤上下的棋子。機器人落子算法模塊:該模塊根據(jù)當(dāng)前棋盤的信息,通過一定的算法,得出最適合下子的坐標(biāo)。棋盤初始化模塊:清空表示棋子相應(yīng)信息的數(shù)組,將棋盤上之前添加的棋子全部移除。6,提供游戲積分榜功能,顯示每一方勝利的局數(shù),并且在每局游戲結(jié)束后可以馬上更新,在應(yīng)用重新打開時仍然可以正確顯示。2,需要提供游戲開始功能(重新開始功能),選擇游戲類型功能(人機對戰(zhàn)和人人對戰(zhàn)),提供下子先后手功能。這個開發(fā)環(huán)境的該版本被蘋果公司稱為 Cocoa。1992年,自由軟件基金會的 GNU 開發(fā)環(huán)境增加了對 ObjectiveC 的支持。1980年代初,Brad Cox 與 Tom Love 在其公司 Stepstone 發(fā)明 ObjectiveC,它以一種叫做 SmallTalk80 的語言為基礎(chǔ)。將 Smalltalk 式的消息傳遞機制加入到 ANSI C 中。而Android在界面上更加注重搜索功能,它對Flash的支持也是一個優(yōu)勢。它是以Darwin為基礎(chǔ)的一種類Unix的操作系統(tǒng),原本這個系統(tǒng)名為iPhone OS,直到2010年6月7日WWDC大會上宣布改名為iOS。它不僅具有電腦版五子棋的優(yōu)勢,而且更加的方便。死四、死三、死二由于在主方向已不可能成五,因此已不是四、三、二。眠三:己方再加上一子,可以形成沖四但不能形成活四的三。沖四:己方再加上一子,只有一個點可以成五的四。長連:一條陽線或陰線上緊緊相連的同色六枚或六枚以上棋子。 五子棋游戲術(shù)語介紹連珠:國際上五子棋的正式名稱。由于在五子棋游戲過程中,先下子的一方非常占有很大的優(yōu)勢,所以五子棋游戲有兩種下棋規(guī)則,禁手和無禁手。4,判斷勝負功能。另外,本軟件還提供了下面的一些功能:1,重新開始功能,游戲模式選擇功能,人機對戰(zhàn)選擇游戲難度功能,下棋先后手選擇功能。機器博弈是人工智能研究領(lǐng)域中一塊非常重要的地方。而且隨著手機的發(fā)展,游戲產(chǎn)業(yè)已經(jīng)擴展到了手機上,這樣大家就有了更多休閑娛樂的機會。隨著科技的發(fā)展,現(xiàn)在人們的物質(zhì)生活越來越豐富,但是人們的生活壓力也越來越大,所以在工作閑暇之余,來一盤五子棋,也不失為一種調(diào)節(jié)情緒,放松思考的機會。所以,我覺得在iPad上開發(fā)一款移動應(yīng)用是一件非常有意義的事情。在智能手機的行業(yè)中,諾基亞和黑莓曾經(jīng)占據(jù)了非常重要的地位。特別是蘋果和三星,占據(jù)了整個智能手機領(lǐng)域的很大部分利潤。在路上,車上,我們總能看見有人拿著手機來玩游戲,看電影,這一切都在改變我們的日常生活。s time to , I start to learn the building principle of iOS app (learning the usage of view controller and view , the use of application of delegate and so on ) and the use of some mon controls, and try to make some simple interface on Xcode tool this time the xib file interface is used to build, through direct drag controls to generate the , I began to try to replace the xib file by writting doing this things, I start to build gobang interface, in addition to some monly used controls (buttons and labels), it is important to draw the chessboard and chess ,the board and chess can not use normal controls to display, I need to draw the work finished, interface can be displayed.Next, I should do some work on board, such as the events by click each button , the events by click board, the function of judes success ,giving up and regret and so ,I began to design and realize the gobang algorithm. Gobang algorithm has been more mature, my work is understanding the algorithm and relize it, and I will add some new algorithm generally includes valuation algorithm and search algorithm, the code of valuation algorithm is large but I do not hard to undstand it .Instead ,I can39。在本論文中,主要闡述了開發(fā)過程中的一些細節(jié),遇到的問題,解決的方法以及自己的一些感悟。經(jīng)過多年的發(fā)展,五子棋的算法已經(jīng)較為完善,我做的工作是在理解這些算法原理的基礎(chǔ)上,用自己的話來實現(xiàn),并加入一些新的東西。在做好這些基礎(chǔ)的準(zhǔn)備后,我開始動手搭建五子棋的界面,五子棋界面除了一些常用的控件(按鈕以及標(biāo)簽)外,重要的是畫出棋盤以及棋子,棋盤和棋子不能用普通控件來顯示,需要使用繪圖的方法把它畫出來。在開發(fā)的過程中,我首先學(xué)習(xí)了objectivec語言的相關(guān)語法,objectivec語言是在C語言上進行一些面向?qū)ο蟮臄U充,學(xué)習(xí)它大概用了一周的時間。 畢業(yè)設(shè)計說明書題 目:基于IOS平臺的游戲“五子棋” 程序設(shè)計 摘 要本論文主要闡述以iOS開發(fā)平臺為基礎(chǔ),通過使用Xcode開發(fā)工具以及objectivec和c++語言開發(fā)的一款運行在iPad上的智力游戲“五子棋”。所以,開發(fā)一款可以在iOS系統(tǒng)上運行的五子棋游戲是非常有意義的。之后,開始嘗試用代碼寫控件來代替xib文件。之后,就開始設(shè)計與實現(xiàn)五子棋算法了。這樣,整個設(shè)計就差不多完成了,接下來就需要進行測試并進行一些小的修改。算法 AbstractThis paper mainly expounded a mental game gobang .It is on the basis of iOS development platform, using the Xcode development tools and objective c and c + + language to develop,and runed in the iPad. Gobang is a game of two pure strategy type chess game. Chess can be used in the game of is one of the traditional reversi which is originated from the ancient Chinese . In recent years, with the popularity of smart phones, Many mobile applications on mobile operating system , developing a Gobang game can be run on iOS is meaningful.In the process of development, the first thing is learning the syntax of objectivec language,the objectivec language is in the basis of c language and add some Object oriented expansion , it took me about a week39。algorithm 目 錄引言 11 手機五子棋游戲介紹 3 五子棋游戲規(guī)則介紹 3 五子棋游戲術(shù)語介紹 3 手機五子棋特色 32 開發(fā)環(huán)境及工具介紹 4 開發(fā)環(huán)境 4 運行環(huán)境 4 工具介紹 4 iOS介紹 4 objectivec介紹 53 需求分析與總體設(shè)計 5 需求分析 5 系統(tǒng)設(shè)計思想 6 系統(tǒng)總體設(shè)計 6 系統(tǒng)模塊及功能 6 6 84 五子棋AI算法分析與實現(xiàn) 9 算法總體概況 9 估值算法分析與實現(xiàn) 9 搜索算法的分析與實現(xiàn) 14 算法設(shè)計的不足以及改進方法 205 APP應(yīng)用詳細設(shè)計 21 APP設(shè)計介紹 21 main函數(shù)介紹 21 應(yīng)用程序委托介紹 21 視圖控制器介紹 21 視圖類介紹 22 MVC模型介紹 22 主要框架介紹: 22 詳細設(shè)計概述 23 視圖控制器類設(shè)計 23 23 23 24 棋盤類的設(shè)計 24 24 25 25 26 26 26 27 27 276 開發(fā)過程中遇到的問題 28 五子棋AI算法設(shè)計問題 28 棋盤類設(shè)計遇到的問題 287 測試 298 總結(jié) 34謝 辭 37參考文獻 38 第38頁 共38頁 引言隨著科技的發(fā)展,智能手機的出現(xiàn)改變了我們一直以來對手機只是用于打電話和發(fā)短信的觀點。而反觀智能機的領(lǐng)域,蘋果,三星,HTC等企業(yè)都通過智能手機的銷售取得了非常好的業(yè)績。在PC上的軟件現(xiàn)在不斷有了移動操作系統(tǒng)上的版本,例如等聊天類軟件,微博等社交類軟件,甚至在手機上也出現(xiàn)了很多3D游戲,這些都有賴于移動操作系統(tǒng)的產(chǎn)生以及相關(guān)硬件的發(fā)展。iPad是蘋果公司推出的一款平板電腦,受到了市場的強烈反響。傳統(tǒng)五子棋的棋具是與圍棋通用的,一般是15*15的棋盤,棋子分黑白兩種顏色,對弈的雙方分別執(zhí)一種顏色的棋子,棋子放置在棋盤線上的交叉位置,雙方輪流下子,只要同一顏色的棋子能夠有五個棋子在同一條線上,那么執(zhí)這種顏色棋子的一方就贏得了這盤棋。近年來,游戲產(chǎn)業(yè)得到了巨大的發(fā)展。特別是人機對戰(zhàn)中的機器博弈,是PC和手機上的棋類游戲的一大特色。人人對戰(zhàn)主要是提供一個界面美觀的棋盤來給兩個玩家切磋棋藝。3,積分功能(勝負記錄)。最后有一方的棋子有五子可以連成同一根線就算執(zhí)該顏色棋子的一方勝利。無禁手規(guī)則是指雙方都不需要約束下子的位置,國際比賽往往都有禁手規(guī)則。連:一條陽線或陰線上緊緊相連的同色棋子