先前发了几篇五子棋游戏程序设计的博文,设计了游戏程序,也设计了AI智能奕棋的算法,运行程序检测算法的可行性,完成人机模式游戏功能的设置。
本文主要介绍自动测试算法的方法。
AI智能奕棋的算法testAIq( ),主要是检测算法,测试算法的可行性。程序设置的对战演示就是为了测试算法,此为研究五子棋算法提供一些参考。
在检测算法的可行性时感到很烦,老是要一步步试走黑棋和白棋。就设计了自动测试的方法。
autoplay ( ) { //自动演示,检测算法
//*用于检测AI智能下子算法 testAIq ()
s7=”游戏模式:自动演示 “;
if (mode==1) return ; //双人模式可演示
if (isDo==0) return ; //isDo 游戏可行控制
if (dn==0) { //设定首子黑先天元位, dn下子序,0为首子
n=113; wn=0 ; black_do () ; } //棋盘位数组 0-225
for (ti=1; ti<=6; ti++) { //每次3个回合
if(isDo==0) return ; //若取胜则跳出
wn=wn+1 ;
testAIq (); //AI 算法测试 *return sn
if (wn>1) wn=0 ; //轮流下子
n=sn ; //n为绘出棋子位号
if (wn==0) pn[n]=1 ; //黑棋下子
if (wn==1) pn[n]=2; //白棋下子
row=15-(n/15) ; //n转换成行列,显示下子位H8 G9 …
col=(n-(n/15*15)) ;
if (col==0) { col=15 ; row=row+1 ; }
swapabc () ; //return ss
if(ss==”I”) ss=ss+” ” ;
//print 走子记录
if (wn==0) cordp=” B “+intToString (n);
if (wn==1) cordp=” W “+intToString (n);
if (cordp != ss2) {
dn=dn+1;
print dn,” “,cordp,” ” , ss,row ; //打印记录
ss2=cordp;
dwn[dn]=n ; //print play number
fudat[dn]=n; fusum=dn; //复盘数据
board () ; //重绘棋盘,显示棋子
}
detect (); //检测胜负
} //next ti
}//autoplay ( )