中国象棋人工智能实现
中国象棋在我看来最难的人工对战中电脑怎能走这个问题,以下为本人浅见,希望各位多多包涵!
1.初步尝试
电脑的优势在于强大的计算能力,虽然其不知道怎么走合适,但是它能够模拟的将每一种走法都走一遍,选最优的走法来走。我们的思路就有了,首先需要解决两个问题:
(1)怎么判断局面最优?
(2)怎么模拟走?
第一个问题可以用每一个棋子的重要程度来打分,比如将最重要,所以给1000分,而车次之给100分,炮80等等
第二个问题因为每一个中国象棋实现方式不同,所以我分享一下本人代码
电脑模拟走一步的代码:
movBoard::getbestmove(){/**1.获取所有可能走的步数*2.试着走一下*3.看看局面怎么样*4.选择最好的走法*/QVectorcanstep;canstep=getallstep();intmaxscore=-100000;movret;for(autoit=canstep.begin();it!=canstep.end();it++){movstep=*it;fakemove(step);//模拟走一步intscore=ctscore();//计算局面分unfakemove(step);//返回if(score>maxscore)//计算最大的局面分{maxscore=score;ret.equal(step);}}qDebug()