【正文】
中國象棋游戲的設(shè)計與實現(xiàn)摘 要象棋程序的實現(xiàn)可以被分為人工智能和界面程序輔助兩大部分。人工智能部分主要體現(xiàn)計算機的下棋思路,既計算機如何進行思考并以最佳走法完成下一步,先由相應(yīng)的搜索算法進行搜索,并對各種可能的走法進行估值,從中選擇勝利面最大的一步;而界面及程序輔助部分主要便于用戶通過以前的下棋步驟,更好地調(diào)整下棋思路,著法顯示使用戶能夠清楚地知道下棋過程,更準確地把握整個局面。本文首先研究了中國象棋在計算機中的表示問題,接著討論如何產(chǎn)生著法一系列相關(guān)內(nèi)容。其次研究了博弈樹的極小極大搜索技術(shù)及在此基礎(chǔ)上發(fā)展起來的AlphaBeta剪枝算法,使用MFC文檔視圖體系結(jié)構(gòu)和Visual C++開發(fā)工具,實現(xiàn)了一個具有一定棋力的中國象棋人機對弈程序。 關(guān)鍵詞:中國象棋;人工智能;博弈樹;AlphaBeta搜索 The Design and Implementation of Chinese ChessAbstractThe implementation of a chess program can be deposed into two major parts: the artificial intelligence and the user interface and program assist. The part of artificial intelligence shows the way of puter thinking, and which step is the best step would be decided by it. Firstly, the puter uses search algorithms to search, and then evaluates every impossible step, finally choses the best one, the other part is used for the player to adjust his thought to the currently phases. The display of step list makes player know the process of chess distinctly, and let player make a better choice.This paper firstly studies how to represent a chess board in puter, then discusses how to generate legal moves. Secondly, this paper studies the minimax searching procedure of Game Tree, and the AlphaBeta pruning algorithm. A Chessplaying system is designed and developed, which is built on the integrated puter MFC SDI document view architecture by using Visual C++. Key words: Chinese chess。 Artificial Intelligence。 Game tree。 AlphaBeta searching 目 錄論文總頁數(shù):22頁1 引言 1 象棋設(shè)計背景和研究意義 1 象棋設(shè)計研究方法 12 人工智能算法設(shè)計 2 棋局表示 3 著法生成 4 搜索算法 5 歷史啟發(fā)及著法排序 9 局面評估 9 程序組裝 113 界面及程序輔助設(shè)計 12 界面基本框架 12 多線程 13 著法名稱顯示 14 悔棋和還原 154 系統(tǒng)實現(xiàn) 16結(jié) 論 19參考文獻 20致 謝 21聲 明 22 1 引言 象棋設(shè)計背景和研究意義電腦游戲行業(yè)經(jīng)過二十年的發(fā)展,已經(jīng)成為與影視、音樂等并駕齊驅(qū)的全球最重要的娛樂產(chǎn)業(yè)之一,其年銷售額超過好萊塢的全年收入。游戲,作為一種娛樂活動。早期的人類社會由于生產(chǎn)力及科技的制約,只能進行一些戶外的游戲。隨著生產(chǎn)力的發(fā)展和科技進步,一種新的游戲方式——電子游戲也隨之誕生。當(dāng)計算機發(fā)明以后,電子游戲又多了一個新的載體。電子游戲在整個計算機產(chǎn)業(yè)的帶動下不斷地創(chuàng)新、發(fā)展著。自從計算機發(fā)明,向各個領(lǐng)域發(fā)展,到成為我們現(xiàn)在每天工作和生活必不可少的一部分的這個過程中,電子游戲也逐步滲入我們每個人的娛樂活動中。而計算機已經(jīng)普及的今天,對于可以用計算機進行程序編輯的人來說,開發(fā)屬于自己的游戲,已經(jīng)不再是夢想。事實上,個人計算機軟件市場的大約80%銷售份額是來自游戲軟件。棋牌游戲?qū)儆谛蓍e類游戲,相對于角色扮演類游戲和即時戰(zhàn)略類游戲等其它游戲,具有上手快、游戲時間短的特點,更利于用戶進行放松休閑,為人們所喜愛,特別是棋類游戲,方便、快捷、操作簡單,在休閑娛樂中占主要位置。作為中華民族悠久文化的代表之一,中國象棋不僅源遠流長,而且基礎(chǔ)廣泛,作為一項智力運動,中國象棋開始走向世界。隨著計算機處理速度的飛速提高,人們很早就提出了疑問:計算機是否會超越人類?世界國際象棋大師已被計算機打敗,計算機已經(jīng)超過了人類?而人工智能是綜合性很強的一門邊緣學(xué)科,它的中心任務(wù)是研究如何使計算機去做那些過去只能靠人的智力才能做的工作。因此,對游戲開發(fā)過程中的人工智能技術(shù)的研究自然也就成了業(yè)界的一個熱門研究方向。 象棋設(shè)計研究方法對于象棋來說,核心設(shè)計主要包括人工智能算法的以及整個游戲中界面及程序輔助部分的實現(xiàn),主要用 Visual C++ 進行開發(fā),里面的MFC類庫,使游戲開發(fā)更加方便,并利用人工智能相關(guān)搜索算法實現(xiàn)人工智能的著法生成,從而完善整個游戲的功能。本文的目標是實現(xiàn)一款有著一定下棋水平且交互友好的中國象棋人機對弈程序。該程序功能包括:*人機對弈;*搜索深度設(shè)定;(電腦棋力選擇)*悔棋、還原;*著法名稱顯示;整個程序的實現(xiàn)可分為兩大部分:一、人工智能算法設(shè)計(計算機下棋引擎)該部分實現(xiàn)了如何讓計算機下中國象棋,其中涉及人機對弈的基本理論及思想,是該程序的核心部分,同時也是本項目研究的重點所在。二、界面及程序輔助設(shè)計光有下棋引擎尚不能滿足人機交互的基本要求,因此還需要一個框架(界面)來作為引擎的載體,同時提供一些諸如悔棋,還原之類的附屬功能(程序輔助)。下面分別介紹各部分實現(xiàn)。由于界面及程序輔助部分涉及內(nèi)容寬泛而又繁瑣,因而本文只介紹其中重點部分。2 人工智能算法設(shè)計程序的基本框架:從程序的結(jié)構(gòu)上講,大體上可以將引擎部分劃分為四大塊:棋局表示;著法生成;搜索算法;局面評估。程序的大概的思想是:首先使用一個數(shù)據(jù)結(jié)構(gòu)來描述棋局信息,對某一特定的棋局信息由著法生成器生成當(dāng)前下棋方所有合法的著法并依次存入著法隊列。然后通過搜索算法來逐一讀取著法并調(diào)用局面評估函數(shù)對該著法所產(chǎn)生的后繼局面進行評估打分,從中選出一個最有可能導(dǎo)致走棋方取勝的著法。在搜索的過程中還可以采用一些輔助手段來提高搜索的效率。其過程如下所示(圖1):圖 1 程序結(jié)構(gòu)圖下面將分別介紹程序各個部分: 棋局表示計算機下棋的前提是要讓計算機讀懂象棋。所謂讀懂,即計算機應(yīng)該能夠清楚地了解到棋盤上的局面(棋盤上棋子的分布情況)以及下棋方所