




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 中中國國礦礦業(yè)業(yè)大大學學 應用系統(tǒng)開發(fā)實踐設計題目: 基于 VC 的五子棋游戲軟件的設計與開發(fā) 指導教師: 學 生: 專 業(yè): 計算機科學與技術 09-1 班 2012 年 5 月1目目 錄錄1 引引 言言.22 系統(tǒng)需求分析系統(tǒng)需求分析.22.1 系統(tǒng)需求.22.2 功能需求.22.3 系統(tǒng)運行環(huán)境.23 五子棋算法分析五子棋算法分析.33.1 五子棋的發(fā)展.33.2 五子棋的規(guī)則.33.3 具體算法分析.43.3.1 棋盤局勢狀態(tài)表示.43.3.2 棋盤中下棋的順序表示.53.3.3 具體算法.54 系統(tǒng)流程系統(tǒng)流程.75 系統(tǒng)功能實現(xiàn)系統(tǒng)功能實現(xiàn).85.1 窗口設計.95.2 棋盤設計
2、.95.3 按鈕功能的實現(xiàn).105.4 勝負判斷.116 系統(tǒng)測試與分析系統(tǒng)測試與分析.137 結論結論.1721.引引 言言目前網(wǎng)絡上有很多五子棋子游戲,玩法簡單,娛樂性也很高。五子棋不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。通過對五子棋的設計與開發(fā),了解和掌握游戲開發(fā)的原理與方法。讓電腦像人腦一樣思考,一直是人工智能發(fā)展的最終目標。作為一門邊緣學科,它有諸多的研究領域,博弈即為其中之一。博弈的參加者可以是個人、集體、某種生物或機器,他們都力圖用自己的“智力”去擊敗對手。博弈為人工智能提供了一個極好的試驗場所,人工智能中的許多概念和方法都是從博弈程序中提煉出來的,人工智能中
3、大多以下棋為例來研究博弈規(guī)律。本文以五子棋為入口,設計了一個五子棋雙人對戰(zhàn)和人機對弈系統(tǒng),以實現(xiàn)人和人,人和計算機的博弈,最終的目的是為了建立一個有具體規(guī)則的五子棋平臺。2.需求分析需求分析目前網(wǎng)絡上有很多五子棋子游戲,玩法簡單,娛樂性也很高。五子棋不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。通過對五子棋的設計與開發(fā),了解和掌握游戲開發(fā)的原理與方法。讓電腦像人腦一樣思考,一直是人工智能發(fā)展的最終目標。作為一門邊緣學科,它有諸多的研究領域,博弈即為其中之一。博弈的參加者可以是個人、集體、某種生物或機器,他們都力圖用自己的“智力”去擊敗對手。人機對弈程序的要點,至少應具備以下 4
4、個部分:(1) 狀態(tài)表示:某種在機器中表示棋局的方法,能夠讓程序知道博弈的狀態(tài)。(2) 走法產(chǎn)生:產(chǎn)生合法走法的規(guī)則,以使博弈公正地進行,并可判斷對手是否亂走。(3)搜索技術:從所有合法的走法中選擇最佳的走法技術。(4) 對弈界面。2.1 系統(tǒng)需求五子棋作為一款休閑益智游戲,它最大的優(yōu)點在于游戲規(guī)則家喻戶曉,簡單,上手快,趣味性強,所以受廣大用戶青睞,在各大提供棋牌類游戲的平臺都可以看到玩五子棋游戲的人很多。休閑益智游戲中等級并不是最重要的追求目標,通過對游戲規(guī)則的熟悉,能很快上手掌握其操作方式,也更適合男女老幼全家共同娛樂,花費時間簡短,速戰(zhàn)速決,在短時間內(nèi)感受到游戲的樂趣,完全享受氣氛輕松
5、活躍的游戲過程。此種娛樂方式既不耽誤時間也能輕松調(diào)劑娛樂,充分適合現(xiàn)代人們的娛樂需求。更主要的是開發(fā)了人的智力,成為年輕一代最流行的游戲,據(jù)統(tǒng)計,五子棋游戲的玩家中,學生占了接近三分之一的比例,對學生的智力健康成長起一定作用,正所謂休閑娛樂兩不誤。2.2 功能需求要求系統(tǒng)界面簡潔,操作方便,把五子棋游戲規(guī)則中最基本的規(guī)則體現(xiàn)出來,比如“和棋”、“重新開局”等。五子棋還有一大特點就是速戰(zhàn)速決,電腦應在很短時間內(nèi)就應做出判斷,并能提供一定的幫助,違反游戲規(guī)則的時候應立即指出。在正規(guī)五子棋比賽中,都設置了“禁手”這一規(guī)則。2.3 系統(tǒng)運行環(huán)境 Win 9X/Win ME/Win NT/Win 200
6、0/Win XP/Win 2003/33 3 五子棋算法分析五子棋算法分析3.1 五子棋的發(fā)展五子棋是起源于中國古代的傳統(tǒng)黑白棋種之一?,F(xiàn)代五子棋日文稱之為“連珠”,英譯為“Renju”,英文稱之為“Gobang”或“FIR”(Five in a Row 的縮寫),亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱謂。 五子棋不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。它既有簡單易學的特性,為人民群眾所喜聞樂見,又有深奧的技巧和高水平的國際性比賽;它的棋文化源淵流長,具有東方的神秘和西方的直觀;既有“場”的概念,亦有“點”的連接。它是中西文化的交流點,
7、是古今哲理的結晶。五子棋起源于古代中國,發(fā)展于日本,風靡于歐洲。對于它與圍棋的關系有兩種說法,一說早于圍棋,早在“堯造圍棋”之前,民間就已有五子棋游戲;一說源于圍棋,是圍棋發(fā)展的一個分支。在中國的文化里,倍受人們的青睞。古代的五子棋的棋具與圍棋相同,縱橫各十七道。五子棋大約隨圍棋一起在我國南北朝時先后傳入朝鮮、日本等地。據(jù)日本史料文獻介紹,中國古代的五子棋是經(jīng)由高麗(朝鮮),于 1688 年至 1704年的日本元祿時代傳到日本的。到日本明治 32 年(公元 1899 年),經(jīng)過公開征名,“連珠”這一名稱才被正式確定下來,取意于“日月如合壁,五星如連珠”。從此,連珠活動經(jīng)過了不斷的改良,主要是規(guī)
8、則的變化(即對執(zhí)黑棋一方的限制),例如,1899年規(guī)定,禁止黑白雙方走“雙三”;1903 年規(guī)定,只禁止黑方走“雙三”;1912 年規(guī)定,黑方被迫走“雙三”亦算輸;1916 年規(guī)定,黑方不許走“長連”;1918 年規(guī)定,黑方不許走“四、三、三”;1931 年規(guī)定,黑方不許走“雙四”,并規(guī)定將 1919 的圍棋盤改為 1515 的連珠專用棋盤。本世紀初五子棋傳入歐洲并迅速風靡全歐。通過一系列的變化,使五子棋這一簡單的游戲復雜化、規(guī)范化,而最終成為今天的職業(yè)連珠五子棋,同時也成為一種國際比賽棋。簡單介紹一下文章中會遇到的一些關于五子棋最基本的術語(1)先手:進攻的著法,也指對弈雙方執(zhí)黑棋先在棋盤上
9、落子的一方;(2)四三:指同時具備兩個先手,其中一個四,另一個是活三;(3)活三(包括連三和跳三):連三:緊緊相連的同色三子跳三:中間間隔一子的活三 ;(4)四四:一子落下同時形成兩個“四”的棋形 ;(5)三三:一子落下形成了兩個活三的棋形;(6)長連:相同顏色的連續(xù)六子或六子以上; (7)禁手:對局中禁止使用的戰(zhàn)術或被判為負的行棋手段;(8)勝局:對局的一方獲勝,稱為“勝局”。包括:一方首先在棋盤的直線或橫線或斜線上形成連續(xù)的五子或五子以上(特指白方)。對方表示認輸。對方超過比賽規(guī)定的時限。當黑方禁手形成未能同時形成五連,白方立即指出禁手后,判定為白方勝局。對方遲到超過容許時間。對方嚴重犯規(guī)
10、而被判負; (9)和棋:不分勝負的對局或雙方同意平局。43.2 五子棋的規(guī)則五子棋游戲的一個特點是先行的一方優(yōu)勢很大,因此在職業(yè)比賽中對黑方做了種種限制,以利公平競爭。五子棋的比賽規(guī)則如下:(1)黑棋先手、白棋后手,從天元開始相互順序落子;(2)最先在棋盤橫向、縱向或斜向形成連續(xù)的同色五個棋子的一方為勝;(3)黑棋禁手判負、白棋無禁手。黑棋禁手有“三、三”、“四、四”和“長連”,包括“四、三、三”和“四、四、三”。黑棋只能以“四、三”取勝;(4)如分不出勝負,則到為平局;(5)五連與禁手同時形成,判勝;(6)黑方禁手形成時,白方應立即指出。若白方未發(fā)現(xiàn)或發(fā)現(xiàn)后不立即指出,反而繼續(xù)落子,則禁手失
11、效,不再判黑方負。 五子棋是黑白雙方或兩個人之間的競技活動,由于對黑白雙方規(guī)則不同,黑棋必須先行。一般采用猜先的方法來決定誰執(zhí)黑先行,即雙方各抓一種顏色的幾枚棋子,大數(shù)減小數(shù),單數(shù)雙方交換,偶數(shù)不換;黑方在落下關鍵的第五子即形成五連的同時,如又形成禁手,此時因黑方已經(jīng)成五,而“五”在五子棋中是至高無上的,故禁手失效,黑方勝;所謂黑方形成禁手,是指黑方落下一子同時形成兩個或兩個以上的活三、沖四及長連等。此時白方應立即指出,自然而勝。 專業(yè)連珠五子棋雖然對黑棋采取了種種限制,但是黑棋先行的優(yōu)勢依然很大。因此,在高段位的專業(yè)比賽中,又出現(xiàn)了三種特殊的規(guī)定: (1)“指定打法”:指比賽雙方按照約定好的
12、開局進行對弈。例如“斜月局”、“長星局”等。 (2)“三手可交換”:指黑棋下第二手棋盤面第三手棋之后,白方如感覺黑方棋形不利于己方,可提出交換,即執(zhí)白棋一方變?yōu)閳?zhí)黑棋一方此方法不適用于指定開局打法,而用于隨意開局。采用此規(guī)定以后,黑棋就不會再使用諸如“浦月”、“花月”之類的必勝開局了。(3)“五手兩打”:指黑棋在下盤面上關鍵的第五手棋時,必須下兩步棋,讓白方在這兩步棋中任選一步,然后再繼續(xù)下。 采用這一系列規(guī)定以后,黑棋先行就再無優(yōu)勢可言。 3.3 具體算法分析3.3.1 棋盤局勢狀態(tài)表示棋盤表示主要探討的是是什么數(shù)據(jù)結構來表示棋盤上的信息。一般說來,這與具體的棋類知識密切相關。通常,用來描述
13、棋盤及其上棋子信息的是一個二維數(shù)組。要讓計算機知道棋盤局勢狀態(tài),就是要它記住棋盤中哪個位置有黑子,哪個位置有白子以及哪個位置是空點。因為五子棋的棋盤是 15 行,15 列,因此可以將棋盤狀態(tài)的描述用一個 1515 的二維數(shù)組表示。本程序的數(shù)據(jù)將用如下所示的數(shù)據(jù)表示:int p1515=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
14、,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;其中,(1)
15、棋盤狀態(tài)數(shù)據(jù)由一個 1515 的二維數(shù)組表示。(2)用數(shù)字“1”和“2”來表示不同的棋子,黑色棋子用“2”表示,白色棋子用“1”表示。(3)沒有棋子的格子用“0”表示。3.3.2 棋盤中下棋的順序表示棋局中下棋的順序也很重要,應該是黑白雙方交替下棋。本程序用 t 來判斷黑白雙方下棋順序,t 為“0”時由白方下棋,t 為“1”時由黑方下棋,由于五子棋規(guī)則中黑棋先手,所以初始值 t=1,即玩家執(zhí)黑先手。每次落棋后,都應改變 t 的值,t 在整個對弈過程中都只能為 1 或者為 0,即在任意時刻,都有一方可以落棋,也只能有一方落棋。3.3.3 具體算法本系統(tǒng)中較復雜的部分是人機對戰(zhàn)部分。下面將簡單分析
16、人機對戰(zhàn),雙人對戰(zhàn)則省略。電腦要選擇有利于它的最佳下法,就要能判斷哪種形勢對它最有利。但往往對一個形勢的判斷是很難做到準確的,特別是一盤棋剛開始的時候,棋盤的形勢不明朗,即使是專家也不能做出準確的判斷。為了判斷哪種下法最有利,我們往往需要向后面計算幾步,看看在走了幾步棋之后,局面的形勢如何。這被稱為“多算勝”,也就是說,誰看得越深遠,誰就可以獲勝。這種思維方式被用到了計算機上。向后面計算的步數(shù)越多,系統(tǒng)開銷就越大,本系統(tǒng)只向后計算一步,根據(jù)威脅的優(yōu)先級來選擇落棋的最佳點。輪到電腦下棋時,電腦先向棋盤搜索合法的落棋點,即棋盤的空白點。然后再利用下面的算法先擇最佳落棋點。在每個空白點,都有四個方向
17、需要考慮,即、|、四個方向。以下就用表示電腦所執(zhí)的黑棋,用表示玩家所執(zhí)的白棋,用表示棋盤的空白點。在設計的時候,盡可能把所有情況全面考慮,設置為搜索一個最佳落棋點位置的時候,需要保證左右展開后碰壁,之間的空間距離至少要有六格(而不是五子),否則就是死子。人機對戰(zhàn)算法流程是:順序向下搜索,每次有符合要求的點時,視為最佳落棋點,并在該點落棋,同時將 t 賦值為,退出搜索并判斷是否有一方獲勝,然后等待玩家落棋,再重復這一過程,直到有一方獲勝。如圖。6 圖圖 人機對戰(zhàn)算法流程圖人機對戰(zhàn)算法流程圖(1),電腦搜索棋盤里白棋是否有一步獲勝的棋,即在同一條線路上有連續(xù)五個位置上,有四顆為白棋,另外一顆為空,
18、這時就不用考慮玩家的棋局,直接就可以獲勝。能直接獲勝的棋型有、,還包括通過四三來形成的活四,包括有、。(2),電腦搜索棋盤里黑棋是否有一步獲勝的棋,這時就應該讓玩家的“活四”變“死四”,這是白棋威脅級別最高的,應立即做出反應。有直接威脅的棋型有、。對于這種棋型,其實玩家已經(jīng)獲勝。(3),電腦搜索棋盤里白棋是否有可形成活四的棋型,進一步?jīng)_四,這時就應該主動進攻,這種棋型包括、。這樣的棋只需兩步方可獲勝,威脅級別僅次于上面兩種。(4),電腦搜索棋盤里黑棋是否有可形成活四的棋型,若有,就有阻止沖四,讓玩開始搜索棋盤該點無子找出優(yōu)先級最高的點落子分出勝負+1結束搜索是否否是搜索下一點7家的“活三”變死
19、三,這時就體現(xiàn)了電腦的防守策略,這種棋型包括:、。其中在封堵后還具有威脅性,所以在電腦沒有進攻機會時,也應該考慮這樣的棋型的威脅性,因為可以利用這種棋型來造四三來獲勝。(5),電腦搜索棋盤里白棋是否有可形成活三的棋型,這是獲勝的過渡棋,在整個棋局中非常重要,這樣的棋型越多,白棋造活三的機會就越多,是獲勝的關鍵。這種棋型包括:、,由于需要三步獲勝,所以優(yōu)先級比較低。表是獲勝情況分析表,優(yōu)先級是按所需步數(shù)和落棋的順序來決定的,在獲勝所需步數(shù)相同的情況下,電腦所執(zhí)的白棋優(yōu)先級高于黑棋。表表 1 獲勝情況分析表獲勝情況分析表棋盤上的情況:獲勝所需步數(shù)優(yōu)先級電腦已有任意組活四或已有任意組死四一1玩家已有
20、任意組活四或已有任意組死四一2電腦已有任意組活三或已有多于一組的死三二3玩家已有一組死三和任意組的活二三4玩家已有任意組活三或已有多于一組的死三三5玩家已有一組死三和任意組的活二三64 系統(tǒng)流程系統(tǒng)流程五子棋的規(guī)則如下:(1)棋盤:采用 1515 的棋盤。(2)下法玩家一執(zhí)黑先手,電腦或玩家二執(zhí)白后手,輪流在棋盤上選擇一個無子的交叉點落子。無子的交叉點又被稱為空點。(3)輸贏判斷:黑、白雙方有一方的 5 顆棋子在橫、豎或斜方向上連接成一線即為該方贏。(4)對于五子棋可分為禁手和無禁手兩類,本游戲采用三三禁手。可用1515 的二維數(shù)表示棋盤內(nèi)各點狀態(tài) (空、白子、黑子) ;五子棋游戲規(guī)則簡單,在
21、每次玩家或電腦落棋后,都要去判斷是否游戲是否分出勝負,如沒有,另一方才能繼續(xù)下棋。一局游戲結束后,可以選擇再來一盤,這時將棋盤數(shù)據(jù)清空,又開始新的棋局。系統(tǒng)流程如圖 2 所示。8圖圖 5-25-2 系統(tǒng)流程圖系統(tǒng)流程圖開始游戲有一方獲勝玩家 2 下棋本局結束是否否否玩家 1 下棋有一方獲勝再來一盤清空棋盤是游戲結束95 系統(tǒng)功能實現(xiàn)系統(tǒng)功能實現(xiàn)5.1 窗口設計根據(jù) Windows API 函數(shù)來編寫應用程序的順序結構:調(diào)用 WinMain 函數(shù)開始執(zhí)行定義窗口類初始化窗口類窗口的實例化通過消息循環(huán)獲取消息并將消息發(fā)送給消息處理函數(shù)做出相應的操作。我們首先應該創(chuàng)建一個窗口,生成一個窗口主要有兩步
22、:定義窗口類和初始化窗口類。首先用 InitWindowsClass 來定義一個窗口類,窗口類事實上是 struct 結構體,內(nèi)部有10 個分量,他們是用來于初始化窗口類對象而用的。根據(jù)函數(shù)里聲明的各個參數(shù)來執(zhí)行,它在里面定義了窗口類對象、聲明了窗口的類對象名稱、應用程序實例句柄、消息處理函數(shù)名、光標樣式和窗口背景等,其它的都設置為初始值。函數(shù)關鍵語句:BOOL InitWindowsClass(HINSTANCE hInstance) WndClass.hbrBackground=(HBRUSH)(CreateSolidBrush(RGB(240,240,240); WndClass.hCu
23、rsor=LoadCursor(NULL,IDC_ARROW);WndClass.hInstance=hInstance;WndClass.lpfnWndProc=WndProc;WndClass.lpszClassName=WinFill;return RegisterClass(&WndClass);然后用 InitWindows 函數(shù)來初始化窗口類,在窗口類對象的初始化過程中,我們定義了窗口的一些簡單一般特征,比如背景顏色呀,光標等等。但是在利用 CreateWindow 創(chuàng)建窗口的時候可以設置更多的細節(jié),比如窗口標題這些。函數(shù)主要參數(shù):hWnd=CreateWindow(Win
24、Fill,五子棋游戲,WS_OVERLAPPEDWINDOW,0,0,1024,768,hInstance);其中,定義窗口類對象名稱為WinFill,窗口標題為五子棋游戲,窗口風格為WS_OVERLAPPEDWINDOW,說明此窗口是一個層疊式窗口,含有邊框、標題欄、系統(tǒng)菜單、最大最小化按鈕的窗口。105.2 棋盤設計程序的實現(xiàn)上,首先完成界面的設計,在界面的設計上,使用了二維數(shù)組的棋盤格式,考慮到五子棋的落子后,是不會再次移動的,所以采用劃直線的方法模擬一個棋盤。棋盤大小為 560560,起始坐標為(200,100),每個格子大小為(40,40)。 首先用 GetStockObject 函
25、數(shù)創(chuàng)建一個畫筆和畫刷,用 SelectObject 選擇當前使用的畫筆和畫刷,畫筆的作用是畫棋盤的邊框及格子,畫刷的作用是填充棋盤的背景色,先取畫筆后我們才能用它來畫棋盤。為了增加棋盤的美觀,畫刷顏色選取灰色,與窗口的銀白色分開。然后用 Rectangle 函數(shù)畫一個矩形,就是棋盤的邊框,棋盤的左上角坐標為(200,100),右下角坐標為(760,660)。再畫棋盤的各橫軸及縱軸,在畫每一條直線前,需用 MoveToEx 函數(shù)指定當前畫筆的位置,然后用 LineTo 函數(shù)從指定這點開始畫一條到指定的另外一點的直線。函數(shù)段為:hPen=(HPEN)GetStockObject(BLACK_PEN
26、); SelectObject(hDC,hPen);hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH); SelectObject(hDC,hBrush); Rectangle(hDC,200,100,760,660); MoveToEx(hDC,200,140,NULL); /第一條橫線在這些都完成了之后,對界面進行最后的完善,通過添加按鈕來使用戶在和電腦對弈的同時,可以從這些按鈕中獲得必要的幫助。本系統(tǒng)一共設置了四個按鈕:“和棋”、“再來一盤”,“退出”和“幫助”。它們的畫法采用文本框模擬按鈕,先畫一個矩形,在矩形里填充提示信息,用鼠標單擊事件來響應各個
27、按鈕。因此綜上所述,在界面的設計上,主要有兩個模塊,一個是棋盤模塊,一個是按鈕模塊。5.3 按鈕功能的實現(xiàn)本系統(tǒng)一共設置了四個按鈕:“和棋”、“再來一盤”,“退出”和“幫助”。它們的畫法采用文本框模擬按鈕,先畫一個矩形,在矩形里填充提示信息,用鼠標單擊事件來響應各個按鈕。這四個按鈕基本滿足了一般玩家的需求。按鈕的畫法:先在主函數(shù)里面定義四個變量,分別存儲按鈕的標題,然后在棋盤外畫四個矩形,然后在四個矩形里分別顯示按鈕的標題。具體實現(xiàn)方法:“退出”按鈕:Rectangle(hDC,770,110,820,135);TextOut(hDC,780,115,lpsz1,strlen(lpsz1);i
28、f(i770&i495&j=100&i=180&j=375) /再來一盤for(m=0;m=a;m+)cm=0;dm=0;em=0;fm=0;for(m=0;m=14;m+)for(n=0;n=770&i=110&j=135)MessageBox(hWnd,需幫助 請在黑棋下棋時單擊幫助 n 一方獲勝后可單擊退出退出程序 n 雙方僵持情況下可和棋 n 如有興趣請再來一盤,幫助,MB_OK);畫法和前面的一樣,這里面使用了文本換行,在每行之間用 n 將需要換行的文字隔開,于是在單擊這個按鈕后,就會看到有多行文字的消息框出現(xiàn)。5.4 勝負判斷在五子棋
29、游戲中,判斷勝負是很重要的一項工作,最先在棋盤橫向、豎向、斜向形成五顆連續(xù)相同顏色的棋子的一方為勝。(1)橫向:橫向比較好判斷,縱坐標不變,橫坐標向右遞增,有五顆連續(xù)的相同顏12色的棋子即獲勝,所以橫坐標的范圍不必是(0,14),只搜索(0,10)即可。(2)縱向:與橫向一樣,這時橫坐標不變,縱坐標向下遞增,所以縱坐標的搜索范圍可以縮小到(0,10)。(3)“”向:這時搜索應從左上角開始,橫縱坐標同時遞增,橫縱坐標的搜索范圍都是(0,10)。(4)“”向:這時縱坐標是向下遞增,但橫坐標是向左遞減的,所以搜索范圍就不能從左上角(0,0)開始,應從(0,4)開始,橫坐標的搜索范圍是(4,14),縱坐標的搜索范圍是(0,10)。下面就以“”向為例,在程序中具體實現(xiàn)過程:for(m=0;m=10;m+)for(n=4;n=14;n+)if(pmn=1&pm+1n-1=1&pm+2n-2=1&pm+3n-3=1&pm+4n-4=1&g=1)MessageBox(hWnd,黑棋贏,結束,MB_OK);g=0;else if(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鄆城幼兒面試試題及答案
- 6-甲?;?5-(三氟甲基)煙酸乙酯hplc
- 5年級下冊英語第4單元單詞跟讀
- 5年級上冊簡易方程
- 4年級下冊日積月累1~8單元
- 地下建筑火災案例
- 2025年云南旅游職業(yè)學院單招職業(yè)傾向性測試題庫帶答案
- 2025年天津濱海職業(yè)學院單招職業(yè)傾向性測試題庫完美版
- 2025年南充文化旅游職業(yè)學院單招職業(yè)技能測試題庫及答案1套
- 2025年重慶資源與環(huán)境保護職業(yè)學院單招職業(yè)技能測試題庫1套
- 自然環(huán)境及特征(考向3:自然環(huán)境的地域差異(雪線、林線)) 【知識精講精研】 高考地理二輪核心考點突破課堂
- GB/T 43200-2023機器人一體化關節(jié)性能及試驗方法
- 園林噴灌工程施工方案
- 紅樓夢第二回極好課件
- 混凝土回彈數(shù)據(jù)自動計算表格
- 家庭節(jié)約用水
- 《材料性能學》教案
- 道路交通事故現(xiàn)場勘查與處置
- 電噴系統(tǒng)原理及故障維修手冊
- 環(huán)境影響評價報告公示-全椒縣水務全椒縣第二自來水廠擴建工程環(huán)境影響報告書公示全環(huán)評報告
- 名班主任工作室成員成長檔案
評論
0/150
提交評論