1、怎么让程序动起来? 程序是基于得分高低,来判断走哪步棋的。换句话说,我们评价走哪步时,总是考虑假如走这里会怎么样,假如走那里会怎么样,程序也是如此。只是实现起来没有那么简单。 2、alpha-beta剪裁是如何达到目的的? 这基于一个思想,如果局面评价是基于得分的,那么轮到谁走谁都要把这个得分弄得更高,程序如此,程序猜想对手走棋也是如此。所以,局面评价函数如果是:己方得分-对方得分,那么,这个分值越正,说明我们越接近胜利了,而这个分值越负,说明我们越接近输棋了。于是,我们总是寻找得分更高的走法,而得分低于一定程度(如对方成5)的走法,被剪裁(所谓剪裁掉,在程序中体现出来就是不继续扫描——exit for)。 3、如何实现这个递归函数? 设计递归的方式不止一种,但无疑都是要实现自己的目的。我们的目的是找到得分更高的走法,这里有这样几个关键点: A、评价得分并比较 B、最高得分点需要记录 C、要交替查找可以走的点走棋 很明显,递归语句就在遍历点的循环中;最高得分的点可以用全局变量记录。接下来讨论一下评价函数放在哪里的问题: Read More
posted @ 2012-07-12 21:55 zcsor~流浪dè风 Views(1709) Comments(0) Diggs(1) Edit