基于JAVA的中国象棋游戏

技术:Java等
摘要:
近年来,现代化的人工智能以及先进的计算机技术迅猛发展,基于此基础的电脑象棋程序,其下棋水平也得到了进一步的提升。
然而,早在二十世纪的六十年代初期,来此美国麻省理工学院的约翰·麦卡锡就提出了修剪算法——“alpha-beta”。在该算法提出以前,通常计算机下棋程序在决定每一步走步时,所需的棋盘状态空间的搜索量都是指数级别的,而该算法则将这一搜索量的数量级减少为指数的平方根,这极大程度地提高了电脑下棋程序的水平。
而随后IBM公司推出的超级计算机“Deep Blue”,则是一个不择不扣的神话,这一耗资上千万,耗时8年所建造出的世界上最强大的国际象棋“棋手”,着实为广大棋迷们所神往。本文内容根据以往国内外象棋程序在设计上所取得的一些成功案例及经验,为中国象棋设计其基本的思路和算法。
关键词:中国象棋,位棋盘,alpha-beta搜索,Zobrist键值,置换表

目录:
摘要    i
Abstract    ii
目 录    1
引   言    1
1 概述    2
1.1 棋盘的标记    2
1.1.1 纵线方式    2
1.1.2 坐标方式    2
1.2 棋子的名称    3
1.3 棋谱的记录方法    3
1.4 历史局面的表示及存储    4
1.5 棋谱记录文件的格式    4
1.5.1 标签部分    4
1.5.2 棋谱记录部分    5
1.5.3 XML格式    5
2 基本数据结构——位棋盘    7
2.1 什么是位棋盘    7
2.2 位棋盘的作用    7
2.3 位棋盘的基本运算    9
2.4 Java中位棋盘的实现    9
2.4.1 位棋盘类的实现    9
2.4.2 位棋盘的初始化    10
2.4.3 位棋盘的更新    10
3 基本数据结构——Zobrist键值    11
3.1 比较局面的方法    11
3.2 Zobrist键值的实现方法    11
3.3 Zobrist键值的工作原理及用途    11
3.3.1 Zobrist键值的工作原理    11
3.3.2 Zobrist键值的用途    12
3.4 Java中实现Zobrist键值    12
4 着法生成    14
4.1伪合法着法的生成    14
4.1.1 数组及其下标的含义    14
4.1.2 算法示例——车炮的伪合法着法生成    16
4.2 合法着法的生成    18
5 搜索算法    21
5.1 最小-最大搜索    21
5.1.1基于最小-最大的评价函数    21
5.1.2 最小-最大搜索    21
5.1.3 负值最大函数    23
5.2 Alpha-Beta搜索    23
5.2.1 最小-最大搜索算法的问题    23
5.2.2 Alpha-Beta修剪    24
5.2.3 Alpha-Beta修剪算法的实现    25
5.2.4 可能的弱点    26
5.3迭代加深    26
5.4 置换表    27
5.4.1 置换表的实现    27
5.4.2 替换策略    29
6 局面评价函数    30
6.1 评价函数的实现方法    30
6.1.1 算法设计思路    30
6.1.2评价要素的组合    31
6.2评价函数所需的信息    31
7 程序的设计及实现    34
7.1 搜索引擎的实现(engine包)    34
7.2 信息传输机制(message包)    34
7.3 棋子(pieces包)    35
7.4 主控模块(main包)    35
参考文献    36
致   谢    37
外文文献    38

包含资料:
 

 

截图:

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值