爱好编程的大部分还是喜欢自己编写一个游戏,但较少是编写和电脑对战的游戏,因为里面毕竟涉及博弈,搜索等技术,我想来通编写一个人机博弈的中国象棋游戏,希望从中收获些东西。参考书是王小春编著的一本《PC游戏编程-人机博弈》。应该说里面很多思想都是来自这本书上的,虽然思想不是源自我自己,但是可以通过自己亲手从头到尾把这个游戏编写出来,主要体会里面搜索技术和估值核心。
1. 人机博弈的要点
人机对弈的程序,至少应具备一下几个部分:
a 某种在机器上表示棋局的方法,让程序知道博弈的状态;
b 产生合法的走法规则,是得博弈双方公正,并可以判断人类对手是否乱走;
c 从所有合法的走法中选择最佳的走法的技术
d 一种评估局面优劣的方法,同上面技术配合作出智能选择;
e 一个实现游戏的界面。
2.棋盘表示
棋盘表示就是用一种数据结构来描述棋盘和棋盘上的棋子,通常是用2维数组。一个典型的中国象棋棋盘是用一个9x10的二维数组表示。
3. 走法产生
博弈的规则哪些走法是合法的,例如对于中国象棋来说的马走日,象走田等一些规则。