正文

出棋制胜中国象棋(毕业设计项目)2008-06-02 22:15:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/insky/35850.html

分享到:

项目三:出棋制胜中国象棋(点击图片下载)

查看博主的其他项目

“出棋制胜”中国象棋软件

  这是我的毕业设计软件,也是本科的最后一份作业,虽然以前经常不交作业,然而这份却不同。不是因为他能决定我的毕业成绩,或是能否拿到优秀论文奖,而是因为题目是我自己选的,也是我自己开的。别误会,我不是狂而的象棋迷,更不是高手,只是小有兴趣吧。但一直以来我很想写个人工智能的中国象棋游戏,希望写出来的游戏能代替我打败我的兄弟猪皮(一直以象棋高手自居的家伙),打败QQ游戏众高手。于是乎,去图书馆借了n本中国象棋实现的书,也去网上找了许多论文。考研复试一结束,便全身心的投入到软件开发的行动去。

大概写了一个月左右吧,软件已经大致成型,在QQ里的未逢敌手,一时春风得意,意气风发,羡煞旁人(过头了。。。)。

  软件分三层:界面,协议,象棋引擎。引擎是最为关键的,下面对各个模块做个简单的介绍:

1,协议(使用ucci3.0协议)
   中国象棋通用引擎协议(Universal Chinese Chess Protocol,简称UCCI),是一种象棋界面和象棋引擎之间的基于文本的通讯协议。设立中国象棋通用引擎协议的目的有:
   (1) 使一个“可视化象棋软件”可以使用不同的“核心智能部件”,这些核心智能部件称为“引擎”,凡是遵循UCCI的引擎,都可以被该可视化象棋软件(也称为“界面”)所调用;
   (2) 针对所有遵循UCCI的引擎,都可以开发不同的界面,使其具有不同的功能。
   这样,“可视化象棋软件”和“核心智能部件”实现了分离,使得一部分程序设计师能专注于前者(界面)的开发,而另一部分程序设计师能专注于后者(引擎)的开发,让中国象棋软件的设计工作系统化、分工化,提高软件设计效率。
UCCI自诞生以来不断在发展和更新,但保持了对早期版本的兼容。
  本文使用的是UCCI 3.0版,UCCI还在不断更新,并继续保持对早期版本的兼容。UCCI界面和引擎设计者可访问以下资源,来获得最新的UCCI版本:
     http://www.elephantbase.net/protocol/cchess_ucci.htm 。

2,引擎(用vc++6.0开发)
   计算机象棋对弈是一种双人完备信息的博弈过程,其核心思想并不复杂,实际上就是对博弈树节点的估值过程和对博弈树搜索过程的结合。博弈程序的任务就是对博弈树进行搜索找出当前最优的一步走棋,而当前最优的判断由估值算法给出。
根据上述过程,一个完整的计算机象棋博弈系统包含一下四部分:
(1)数据结构:由棋盘表示,置换表等组成;
(2)着法生成器:产生指定局面下所有合法的着法;
(3)搜索算法:对博弈树进行搜索,由着法生成器生成扩展节点;
(4)估值算法:依据特定局面博弈双方的优劣形势给出的一个估值。
其中,搜索算法和估值算法是计算机博弈的核心,这四个部分相互配合运转起来,就可以实现计算机象棋博弈系统。
具体的介绍可以下载整个文件,解压后看我的毕业论文。

3,界面(比较独特,采用JAVA实现)
算是java与c语言通信的一种尝试,界面没有什么特别好讲的,引擎打包成exe文件。界面通过截获“引擎进程”的输入输出流包装成JAVA的流供界面程序使用。

项目主页: http://insky.5tf.net/

阅读(3226) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册