版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于VC的五子棋游戲軟件的設(shè)計(jì)與開發(fā)</p><p><b> 摘 要</b></p><p> 人工智能是近年來很活躍的研究領(lǐng)域之一,計(jì)算機(jī)博弈是人工智能研究的一個(gè)重要分支,它的研究為人工智能帶來了很多重要的方法和理論,產(chǎn)生了廣泛的社會(huì)影響和學(xué)術(shù)影響。五子棋本身就是一款益智休閑游戲,規(guī)則簡(jiǎn)單。五子棋不僅能增強(qiáng)思維能力,提高智力,而且富含哲
2、理,有助于修身養(yǎng)性。</p><p> 本系統(tǒng)就以五子棋游戲作為研究課題,對(duì)五子棋的算法與規(guī)則做了研究,闡述了如何在 Microsoft Visual C++ 下用 API 函數(shù)來開發(fā)Windows下的游戲并給出了具體的實(shí)現(xiàn)。本系統(tǒng)以五子棋為例實(shí)現(xiàn)的主要功能有棋盤、棋子的輸出、人機(jī)對(duì)下等。本系統(tǒng)還有和棋、再來一盤、幫助等輔助功能。</p><p> 關(guān)鍵字:五子棋;Microsoft
3、Visual C++; API函數(shù)</p><p> The Design and Exploitation of Gobang Game with VC</p><p><b> Abstract</b></p><p> Artificial intelligence is one of the brisk research area
4、s. The chess game on computer is an important branch of the research on artificial intelligence. The researches on chess game bring plenty of important methods and theories for researching on artificial intelligence, and
5、 cause broad influences on society and academe. Gobang chess game means five pieces on one line, is a sort of game, which is full of wisdom, leisure and benefits, and the rules of it are very simple. </p><p>
6、; This paper focuses on the study of this chess game, and uses the Microsoft Visual C++ to explore the Window’s game. This system mainly uses the function of Visual C++/API to realize the export of chessboard and checke
7、r, and people can play with computer. Moreover, this system has the assistant functions such as “Deuce”、“ Play Again”、“ Help” and so on.</p><p> Key words: Gobang; Microsoft Visual C++; API Function</p&
8、gt;<p><b> 目 錄</b></p><p><b> 論文總頁數(shù):21頁</b></p><p><b> 1引言1</b></p><p> 2開發(fā)工具和應(yīng)用平臺(tái)1</p><p> 2.1Microsoft Visual C+
9、+ 的介紹1</p><p> 2.2Windows 編程的特點(diǎn)2</p><p> 3系統(tǒng)需求分析4</p><p> 3.1系統(tǒng)需求4</p><p> 3.2功能需求4</p><p> 3.3系統(tǒng)運(yùn)行環(huán)境4</p><p> 4五子棋算法分析5<
10、;/p><p> 4.1五子棋的發(fā)展5</p><p> 4.2五子棋的規(guī)則6</p><p> 4.3具體算法分析7</p><p> 4.3.1 棋盤局勢(shì)狀態(tài)表示7</p><p> 4.3.2棋盤中下棋的順序表示7</p><p> 4.3.3具體算法7</
11、p><p><b> 5系統(tǒng)流程9</b></p><p> 6系統(tǒng)功能實(shí)現(xiàn)10</p><p> 6.1窗口設(shè)計(jì)10</p><p> 6.2棋盤設(shè)計(jì)11</p><p> 6.3按鈕功能的實(shí)現(xiàn)12</p><p> 6.4勝負(fù)判斷13&l
12、t;/p><p> 7系統(tǒng)測(cè)試與分析14</p><p> 7.1運(yùn)行結(jié)果14</p><p> 7.2問題的發(fā)現(xiàn)與解決17</p><p><b> 結(jié) 論17</b></p><p><b> 參考文獻(xiàn)17</b></p><
13、;p><b> 致 謝19</b></p><p><b> 聲 明20</b></p><p><b> 附 錄21</b></p><p><b> 引言</b></p><p> 目前網(wǎng)絡(luò)上有很多五子棋子游戲,
14、玩法簡(jiǎn)單,娛樂性也很高。五子棋不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。通過對(duì)五子棋的設(shè)計(jì)與開發(fā),了解和掌握游戲開發(fā)的原理與方法。讓電腦像人腦一樣思考,一直是人工智能發(fā)展的最終目標(biāo)。作為一門邊緣學(xué)科,它有諸多的研究領(lǐng)域,博弈即為其中之一。博弈的參加者可以是個(gè)人、集體、某種生物或機(jī)器,他們都力圖用自己的“智力”去擊敗對(duì)手。博弈為人工智能提供了一個(gè)極好的試驗(yàn)場(chǎng)所,人工智能中的許多概念和方法都是從博弈程序中提煉出來的,人工智
15、能中大多以下棋為例來研究博弈規(guī)律。本文以五子棋為入口,設(shè)計(jì)了一個(gè)五子棋人機(jī)對(duì)弈系統(tǒng),以實(shí)現(xiàn)人和計(jì)算機(jī)的博弈,最終的目的是為了建立一個(gè)有具體規(guī)則的五子棋平臺(tái)。</p><p> 人機(jī)對(duì)弈程序的要點(diǎn),至少應(yīng)具備以下4個(gè)部分:(1) 狀態(tài)表示:某種在機(jī)器中表示棋局的方法,能夠讓程序知道博弈的狀態(tài)。(2) 走法產(chǎn)生:產(chǎn)生合法走法的規(guī)則,以使博弈公正地進(jìn)行,并可判斷對(duì)手是否亂走。(3)搜索技術(shù):從所有合法的走法中選擇最佳
16、的走法技術(shù)。(4) 對(duì)弈界面。</p><p> 本系統(tǒng)主要研究使用 Microsoft Visual C++ 以 Windows 窗體程序?qū)ξ遄悠逵螒蜻M(jìn)行開發(fā)與設(shè)計(jì),讓大家了解用 Microsoft Visual C++ 開發(fā)WINDOWS 小游戲的過程。</p><p><b> 開發(fā)工具和應(yīng)用平臺(tái)</b></p><p> Micr
17、osoft Visual C++ 的介紹</p><p> C 語言是一種高效率的計(jì)算機(jī)程序設(shè)計(jì)語言,而 Visual C++ 則是在它的基礎(chǔ)上開發(fā)出的一套功能強(qiáng)大的程序設(shè)計(jì)工具。對(duì)于游戲程序,Visual C++ 可以說是最佳的開發(fā)工具。第一, Visual C++ 具有優(yōu)異的運(yùn)行速度。第二, Visual C++ 可以直接訪問內(nèi)存。</p><p> Visual C++ 自誕生以
18、來,一直是Windows環(huán)境下最主要的應(yīng)用開發(fā)系統(tǒng)之一。Visual C++ 不僅是C++ 語言的集成開發(fā)環(huán)境,而且與 Win32 緊密相連,所以,利用Visual C++ 開發(fā)系統(tǒng)可以完成各種各樣的應(yīng)用程序的開發(fā),從底層軟件直到上層直接面向用戶的軟件。而且,Visual C++ 強(qiáng)大的調(diào)試功能也為大型復(fù)雜軟件的開發(fā)提供了有效的排錯(cuò)手段。</p><p> Visual C++ 是一個(gè)很好的可視化編程工具,使用
19、 Visual C++ 環(huán)境來開發(fā)基于 Windows 的應(yīng)用程序大大縮短了開發(fā)時(shí)間,而且它的界面更友好,便于程序員操作。開發(fā)環(huán)境是程序員同 Visual C++ 的交互界面,通過它程序員可以訪問 C++ 源代碼編輯器、資源編輯器,使用內(nèi)部調(diào)試器,還可以創(chuàng)建項(xiàng)目文件。</p><p> 所謂 API 就是應(yīng)用程序編程接口(Application Programming Interface), Windows A
20、PI 是Windows 系統(tǒng)和Windows 應(yīng)用程序間的標(biāo)準(zhǔn)程序接口。API 為應(yīng)用程序提供系統(tǒng)的各種特殊函數(shù)及數(shù)據(jù)結(jié)構(gòu)定義,Windows 應(yīng)用程序可以利用上千個(gè)標(biāo)準(zhǔn) API 函數(shù)調(diào)用系統(tǒng)功能。在 Visual C++中使用 Windows API 是相當(dāng)容易的, 只要在項(xiàng)目中設(shè)定所要使用的函數(shù)庫并引用正確的頭文件,就可以使用 Windows API 中的函數(shù)與數(shù)據(jù)類型。</p><p> 根據(jù)Window
21、s API 函數(shù)完成的功能,可將其分為三類。</p><p> ?。?)窗口管理函數(shù):實(shí)現(xiàn)窗口函數(shù)的創(chuàng)建、移動(dòng)和修改功能。</p><p> ?。?)圖形設(shè)備函數(shù)(GDI):實(shí)現(xiàn)與設(shè)備無關(guān)的圖形操作功能。</p><p> (3)系統(tǒng)服務(wù)函數(shù):實(shí)現(xiàn)與操作系統(tǒng)有關(guān)的多種功能。</p><p> 用 Windows API 函數(shù)來編寫應(yīng)用程序
22、的順序結(jié)構(gòu)為:調(diào)用 WinMain 函數(shù)開始執(zhí)行→定義窗口類→初始化窗口類→窗口的實(shí)例化→通過消息循環(huán)獲取消息并將消息發(fā)送給消息處理函數(shù)做出相應(yīng)的操作。</p><p> Windows 編程的特點(diǎn)</p><p> 所有的 Windows 程序都具有類似的結(jié)構(gòu)和相同的“外觀”,所以用戶不用花很多的時(shí)間來學(xué)習(xí)新程序的用法。具有這種一致的用戶界面是使用 Windows 內(nèi)部子模序來創(chuàng)建的
23、。所有的菜單、對(duì)話框、滾動(dòng)條等都具有同樣的鍵盤的鼠標(biāo)接口,Windows 自己處理這項(xiàng)工作,而不是交給應(yīng)用程序完成。Windows 編程有以下幾個(gè)特點(diǎn):</p><p> (1)事件驅(qū)動(dòng)的程序設(shè)計(jì) </p><p> (2)消息循環(huán)與輸入 </p><p><b> ?。?)圖形輸出 </b></p><p> (
24、4)用戶界面對(duì)象 </p><p><b> (5)資源共享</b></p><p> 編寫一個(gè)典型的Windows應(yīng)用程序,一般需要:</p><p> ?。?)C, CPP源程序文件</p><p> ?。?)H,HPP頭文件 </p><p><b> ?。?)資源文
25、件</b></p><p> 包含了應(yīng)用程序所使用的全部資源定義,通常以 .RC 為后綴名。資源是應(yīng)用程序所能夠使用的一類預(yù)定義工具中的一個(gè)對(duì)象,包括:字符串資源、加速鍵表、對(duì)話框、菜單、位圖、光標(biāo)、工具條、圖標(biāo)、版本信息和用戶自定義資源等。</p><p> Windows 消息機(jī)制:Windows 是一個(gè)消息驅(qū)動(dòng)的操作系統(tǒng)。一個(gè)消息由一個(gè)消息名稱(U
26、INT 類型)和兩個(gè)參數(shù)(WPARAM,LPARAM)構(gòu)成。當(dāng)用戶進(jìn)行了輸入或者是窗口的狀態(tài)發(fā)生改變時(shí),系統(tǒng)會(huì)發(fā)送消息到某一個(gè)窗口。例如,當(dāng)鼠標(biāo)左鍵單擊之后會(huì)有 WM_LBUTTONDOWN 消息發(fā)送。用戶也可以定義自己的消息名稱,也可以利用自定義消息來發(fā)送通知和傳送數(shù)據(jù)。一個(gè)消息必須由一個(gè)窗口接收。在窗口的消息處理函數(shù)中可以對(duì)消息進(jìn)行分析,對(duì)自己感興趣的消息進(jìn)行處理。如果希望在窗口中進(jìn)行圖形輸出就必須對(duì) WM_PAINT 進(jìn)行處理。為
27、了應(yīng)付那些沒有被響應(yīng)的消息,Windows 為窗口編寫了默認(rèn)的窗口消息處理函數(shù),窗口過程將負(fù)責(zé)處理那些程序中沒有處理的消息。正因?yàn)橛辛诉@個(gè)默認(rèn)窗口過程,程序員才可以利用 Windows 的窗口進(jìn)行開發(fā)而不必過多關(guān)注窗口各種消息的處理。提到消息就必須說到窗口句柄,系統(tǒng)通過窗口句柄在整個(gè)操作系統(tǒng)中唯一標(biāo)識(shí)一個(gè)窗口。發(fā)送消息時(shí)必須指定一個(gè)窗口句柄表明該消息由那個(gè)窗口接收。而每個(gè)窗口都會(huì)有自己的窗口消息處理函數(shù),用戶的輸入會(huì)被正確的處理。在 W
28、indows 操作系統(tǒng)中維</p><p> 窗口函數(shù)定義了應(yīng)用程序?qū)邮盏降牟煌⒌捻憫?yīng),其中包括了應(yīng)用程序?qū)Ω鞣N可能接收到的消息的處理過程,是消息處理分支控制語句的集合。通常窗口函數(shù)由一個(gè)或多個(gè) switch 語句組成。每條 case 語句對(duì)應(yīng)一種消息,當(dāng)應(yīng)用程序接收到一個(gè)消息時(shí),相應(yīng)的 case 語句被激活并執(zhí)行相應(yīng)的響應(yīng)程序模塊。</p><p> 窗口函數(shù)是應(yīng)用程序處理接收
29、到的消息的函數(shù)。其中包含了應(yīng)用程序?qū)Ω鞣N可能接收到的消息的處理過程。</p><p> 在本系統(tǒng)中一共用到了 WM_PAINT、WM_LBUTTONDOWN、WM_LBUTTONUP、WM_DESTROY四種消息:</p><p> LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)<
30、/p><p> switch(iMessage) </p><p><b> {</b></p><p> case WM_PAINT:</p><p><b> …… ……</b></p><p><b> break;</b>&
31、lt;/p><p> case WM_LBUTTONDOWN:</p><p><b> …… ……</b></p><p> case 、WM_LBUTTONUP:</p><p><b> …… ……</b></p><p> case WM_DESTROY:<
32、;/p><p><b> …… ……</b></p><p> default:</p><p> return(DefWindowProc(hWnd,iMessage,wParam,lParam));</p><p><b> }</b></p><p>
33、WM_LBUTTONDOWN 是在玩家在鼠標(biāo)單擊左鍵后產(chǎn)生的,這時(shí)通過 GetCursorPos(&pt) 函數(shù)來判斷鼠標(biāo)是否處在落棋的合法點(diǎn)(包括按鈕上),如果是合法的落棋點(diǎn),就返回棋子狀態(tài)數(shù)據(jù)等參數(shù),這時(shí) WM_PAINT 函數(shù)在收到這些消息后就開始按照得到的參數(shù)來重繪棋盤,用戶在松開鼠標(biāo)后又產(chǎn)生 WM_LBUTTONUP 消息,電腦在通過選擇最佳落棋點(diǎn)之后,又返回給 WM_PAINT,這樣就產(chǎn)生了消息循環(huán),直到接收到 WM
34、_QUIT 消息才退出程序, PostQuitMessage 函數(shù)的作用就是向應(yīng)用程序發(fā)出 WM_QUIT 消息,請(qǐng)求退出。DefWindowProc 函數(shù)是系統(tǒng)默認(rèn)的處理過程,以保證所有發(fā)送到該窗口的消息均得以處理。</p><p><b> 系統(tǒng)需求分析</b></p><p><b> 系統(tǒng)需求</b></p><p
35、> 五子棋作為一款休閑益智游戲,它最大的優(yōu)點(diǎn)在于游戲規(guī)則家喻戶曉,簡(jiǎn)單,上手快,趣味性強(qiáng),所以受廣大用戶青睞,在各大提供棋牌類游戲的平臺(tái)都可以看到玩五子棋游戲的人很多。休閑益智游戲中等級(jí)并不是最重要的追求目標(biāo),通過對(duì)游戲規(guī)則的熟悉,能很快上手掌握其操作方式,也更適合男女老幼全家共同娛樂,花費(fèi)時(shí)間簡(jiǎn)短,速戰(zhàn)速?zèng)Q,在短時(shí)間內(nèi)感受到游戲的樂趣,完全享受氣氛輕松活躍的游戲過程。此種娛樂方式既不耽誤時(shí)間也能輕松調(diào)劑娛樂,充分適合現(xiàn)代人們的
36、娛樂需求。更主要的是開發(fā)了人的智力,成為年輕一代最流行的游戲,據(jù)統(tǒng)計(jì),五子棋游戲的玩家中,學(xué)生占了接近三分之一的比例,對(duì)學(xué)生的智力健康成長(zhǎng)起一定作用,正所謂休閑娛樂兩不誤。</p><p><b> 功能需求</b></p><p> 要求系統(tǒng)界面簡(jiǎn)潔,操作方便,把五子棋游戲規(guī)則中最基本的規(guī)則體現(xiàn)出來,比如“和棋”、“重新開局”等。五子棋還有一大特點(diǎn)就是速戰(zhàn)速?zèng)Q,
37、電腦應(yīng)在很短時(shí)間內(nèi)就應(yīng)做出判斷,并能提供一定的幫助,違反游戲規(guī)則的時(shí)候應(yīng)立即指出。在正規(guī)五子棋比賽中,都設(shè)置了“禁手”這一規(guī)則,但廣大玩家之所以喜愛五子棋游戲,就是因?yàn)槲遄悠逵螒蛞?guī)則簡(jiǎn)單,“禁手”這一規(guī)則很復(fù)雜,所以在本系統(tǒng)中,采用“無禁手”的規(guī)則,讓規(guī)則簡(jiǎn)單化。</p><p><b> 系統(tǒng)運(yùn)行環(huán)境 </b></p><p> Win 9X/Win ME/Wi
38、n NT/Win 2000/Win XP/Win 2003/</p><p><b> 五子棋算法分析</b></p><p><b> 五子棋的發(fā)展</b></p><p> 五子棋是起源于中國(guó)古代的傳統(tǒng)黑白棋種之一?,F(xiàn)代五子棋日文稱之為“連珠”,英譯為“Renju”,英文稱之為“Gobang”或“FIR”(Fiv
39、e in a Row的縮寫),亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱謂。 </p><p> 五子棋不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。它既有簡(jiǎn)單易學(xué)的特性,為人民群眾所喜聞樂見,又有深?yuàn)W的技巧和高水平的國(guó)際性比賽;它的棋文化源淵流長(zhǎng),具有東方的神秘和西方的直觀;既有“場(chǎng)”的概念,亦有“點(diǎn)”的連接。它是中西文化的交流點(diǎn),是古今哲理的結(jié)晶。</p
40、><p> 五子棋起源于古代中國(guó),發(fā)展于日本,風(fēng)靡于歐洲。對(duì)于它與圍棋的關(guān)系有兩種說法,一說早于圍棋,早在“堯造圍棋”之前,民間就已有五子棋游戲;一說源于圍棋,是圍棋發(fā)展的一個(gè)分支。在中國(guó)的文化里,倍受人們的青睞。古代的五子棋的棋具與圍棋相同,縱橫各十七道。五子棋大約隨圍棋一起在我國(guó)南北朝時(shí)先后傳入朝鮮、日本等地。據(jù)日本史料文獻(xiàn)介紹,中國(guó)古代的五子棋是經(jīng)由高麗(朝鮮),于1688年至1704年的日本元祿時(shí)代傳到日本
41、的。到日本明治32年(公元1899年),經(jīng)過公開征名,“連珠”這一名稱才被正式確定下來,取意于“日月如合壁,五星如連珠”。從此,連珠活動(dòng)經(jīng)過了不斷的改良,主要是規(guī)則的變化(即對(duì)執(zhí)黑棋一方的限制),例如,1899年規(guī)定,禁止黑白雙方走“雙三”;1903年規(guī)定,只禁止黑方走“雙三”;1912年規(guī)定,黑方被迫走“雙三”亦算輸;1916年規(guī)定,黑方不許走“長(zhǎng)連”;1918年規(guī)定,黑方不許走“四、三、三”;1931年規(guī)定,黑方不許走“雙四”,并規(guī)
42、定將19×19的圍棋盤改為15×15的連珠專用棋盤。本世紀(jì)初五子棋傳入歐洲并迅速風(fēng)靡全歐。通過一系列的變化,使五子棋這一簡(jiǎn)單的游戲復(fù)雜化、規(guī)范化,而最終成</p><p> 簡(jiǎn)單介紹一下文章中會(huì)遇到的一些關(guān)于五子棋最基本的術(shù)語</p><p> (1)先手:進(jìn)攻的著法,也指對(duì)弈雙方執(zhí)黑棋先在棋盤上落子的一方;</p><p> (2)四三:
43、指同時(shí)具備兩個(gè)先手,其中一個(gè)四,另一個(gè)是活三;</p><p> ?。?)活三(包括連三和跳三):①連三:緊緊相連的同色三子②跳三:中間間隔一子的活三 ;</p><p> ?。?)四四:一子落下同時(shí)形成兩個(gè)“四”的棋形 ;</p><p> ?。?)三三:一子落下形成了兩個(gè)活三的棋形;</p><p> ?。?)長(zhǎng)連:相
44、同顏色的連續(xù)六子或六子以上; </p><p> (7)禁手:對(duì)局中禁止使用的戰(zhàn)術(shù)或被判為負(fù)的行棋手段;</p><p> (8)勝局:對(duì)局的一方獲勝,稱為“勝局”。包括:①一方首先在棋盤的直線或橫線或斜線上形成連續(xù)的五子或五子以上(特指白方)。②對(duì)方表示認(rèn)輸。③對(duì)方超過比賽規(guī)定的時(shí)限。④當(dāng)黑方禁手形成未能同時(shí)形成五連,白方立即指出禁手后,判定為白方勝局。⑤對(duì)方遲到超過容許時(shí)
45、間。⑥對(duì)方嚴(yán)重犯規(guī)而被判負(fù); </p><p> ?。?)和棋:不分勝負(fù)的對(duì)局或雙方同意平局。</p><p><b> 五子棋的規(guī)則</b></p><p> 五子棋游戲的一個(gè)特點(diǎn)是先行的一方優(yōu)勢(shì)很大,因此在職業(yè)比賽中對(duì)黑方做了種種限制,以利公平競(jìng)爭(zhēng)。五子棋的比賽規(guī)則如下:</p><p> ?。?)黑棋
46、先手、白棋后手,從天元開始相互順序落子;</p><p> (2)最先在棋盤橫向、縱向或斜向形成連續(xù)的同色五個(gè)棋子的一方為勝;</p><p> ?。?)黑棋禁手判負(fù)、白棋無禁手。黑棋禁手有“三、三”、“四、四”和“長(zhǎng)連”,包括“四、三、三”和“四、四、三”。黑棋只能以“四、三”取勝;</p><p> ?。?)如分不出勝負(fù),則到為平局;</p>&
47、lt;p> (5)五連與禁手同時(shí)形成,判勝;</p><p> (6)黑方禁手形成時(shí),白方應(yīng)立即指出。若白方未發(fā)現(xiàn)或發(fā)現(xiàn)后不立即指出,反而繼續(xù)落子,則禁手失效,不再判黑方負(fù)。 </p><p> 五子棋是黑白雙方或兩個(gè)人之間的競(jìng)技活動(dòng),由于對(duì)黑白雙方規(guī)則不同,黑棋必須先行。一般采用猜先的方法來決定誰執(zhí)黑先行,即雙方各抓一種顏色的幾枚棋子,大數(shù)減小數(shù),單數(shù)雙方交換,偶數(shù)不換;黑方
48、在落下關(guān)鍵的第五子即形成五連的同時(shí),如又形成禁手,此時(shí)因黑方已經(jīng)成五,而“五”在五子棋中是至高無上的,故禁手失效,黑方勝;所謂黑方形成禁手,是指黑方落下一子同時(shí)形成兩個(gè)或兩個(gè)以上的活三、沖四及長(zhǎng)連等。此時(shí)白方應(yīng)立即指出,自然而勝。 </p><p> 專業(yè)連珠五子棋雖然對(duì)黑棋采取了種種限制,但是黑棋先行的優(yōu)勢(shì)依然很大。因此,在高段位的專業(yè)比賽中,又出現(xiàn)了三種特殊的規(guī)定: </p><p>
49、; ?。?)“指定打法”:指比賽雙方按照約定好的開局進(jìn)行對(duì)弈。例如“斜月局”、“長(zhǎng)星局”等。 </p><p> ?。?)“三手可交換”:指黑棋下第二手棋〔盤面第三手棋〕之后,白方如感覺黑方棋形不利于己方,可提出交換,即執(zhí)白棋一方變?yōu)閳?zhí)黑棋一方〔此方法不適用于指定開局打法,而用于隨意開局〕。采用此規(guī)定以后,黑棋就不會(huì)再使用諸如“浦月”、“花月”之類的必勝開局了。</p><p> ?。?)
50、“五手兩打”:指黑棋在下盤面上關(guān)鍵的第五手棋時(shí),必須下兩步棋,讓白方在這兩步棋中任選一步,然后再繼續(xù)下。 </p><p> 采用這一系列規(guī)定以后,黑棋先行就再無優(yōu)勢(shì)可言。 </p><p><b> 具體算法分析</b></p><p> 4.3.1 棋盤局勢(shì)狀態(tài)表示</p><p> 要讓計(jì)算機(jī)學(xué)會(huì)下棋,首先
51、就要把下棋問題表示成計(jì)算機(jī)可理解的形式,即把五子棋問題形式化,存在計(jì)算機(jī)中,并能讓搜索算法對(duì)這些數(shù)據(jù)進(jìn)行操作。需要在計(jì)算機(jī)中表示的主要問題有棋盤局勢(shì)狀態(tài)及落子的順序等。棋盤表示主要探討的是是什么數(shù)據(jù)結(jié)構(gòu)來表示棋盤上的信息。一般說來,這與具體的棋類知識(shí)密切相關(guān)。通常,用來描述棋盤及其上棋子信息的是一個(gè)二維數(shù)組。</p><p> 要讓計(jì)算機(jī)知道棋盤局勢(shì)狀態(tài),就是要它記住棋盤中哪個(gè)位置有黑子,哪個(gè)位置有白子以及哪個(gè)
52、位置是空點(diǎn)。因?yàn)槲遄悠宓钠灞P是15行,15列,因此可以將棋盤狀態(tài)的描述用一個(gè)15×15的二維數(shù)組表示。</p><p> 本程序的數(shù)據(jù)將用如下所示的數(shù)據(jù)表示:</p><p> int p[15][15]=</p><p> {{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
53、},</p><p> {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},</p><p> {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},</p><p> {0,0,0,0,0,0,0,0,0,0,
54、0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},</p><p> {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},</p><p> {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},<
55、;/p><p> {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},</p><p> {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};</p><p> 其中,(1)棋盤狀態(tài)數(shù)據(jù)由一個(gè)15×15的二維數(shù)組表示。(2)用數(shù)字“1”和“2”來表示不同的棋子,黑色
56、棋子用“2”表示,白色棋子用“1”表示。(3)沒有棋子的格子用“0”表示。</p><p> 4.3.2棋盤中下棋的順序表示</p><p> 棋局中下棋的順序也很重要,應(yīng)該是黑白雙方交替下棋。</p><p> 本程序用t來判斷黑白又方下棋順序,t為“0”時(shí)由紅方下棋,t為“1”時(shí)由黑方下棋,由于五子棋規(guī)則中黑棋先手,所以初始值t=1,即玩家執(zhí)黑先手。每次落
57、棋后,都應(yīng)改變 t 的值,t 在整個(gè)對(duì)弈過程中都只能為1或者為2,即在任意時(shí)刻,都有一方可以落棋,也只能有一方落棋。</p><p><b> 4.3.3具體算法</b></p><p> 電腦要選擇有利于它的最佳下法,就要能判斷哪種形勢(shì)對(duì)它最有利。但往往對(duì)一個(gè)形勢(shì)的判斷是很難做到準(zhǔn)確的,特別是一盤棋剛開始的時(shí)候,棋盤的形勢(shì)不明朗,即使是專家也不能做出準(zhǔn)確的判斷。
58、為了判斷哪種下法最有利,我們往往需要向后面計(jì)算幾步,看看在走了幾步棋之后,局面的形勢(shì)如何。這被稱為“多算勝”,也就是說,誰看得越深遠(yuǎn),誰就可以獲勝。這種思維方式被用到了計(jì)算機(jī)上。向后面計(jì)算的步數(shù)越多,系統(tǒng)開銷就越大,本系統(tǒng)只向后計(jì)算一步,根據(jù)威脅的優(yōu)先級(jí)來選擇落棋的最佳點(diǎn)。</p><p> 輪到電腦下棋時(shí),電腦先向棋盤搜索合法的落棋點(diǎn),即棋盤的空白點(diǎn)。然后再利用下面的算法先擇最佳落棋點(diǎn)。在每個(gè)空白點(diǎn),都有四個(gè)
59、方向需要考慮,即—、|、﹨、∕四個(gè)方向。以下就用○表示電腦所執(zhí)的黑棋,用□表示玩家所執(zhí)的白棋,用×表示棋盤的空白點(diǎn)。在設(shè)計(jì)的時(shí)候,盡可能把所有情況全面考慮,設(shè)置為搜索一個(gè)最佳落棋點(diǎn)位置的時(shí)候,需要保證左右展開后碰壁,之間的空間距離至少要有六格(而不是五子),否則就是死子。</p><p> 算法流程是:順序向下搜索,每次有符合要求的點(diǎn)時(shí),視為最佳落棋點(diǎn),并在該點(diǎn)落棋,同時(shí)將t賦值為1,退出搜索并判斷
60、是否有一方獲勝,然后等待玩家落棋,再重復(fù)這一過程,直到有一方獲勝。</p><p><b> 圖1 算法流程圖</b></p><p> 一,電腦搜索棋盤里紅棋是否有一步獲勝的棋,即在同一條線路上有連續(xù)五個(gè)位置上,有四顆為紅棋,另外一顆為空,這時(shí)就不用考慮玩家的棋局,直接就可以獲勝。能直接獲勝的棋型有×○○○○×、□○○○○×,還包括
61、通過四三來形成的活四,包括有○○×○○、○○○×○、○×○○○。</p><p> 二,電腦搜索棋盤里黑棋是否有一步獲勝的棋,這時(shí)就應(yīng)該讓玩家的“活四”變“死四”,這是紅棋威脅級(jí)別最高的,應(yīng)立即做出反應(yīng)。有直接威脅的棋型有□×□□□、×□□□□×、□□□×□、×□□□□×。對(duì)于×□□□□×這種棋型,其實(shí)
62、玩家已經(jīng)獲勝。</p><p> 三,電腦搜索棋盤里紅棋是否有可形成活四的棋型,進(jìn)一步?jīng)_四,這時(shí)就應(yīng)該主動(dòng)進(jìn)攻,這種棋型包括×○○○××、×○○×○×、×○×○○×。這樣的棋只需兩步方可獲勝,威脅級(jí)別僅次于上面兩種。</p><p> 四,電腦搜索棋盤里黑棋是否有可形成活四的棋型,若有,就有阻止沖
63、四,讓玩家的“活三”變死三,這時(shí)就體現(xiàn)了電腦的防守策略,這種棋型包括:××□□□×、×□×□□×、×□□×□×。其中××□□□×在封堵后還具有威脅性,所以在電腦沒有進(jìn)攻機(jī)會(huì)時(shí),也應(yīng)該考慮這樣的棋型的威脅性,因?yàn)榭梢岳眠@種棋型來造四三來獲勝。</p><p> 五,電腦搜索棋盤里紅棋是否有可形
64、成活三的棋型,這是獲勝的過渡棋,在整個(gè)棋局中非常重要,這樣的棋型越多,紅棋造活三的機(jī)會(huì)就越多,是獲勝的關(guān)鍵。這種棋型包括:××○○××、××○×○×,由于需要三步獲勝,所以優(yōu)先級(jí)比較低。</p><p> 表1是獲勝情況分析表,優(yōu)先級(jí)是按所需步數(shù)和落棋的順序來決定的,在獲勝所需步數(shù)相同的情況下,電腦所執(zhí)的紅棋優(yōu)先級(jí)高于黑棋。<
65、/p><p> 表1 獲勝情況分析表</p><p><b> 系統(tǒng)流程</b></p><p> 五子棋的規(guī)則如下:(1)棋盤:采用15×15的棋盤。(2)下法玩家執(zhí)黑先手,電腦執(zhí)白后手,輪流在棋盤上選擇一個(gè)無子的交叉點(diǎn)落子。無子的交叉點(diǎn)又被稱為空點(diǎn)。(3)輸贏判斷:黑、白雙方有一方的5顆棋子在橫、豎或斜方向上連接成一線即為該方贏
66、。(4)對(duì)于五子棋可分為禁手和無禁手兩類,本游戲采用無禁手,這樣就對(duì)執(zhí)黑方很有力,獲勝的機(jī)率非常大??捎?5×15的二維數(shù)表示棋盤內(nèi)各點(diǎn)狀態(tài) (空、白子、黑子) ;</p><p> 五子棋游戲規(guī)則簡(jiǎn)單,在每次玩家或電腦落棋后,都要去判斷是否游戲是否分出勝負(fù),如沒有,另一方才能繼續(xù)下棋。一局游戲結(jié)束后,可以選擇再來一盤,這時(shí)將棋盤數(shù)據(jù)清空,又開始新的棋局。系統(tǒng)流程如圖2所示。</p>&
67、lt;p><b> 圖2 系統(tǒng)流程圖</b></p><p><b> 系統(tǒng)功能實(shí)現(xiàn)</b></p><p><b> 窗口設(shè)計(jì)</b></p><p> 根據(jù) Windows API 函數(shù)來編寫應(yīng)用程序的順序結(jié)構(gòu):調(diào)用 WinMain 函數(shù)開始執(zhí)行→定義窗口類→初始化窗口類→窗口的實(shí)例
68、化→通過消息循環(huán)獲取消息并將消息發(fā)送給消息處理函數(shù)做出相應(yīng)的操作。</p><p> 我們首先應(yīng)該創(chuàng)建一個(gè)窗口,生成一個(gè)窗口主要有兩步:定義窗口類和初始化窗口類。</p><p> 首先用 InitWindowsClass 來定義一個(gè)窗口類,窗口類事實(shí)上是 struct 結(jié)構(gòu)體,內(nèi)部有10個(gè)分量,他們是用來于初始化窗口類對(duì)象而用的。根據(jù)函數(shù)里聲明的各個(gè)參數(shù)來執(zhí)行,它在里面定義了窗口類對(duì)
69、象、聲明了窗口的類對(duì)象名稱、應(yīng)用程序?qū)嵗浔⑾⑻幚砗瘮?shù)名、光標(biāo)樣式和窗口背景等,其它的都設(shè)置為初始值。</p><p> 函數(shù)關(guān)鍵語句:BOOL InitWindowsClass(HINSTANCE hInstance)</p><p> { WndClass.hbrBackground=(HBRUSH)(CreateSolidBrush(RGB(240,240,240))); &
70、lt;/p><p> WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);</p><p> WndClass.hInstance=hInstance;</p><p> WndClass.lpfnWndProc=WndProc;</p><p> WndClass.lpszClassName=&quo
71、t;WinFill";</p><p> return RegisterClass(&WndClass);}</p><p> 然后用 InitWindows 函數(shù)來初始化窗口類,在窗口類對(duì)象的初始化過程中,我們定義了窗口的一些簡(jiǎn)單一般特征,比如背景顏色呀,光標(biāo)等等。但是在利用 CreateWindow 創(chuàng)建窗口的時(shí)候可以設(shè)置更多的細(xì)節(jié),比如窗口標(biāo)題這些。</p
72、><p><b> 函數(shù)主要參數(shù):</b></p><p> hWnd=CreateWindow("WinFill",</p><p><b> "五子棋游戲",</b></p><p> WS_OVERLAPPEDWINDOW,</p
73、><p><b> 0,0,</b></p><p><b> 1024,768,</b></p><p> hInstance);</p><p> 其中,定義窗口類對(duì)象名稱為"WinFill",窗口標(biāo)題為"五子棋游戲",窗口風(fēng)格為WS_OVERLAPP
74、EDWINDOW,說明此窗口是一個(gè)層疊式窗口,含有邊框、標(biāo)題欄、系統(tǒng)菜單、最大最小化按鈕的窗口。</p><p><b> 棋盤設(shè)計(jì)</b></p><p> 程序的實(shí)現(xiàn)上,首先完成界面的設(shè)計(jì),在界面的設(shè)計(jì)上,使用了二維數(shù)組的棋盤格式,考慮到五子棋的落子后,是不會(huì)再次移動(dòng)的,所以采用劃直線的方法模擬一個(gè)棋盤。棋盤大小為560×560,起始坐標(biāo)為(200,
75、100),每個(gè)格子大小為(40,40)。 </p><p> 首先用 GetStockObject 函數(shù)創(chuàng)建一個(gè)畫筆和畫刷,用 SelectObject 選擇當(dāng)前使用的畫筆和畫刷,畫筆的作用是畫棋盤的邊框及格子,畫刷的作用是填充棋盤的背景色,先取畫筆后我們才能用它來畫棋盤。為了增加棋盤的美觀,畫刷顏色選取灰色,與窗口的銀白色分開。</p><p> 然后用 Rectangle 函數(shù)畫一
76、個(gè)矩形,就是棋盤的邊框,棋盤的左上角坐標(biāo)為(200,100),右下角坐標(biāo)為(760,660)。</p><p> 再畫棋盤的各橫軸及縱軸,在畫每一條直線前,需用 MoveToEx 函數(shù)指定當(dāng)前畫筆的位置,然后用 LineTo 函數(shù)從指定這點(diǎn)開始畫一條到指定的另外一點(diǎn)的直線。</p><p> 函數(shù)段為:hPen=(HPEN)GetStockObject(BLACK_PEN);</
77、p><p> SelectObject(hDC,hPen);</p><p> hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH); </p><p> SelectObject(hDC,hBrush); </p><p> Rectangle(hDC,200,100,760,660); <
78、/p><p> MoveToEx(hDC,200,140,NULL); //第一條橫線</p><p> 在這些都完成了之后,對(duì)界面進(jìn)行最后的完善,通過添加按鈕來使用戶在和電腦對(duì)弈的同時(shí),可以從這些按鈕中獲得必要的幫助。</p><p> 本系統(tǒng)一共設(shè)置了四個(gè)按鈕:“和棋”、“再來一盤”,“退出”和“幫助”。它們的畫法采用文本框模擬按鈕,先畫一個(gè)矩形,在矩形里填
79、充提示信息,用鼠標(biāo)單擊事件來響應(yīng)各個(gè)按鈕。</p><p> 因此綜上所述,在界面的設(shè)計(jì)上,主要有兩個(gè)模塊,一個(gè)是棋盤模塊,一個(gè)是按鈕模塊。</p><p><b> 按鈕功能的實(shí)現(xiàn)</b></p><p> 本系統(tǒng)一共設(shè)置了四個(gè)按鈕:“和棋”、“再來一盤”,“退出”和“幫助”。它們的畫法采用文本框模擬按鈕,先畫一個(gè)矩形,在矩形里填充提示
80、信息,用鼠標(biāo)單擊事件來響應(yīng)各個(gè)按鈕。這四個(gè)按鈕基本滿足了一般玩家的需求。</p><p> 按鈕的畫法:先在主函數(shù)里面定義四個(gè)變量,分別存儲(chǔ)按鈕的標(biāo)題,然后在棋盤外畫四個(gè)矩形,然后在四個(gè)矩形里分別顯示按鈕的標(biāo)題。</p><p><b> 具體實(shí)現(xiàn)方法:</b></p><p><b> “退出”按鈕:</b><
81、;/p><p> Rectangle(hDC,770,110,820,135);</p><p> TextOut(hDC,780,115,lpsz1,strlen(lpsz1));</p><p> if(i>770&&i<820&&j>495&&j<520)</p><
82、p> {PostQuitMessage(0);</p><p> return(0);}</p><p> 以上這幾行代碼就實(shí)現(xiàn)了退出按鈕按鈕的畫法及實(shí)現(xiàn),lpsz1 里存儲(chǔ)的是按鈕標(biāo)題“退出”,在(770,110)到(820,135)這個(gè)區(qū)域畫一按鈕,strlen(lpsz1) 求的是字符串的長(zhǎng)度,求出來的值就是文本顯示的長(zhǎng)度。當(dāng)鼠標(biāo)單擊這個(gè)區(qū)域的時(shí)候,就產(chǎn)生消息,并執(zhí)行 P
83、ostQuitMessage(0) 這條語句,這條語句的作用是退出應(yīng)用程序。這樣就模擬出了一個(gè)退出按鈕,實(shí)現(xiàn)了程序的退出。</p><p><b> “再來一盤”按鈕:</b></p><p> Rectangle(hDC,100,325,180,375);</p><p> TextOut(hDC,110,340,lpsz5,strle
84、n(lpsz5));</p><p> if(i>=100&&i<=325&&j>=180&&j<=375) //再來一盤</p><p><b> {</b></p><p> for(m=0;m<=a;m++)</p><p>&
85、lt;b> {c[m]=0;</b></p><p><b> d[m]=0;</b></p><p><b> e[m]=0;</b></p><p><b> f[m]=0;</b></p><p><b> }</b>&l
86、t;/p><p> for(m=0;m<=14;m++)</p><p> for(n=0;n<=14;n++)</p><p> {p[m][n]=0;}</p><p> 在畫法和退出按鈕一樣,都是利用矩形內(nèi)填充文本的方法,在響應(yīng)這個(gè)按鈕時(shí)有一定條件,就是游戲已經(jīng)分出勝負(fù)或者通過和棋結(jié)束了游戲。這時(shí)才會(huì)產(chǎn)生再來一盤的消息,
87、它會(huì)將所有棋盤信息置為初始值,比如將棋盤狀態(tài)函數(shù)P[][]里的數(shù)組全部清空,都賦初值為0,表示下棋棋子數(shù)的 a 也置為0等。</p><p><b> “幫助”按鈕:</b></p><p> Rectangle(hDC,770,110,820,135);</p><p> TextOut(hDC,780,115,lpsz1,strlen
88、(lpsz1));</p><p> if(i>=770&&i<=820&&j>=110&&j<=135)</p><p> {MessageBox(hWnd,"需幫助 請(qǐng)?jiān)诤谄逑缕鍟r(shí)單擊'幫助' \n 一方獲勝后可單擊'退出'退出程序 \n 雙方僵持情況下可'和棋
89、' \n 如有興趣請(qǐng)'再來一盤'","幫助",MB_OK);}</p><p> 畫法和前面的一樣,這里面使用了文本換行,在每行之間用 \n 將需要換行的文字隔開,于是在單擊這個(gè)按鈕后,就會(huì)看到有多行文字的消息框出現(xiàn)。</p><p><b> 勝負(fù)判斷</b></p><p> 在五
90、子棋游戲中,判斷勝負(fù)是很重要的一項(xiàng)工作,最先在棋盤橫向、豎向、斜向形成五顆連續(xù)相同顏色的棋子的一方為勝。</p><p> (1)橫向:橫向比較好判斷,縱坐標(biāo)不變,橫坐標(biāo)向右遞增,有五顆連續(xù)的相同顏色的棋子即獲勝,所以橫坐標(biāo)的范圍不必是(0,14),只搜索(0,10)即可。</p><p> ?。?)縱向:與橫向一樣,這時(shí)橫坐標(biāo)不變,縱坐標(biāo)向下遞增,所以縱坐標(biāo)的搜索范圍可以縮小到(0,1
91、0)。</p><p> ?。?)“﹨”向:這時(shí)搜索應(yīng)從左上角開始,橫縱坐標(biāo)同時(shí)遞增,橫縱坐標(biāo)的搜索范圍都是(0,10)。</p><p> (4)“/”向:這時(shí)縱坐標(biāo)是向下遞增,但橫坐標(biāo)是向左遞減的,所以搜索范圍就不能從左上角(0,0)開始,應(yīng)從(0,4)開始,橫坐標(biāo)的搜索范圍是(4,14),縱坐標(biāo)的搜索范圍是(0,10)。</p><p> 下面就以“/”向
92、為例,在程序中具體實(shí)現(xiàn)過程:</p><p> for(m=0;m<=10;m++)</p><p> for(n=4;n<=14;n++)</p><p><b> {</b></p><p> if(p[m][n]==1&&p[m+1][n-1]==1&&p[m+
93、2][n-2]==1&&p[m+3][n-3]==1&&p[m+4][n-4]==1&&g==1)</p><p><b> {</b></p><p> MessageBox(hWnd,"黑棋贏","結(jié)束",MB_OK);</p><p><b&
94、gt; g=0;</b></p><p><b> }</b></p><p><b> else </b></p><p> if(p[m][n]==2&&p[m+1][n-1]==2&&p[m+2][n-2]==2&&p[m+3][n-3]==2&am
95、p;&p[m+4][n-4]==2&&g==1)</p><p><b> {</b></p><p> MessageBox(hWnd,"紅棋贏","結(jié)束",MB_OK);</p><p><b> g=0;</b></p><p&
96、gt;<b> }</b></p><p> 一方獲勝后,會(huì)彈出消息框,提示一方獲勝游戲結(jié)束,并將 g 置為0,這時(shí)游戲就不能再繼續(xù),對(duì)下棋、“和棋”等起了屏蔽作用。在 if 語句里面有 g=0 這個(gè)條件,是限制游戲結(jié)束后重復(fù)判斷勝負(fù),只要一方獲勝,就不能對(duì)棋盤做任何操作,只有對(duì)按鈕采取操作有效。</p><p><b> 系統(tǒng)測(cè)試與分析</b&
97、gt;</p><p><b> 運(yùn)行結(jié)果</b></p><p> 本系統(tǒng)在 Visual C++ 6.0 下調(diào)試通過,調(diào)試成功后,打開debug目錄下five.exe,開始運(yùn)行五子棋游戲。我就從界面、按鈕功能、勝負(fù)的判斷幾個(gè)方面來測(cè)試系統(tǒng)。</p><p> 1 界面:該窗口具有最大化、最小化關(guān)閉按鈕,系統(tǒng)菜單,標(biāo)題欄,邊框,背景色為
98、銀白色,棋盤大小為15×15,背景為灰色。</p><p><b> 圖3 游戲界面</b></p><p> 2 畫棋子:本系統(tǒng)能夠在棋盤方格的交叉處畫棋子,棋子半徑為10。</p><p><b> 圖4 畫棋子</b></p><p> 3 判斷勝負(fù):當(dāng)棋盤上“一”、“∣”、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五子棋游戲軟件工程課程設(shè)計(jì)
- 五子棋游戲畢業(yè)設(shè)計(jì)
- 基于vc的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 畢業(yè)設(shè)計(jì)---基于labview設(shè)計(jì)的五子棋游戲
- 畢業(yè)設(shè)計(jì)---網(wǎng)絡(luò)五子棋游戲
- 基于vc的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)【開題報(bào)告】
- 網(wǎng)絡(luò)五子棋游戲畢業(yè)設(shè)計(jì)
- 基于vc的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)【文獻(xiàn)綜述】
- 計(jì)算機(jī)畢業(yè)論文---五子棋游戲軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)(論文)-五子棋游戲程序設(shè)計(jì)與開發(fā)
- 基于vc的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)【任務(wù)書】
- 基于java的五子棋游戲設(shè)計(jì)
- 人機(jī)對(duì)弈五子棋游戲畢業(yè)設(shè)計(jì)
- 基于vc++的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)【開題報(bào)告】
- 軟件工程畢業(yè)設(shè)計(jì)(論文)-基于android的五子棋游戲設(shè)計(jì)
- 基于android的五子棋游戲設(shè)計(jì)
- 五子棋畢業(yè)論文-html開發(fā)五子棋的原型設(shè)計(jì)
- 五子棋游戲設(shè)計(jì)報(bào)告
- java五子棋畢業(yè)設(shè)計(jì)--java五子棋對(duì)弈程序的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)(論文)-基于android的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論