vc论文象棋设计论文

vc论文象棋设计论文

ID:9288834

大小:338.00 KB

页数:18页

时间:2018-04-26

vc论文象棋设计论文_第1页
vc论文象棋设计论文_第2页
vc论文象棋设计论文_第3页
vc论文象棋设计论文_第4页
vc论文象棋设计论文_第5页
资源描述:

《vc论文象棋设计论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、中国象棋对弈程序【摘要】:人机博弈是人工智能研究的经典课题之一。凭借设计优良的算法和计算机的快速运算能力,计算机可以在人机对弈中表现出相当高的“智能”。通常,一款象棋程序的实现可以被分为下棋引擎(人工智能)和外壳(界面及程序辅助)两大部分。本文将介绍如何实现一款中国象棋对弈程序。【关键词】:中国象棋;人工智能;博弈树;Alpha-Beta搜索;历史启发;界面;多线程;计时器;列表框;MFC。[Abstract]:Man-machineGameisaclassictopicinArtificialIntelligence.Relyi

2、ngonfine-designedalgorithmsandthefastoperationability,computerscandisplayhigh"intelligence"inplayingchess.Usually,therealizationofachessprogramcanbedecomposedintotwomajorparts:theChessEngine(ArtificialIntelligence)andtheShell(UserInterface&ProgramAssist).Thispaperwill

3、introducehowtorealizeaChineseChessprogram.[Keywords]:ChineseChess;ArtificialIntelligence(AI);GameTree;Alpha-BetaSearch;HistoryHeuristic;UserInterface;Multithreaded;Timer;ListBox;MFC.一、前言我们的目标是实现一款有着一定下棋水平且交互友好的中国象棋人机对弈程序。该程序功能包括:*人机对弈;*盲棋模式;(注:此功能为创新功能)*搜索深度设定;(电脑棋力选择

4、)*棋子、棋盘样式选择;*悔棋、还原;*着法名称显示;*下棋双方计时;整个程序的实现可分为两大部分:一、人工智能部分(计算机下棋引擎)该部分实现了如何让计算机下中国象棋,其中涉及人机博弈的基本理论及思想,是该程序的核心部分,同时也是本项目研究的重点所在。二、界面及程序辅助部分光有下棋引擎尚不能满足人机交互的基本要求,因此我们还需要一个框架(界面)来作为引擎的载体,同时提供一些诸如悔棋,计时之类的附属功能(程序辅助)来为程序增色添彩。下面分别介绍各部分实现。由于界面及程序辅助部分涉及内容宽泛而又繁琐,因而本文只介绍其中重点部分以及我

5、们在开发过程中曾经遇到过困难的地方。18二、人工智能部分(计算机下棋引擎)1、概述程序的基本框架:从程序的结构上讲,大体上可以将引擎部分划分为四大块:棋局表示;着法生成;搜索算法;局面评估。程序的大概的思想是:首先使用一个数据结构来描述棋局信息,对某一特定的棋局信息由着法生成器生成当前下棋方所有合法的着法并依次存入着法队列。然后通过搜索算法来逐一读取着法并调用局面评估函数对该着法所产生的后继局面进行评估打分,从中选出一个最有可能导致走棋方取胜的着法。在搜索的过程中还可以采用一些辅助手段来提高搜索的效率。其过程如下图所示:下面将分别

6、介绍各个部分。2、棋局表示计算机下棋的前提是要让计算机读懂象棋。所谓读懂,即计算机应该能够清楚地了解到棋盘上的局面(棋盘上棋子的分布情况)以及下棋方所走的每一种着法。因而首先我们需要有一套数据结构来表示棋盘上的局面以及着法。对于棋盘局面的表示我们采用了最传统的同时也是最为简单的“棋盘数组”。18即用一个9*10的数组来存储棋盘上的信息,数组的每个元素存储棋盘上相应位置是何种棋子。这种表示方法简单易行(缺点是效率不是很高)。按此方法棋盘的初始情形如下所示:BYTECChessBoard[9][10]={R,0,0,P,0,0,p,0

7、,0,r,H,0,C,0,0,0,0,c,0,h,E,0,0,P,0,0,p,0,0,e,A,0,0,0,0,0,0,0,0,a,K,0,0,P,0,0,p,0,0,k,A,0,0,0,0,0,0,0,0,a,E,0,0,P,0,0,p,0,0,e,H,0,C,0,0,0,0,c,0,h,R,0,0,P,0,0,p,0,0,r};其中“0”表示无棋子,大写字母表示红方棋子,小写字母表示黑方棋子(所有这些大小写字母都是用宏定义的整数)。具体如下:“R”表示红车;“H”表示红马;“E”表示红相;“A”表示红仕;“K”表示红帅;“C”表

8、示红炮;“P”表示红兵。“r”表示黑车;“h”表示黑马;“e”表示黑象;“a”表示黑士;“k”表示黑将;“c”表示黑炮;“p”表示黑卒。此外这个数组也表明了我们对棋盘进行了如右图所示的编号,并约定红方棋子总处于棋盘的下方。对于着法的表示,我们直接借

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。