國際象棋人工智能軟件chessdb


國際象棋人工智能軟件chessdb  

第1章 軟件概述

國際象棋人工智能軟件(以下簡稱chessdb),是用VB.NET語言開發的一款Windows桌面應用程序。基本功能包括:

l  編輯棋局

l  保存棋譜

l  打開棋譜

l  人工智能分析局面

其他選項有:

l  旋轉棋盤

l  翻轉棋子

l  設置格子顏色

該軟件的特點是兼容性好,無需安裝,雙擊文件即可打開。而且,棋力水平高,適合各個水平的棋手作為輔助工具使用。

1.1 開發背景

國際象棋(Chess)是歐美國家比較流行的一種智力游戲,近年來在國內也已經非常普及,而且經常舉辦各種規模的賽事。越來越多的家長願意讓自己的孩子學習國際象棋,提高智力水平。

但是,適合國人推演棋局的人工智能軟件卻不多,本軟件的設計是為了讓更多人了解國際象棋,借助本軟件的分析功能進一步提高棋手的競技水平。

1.2 設計思路

棋類游戲的軟件開發,首選窗體應用程序,利用圖像控件呈現棋子效果。因此,本軟件的實現必須考慮如下多個方面:

l  國際象棋棋盤的正常顯示

l  棋子的正常顯示

l  棋子按照行棋規則正常移動

l  行棋過程中記錄前后移動的坐標

l  棋譜的保存

l  棋譜的打開

l  在任意一個局面下分析局面

除了實現以上基本功能外,還需要從方便用戶使用的角度,設計如下選項:

l  設置深格、淺格顏色

l  棋盤旋轉

l  棋子翻轉

這些設置應該保存於注冊表,下次啟動軟件時直接使用上次的設置。

棋盤的實現,采用了64個PictureBox控件,每個控件具有BackColor屬性和Image屬性,其中BackColor通常為純色,用於顯示格子顏色。而Image屬性是一個圖像,在行棋的過程中利用不斷修改Image屬性實現走棋的效果。也就是說,行棋過程中,所有的控件位於原地不動,只是更改了相應控件的圖像。

在手動走棋過程中,還需要對行棋行為按照國際象棋行棋規則進行約束,否則,拿起任何一個棋子都可以移動或吃掉另一個棋子。具體的行棋規則請參考其他資料。但是國際象棋有以下4個特殊的走棋方式,需要個別處理。

1.2.1 王車易位

當一方的王和車從未走動,而且王車之間沒有任何棋子,此時王可以向車的方向一次移動兩格,車越過王靠在王的另一側。這個動作算一步棋。

 

 

 王向a列的車易位,稱為“長易位”,把王走到c1,並且把左側的車走到d1。

王向h列的車易位,稱為“短易位”,把王走到g1,並且把右側的車走到f1。

需要另外注意的是:易位時必須考慮王經過的每個格子是否被對方將軍,如果某個格子處於將軍,則不具有易位條件。假設計划長易位,必須提前看一下e1、d1、c1這三個格子,是否被對方棋子將軍。

長易位的結果:

 

 

 

短易位的結果:

 

 

 

1.2.2 兵走兩格

在初始局面,白黑雙方各有8個兵,分別位於2線和7線。

 

 

 

 在沒有被對方將軍的前提下,原位的兵可以直接向前移動兩格,如果不是原位的兵,一次只能前進一格。

兵走兩格的條件是,兵前面的兩個格子都沒有任何棋子。

上圖的行棋結果是:

 

 

 

 再看下圖,白方e2兵前面有象,黑方a7兵前面有馬,這兩個兵都不具有走兩格的條件。

 

 

 

 

1.2.3 吃過路兵

吃過路兵的走法必須基於對方兵走兩格。

假設白方e線的兵已經走到5線(對方境內),那么相鄰的d線和f線,對方的原位兵如果走兩格,白方就可以吃掉黑方的兵。

 

 

 

 

假設黑方走d7d5,那么白方可以認為黑方的兵在d6,直接走e5d6,並且把d5的兵從棋盤拿掉。

 

 

 

 行棋的結果:

 

 

 

 反之,當黑方的兵已經走到4線(白方境內),白方相鄰線的原位兵前進兩格,也有被吃過路兵的可能。

 

 

 

 上圖,當白方走b2b4,黑方可以走a4b3吃掉白兵。

此外,需要注意的是吃過路兵不是必須的,主吃方根據棋局形勢可以選擇吃,也可以任之不管。如果選擇吃,必須立即吃掉,如果雙方各走了其他的棋子,則吃過路兵的條件已喪失

1.2.4 底兵升變

