电脑象棋循序渐进(八):新的征程

  我们已经见证了一个中国象棋程序的制作过程。用这个过程按部就班地演绎国际象棋,凭借当今的软件开发工具和硬件水平,或许就能打造出一个和“深蓝”一样聪明的程序。   但是,国际象棋毕竟比中国象棋复杂,要让一个国际象棋程序走出不是很糟的棋,以下问题是必须注意的。   8.1 特殊的规则     国际象棋的初学者都会被王车易位、吃过路兵、兵的升变这三个特殊的规则所困扰,电脑程序设计师也不例外。由于王车易位和吃过路兵的引入,描述一个国际象棋局面并不简单,它所包括的内容有:    (1) 棋盘上每个格子所放的棋子;    (2) 轮到哪方走;    (3) 是否永久丧失了王车易位的权利,这就包含了 4个布尔型变量,分别表示白方能否短易位和长易位,以及黑方能否短易位和长易位;    (4) 是否能吃过路兵,即对方上一步棋是否把兵挺了两格,并且要知道是哪个兵挺了两格。   以上 4点中,前两点与中国象棋没什么两样。   至于王车易位,执行一个走法的时候非常简单:一旦一方动了王,它就永远丧失了王车易位的权利。但撤消走法 (UndoMove)的时候,如何还原王车易位的权利呢?吃过路兵也存在同样的问题。   因此,描述一个国际象棋走法,也是相当复杂的:    (1) 走法的起始格和目标格 (跟中国象棋一样 );    (2) 吃掉的棋子 (跟中国象棋一样 );    (3) 是否王车易位:在执行和撤消这种走法时,王和车都必须移动;    (4) 是否永久丧失了王车易位的权利:撤消这种走法的时候,要还原这个权利;    (5) 是否吃过路兵:撤消这种走法的时候,被吃的兵所还原的位置与走法的目标格不同;    (6) 是否错过了吃过路兵的机会:撤消这种走法的时候,要还原这个机会。   8.2 局面评价函数     和中国象棋一样,国际象棋的子力价值同样是局面评价函数中最关键的因素,而且每个子的价值跟位置是相关的。但是,仅仅用固定的绝对位置往往无法取得很好的效果,随着局面的进展和兵形的变化,子力的位置价值会发生很大的变化。   因此,评价国际象棋的局面时,需要考虑的因素有很多:    (1) 子力的控制力:后、车、象等长兵器,辐射的格子越多,控制力就越强。另外,如果有其他棋子把它的辐射路线挡住,控制力就会打些折扣,如果是兵挡住了辐射路线则被认为辐射完全中断 (兵被认为是“死”的子,就好像棋盘的边界 ),而对于马这样的短兵器,能踩到的格子越多,攻击性就越强,而踩到棋盘中央区域要比踩到棋盘边缘好很多;    (2) 王的位置:开中局阶段王在棋盘边缘比较有利,残局阶段王在棋盘中央比较有利,另外,优势一方要尽可能地让自己的王接近对方的王,这样才能使“车杀单王”等残局的行动有所方向;    (3) 兵的绝对位置:兵越接近底线分数约高,而中路的兵通常比边路的兵分数高;    (4) 兵形:兵形的评价内容实在丰富,这里只举一个最典型的例子:车在通路兵后面有较高的加分。     现在我们应该有足够信心去完成一个国际象棋程序了。只要掌握好以上几个要点,那么这个程序走出的棋应该不会太业余。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值