(3) 给出下了一个子后的分数: int CMyChessDlg::GiveScore(int type, int x, int y) { int i,score=0; for(i=0;i<572;i++) { //计算机下 if(type==1) { if(ctable[x][y][i]) { switch(win[1][i]) { case 1: score+=5; break; case 2: score+=50; break; case 3: score+=100; break; case 4: score+=10000; break; default: break; } } } //人下 else { if(ptable[x][y][i]) { switch(win[0][i]) { case 1: score-=5; break; case 2: score-=50; break; case 3: score-=500; break; case 4: score-=5000; break; default: break; } } } } return score; } (4) 核心程序 ,(5) 即计算机如何运用极小极大法分析,(6) 选取最优走法,(7) 在程序中极小极大法即体现在两个while循环前后及之间的内容,其估价函数的体现在ctemp+pscore中 void CMyChessDlg::ComTurn() { //bestx,best为当前最佳位置,i,j是人能下的各种位置;pi,pj是计算机能下的各种位置 Int bestx,besty,i,j,pi,pj,ptemp,ctemp,pscore=10,cscore=-10000, ctempboard[15][15],ptempboard[15][15]; int m,n,temp1[20],temp2[20];//暂存第一步搜索的信息 if(start) { if(board[7][7]==2) { bestx=7; besty=7; } else { bestx=8; besty=8; } start=false; } else {//寻找最佳位置 GetBoard(ctempboard,board); while(SearchBlank(i,j,ctempboard)) {//进行第一步查找 n=0; pscore=10; GetBoard(ptempboard,board);//获取当前棋盘状态 ctempboard[i][j]=3;//标记已被查找 ctemp=GiveScore(1,i,j); for(m=0;m<572;m++) {//暂时更改玩家信息 if(ptable[i][j][m]) { temp1[n]=m; ptable[i][j][m]=false; temp2[n]=win[0][m]; win[0][m]=7; n++; } } ptempboard[i][j]=1;

评论