當一方的兵走到了對方棋盤的底線,這個兵必須變更為己方的后、車、馬、象之一。

白方的兵走到了8線,或者黑方的兵走到了1線,都必須升變。

 

 

 

 上圖,如果輪白方走,b7兵既可以吃掉黑方馬並且升變,也可以直接走到b8升變。

如果輪黑方走,c2兵走到c1升變。

假設白兵吃掉了黑馬,軟件彈出一個升變對話框,白方必須從中選擇一個,通常選擇后。

 

 

 

 升變后的結果:

 

 

 

 

 

1.3 軟件的基本信息

軟件名稱:chessdb

文件類型:exe可執行程序

其他輔助文件:無

運行平台:Windows系統均可正常運行

 

 

第2章 軟件下載

聯網用戶可以訪問:https://share.weiyun.com/R3QI4yfl

進入“工具大全”文件夾,下載chessdb.zip

也可以直接從如下鏈接下載:

https://files.cnblogs.com/files/ryueifu-VBA/chessdb.zip

下載后解壓縮到任意路徑,主文件是chessdb.exe,另一個a.txt是一個示例棋譜文件。

 

 

第3章 功能說明

 

3.1 軟件概覽

本軟件的功能分布在窗體區域和主菜單中。

窗體區域包括:

l  棋盤和棋子

l  FEN文本框

l  棋譜列表

l  招法列表

 

 

 

 

 菜單包括:

l  文件:棋譜的保存和打開

l  選項:棋盤和棋子的外觀設定

l  人工智能:設置是否顯示招法

l  幫助

 

3.2 編輯棋局

剛打開軟件時,默認顯示的是國際象棋初始局面。

由白方先行,用戶使用鼠標點擊白方的棋子,按照國際象棋行棋規則走棋即可。

如果不啟用人工智能,白方、黑方均由軟件的用戶使用鼠標走棋。

棋譜可以保存為TXT文件,以后通過“文件”、“打開”再次查看棋譜

3.3 查看棋譜

一個棋譜由初始局面和棋招列表構成,棋招列表位於棋盤右側,用戶使用鼠標點擊列表中的某項,或者按鍵盤的上下箭頭,可以快速跳轉到該局面。

 

 

 

 同時,棋盤底部有一個FEN文本框,里面實時顯示當前局面信息。

3.4 編輯殘局

本軟件未提供直接從棋盤編輯殘局的方法。

用戶可以直接修改FEN文本框的內容,按下回車鍵完成殘局編輯。如果想編輯殘局,用戶需要事先了解FEN字符串的構成和含義。

FEN字符串把某個局面的棋子,使用字母代替,最后連成一個長的字符串,方便在不同的軟件之間傳遞局面信息。

例如初始局面如下:

 

 

 

 白方棋子對應的字母為:

車(R)、馬(N)、象(B)、后(Q)、王(K)、兵(P)

黑方棋子是上述各個字母對應的小寫。

如果把初始局面用字母代替,則結果為:

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR

其中/用於分行,數字表示連續的空白格子數。

編輯殘局舉例如下:

假設FEN文本框中的內容為:

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

用鼠標選中前面的rnbq,這4個字母,刪掉,改寫為數字4,表示4個空白格子。然后再把第二行的前面3個p,刪掉,換成數字3。最后按下回車。

FEN文本框內容被修改為:

4kbnr/3ppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

棋盤局面為:

 

 

 

如果要設置殘局該黑方行棋,將后面的w改為b即可。

 

3.5 更改格子顏色

用戶根據自己的愛好,可以修改深格和淺格的顏色。

點擊菜單“選項”、“深格顏色”,彈出一個顏色選取對話框。

 

 

 

 

點擊“確定”后,棋盤顏色發生了變化

 

 

 

  

3.6 旋轉棋盤

如果用戶需要查看黑方,把白方當作對方,可以通過旋轉棋盤來切換視圖。

 

 

 

  

3.7 翻轉棋子

國際象棋平面棋子,一般默認是白黑雙方的棋子都是正向的,沿着屏幕方向朝上。

有時候需要把對方的棋子方向調轉,更好地分辨走棋方向。

 

 

  

3.8 人工智能

軟件默認是關閉人工智能功能的。如果要為白方支招,選擇菜單“人工智能”、“顯示白方招法”,使其處於勾選狀態(也可按下快捷鍵Ctrl+W)。

 

 

 這樣,每當黑方走完一步棋,軟件最右側就自動顯示白方的各種招法,用戶一般選擇最上面的招法即可。

例如使用鼠標點擊右側列表中的e2e4,軟件會自動為白方走棋,結果為:

 

 

 

如果出現卡頓,耐心等待即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM