資源簡介
alphabeta剪枝算法的C++實現下棋程序。有注釋,易理解。

代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;
char?array[3][3];
int?depth=3;
int?bestmove[2];
bool?win()
{
int?ij;
char?chess;
for(i=0;i<3;i++) //row
{
j=0;
if(array[i][j]==‘1‘) continue;
chess=array[i][j];
for(j=1;j<3;j++)
if(array[i][j]==‘1‘||array[i][j]!=chess) break;
if(j==3) return?true;
}
for(j=0;j<3;j++) //column
{
i=0;
if(array[i][j]==‘1‘) continue;
chess=array[i][j];
for(i=1;i<3;i++)
if(array[i][j]==‘1‘||array[i][j]!=chess) break;
if(i==3) return?true;
}
if(array[1][1]!=‘1‘) //special
{
chess=array[1][1];
if(array[0][0]==chess&&array[2][2]==chess) return?true;
if(array[0][2]==chess&&array[2][0]==chess) return?true;
}
return?false;
}
void?printchess()
{
int?ij;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
if(j==3) cout< else cout< }
}
int?evalue()
{
/*
int?i;
i=rand()%10;
return?i;
*/
int?myside=0opposide=0;
int?ij;
char?chess;
for(i=0;i<3;i++) //row
{
j=0;
chess=array[i][j];
if(chess==‘1‘)
{
j++;
chess=array[i][j];
if(chess==‘1‘)
{
j++;
chess=array[i][j];
if(chess!=‘1‘)
{
if(chess==‘O‘) myside++;
else opposide++;
}
}else{
j++;
if(chess==array[i][j]||array[i][j]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}
}else{
j++;
if(chess==array[i][j]||array[i][j]==‘1‘)
{
j++;
if(chess==array[i][j]||array[i][j]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}
}
}
for(j=0;j<3;j++) //clomn
{
i=0;
chess=array[i][j];
if(chess==‘1‘)
{
i++;
chess=array[i][j];
if(chess==‘1‘)
{
i++;
chess=array[i][j];
if(chess!=‘1‘)
{
if(chess==‘O‘) myside++;
else opposide++;
}
}else{
i++;
if(chess==array[i][j]||array[i][j]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}
}else{
i++;
if(chess==array[i][j]||array[i][j]==‘1‘)
{
i++;
if(chess==array[i][j]||array[i][j]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}
}
}
if(array[1][1]!=‘1‘) //special
{
chess=array[1][1];
if((array[0][0]==chess||array[0][0]==‘1‘)&&(array[2][2])==chess||array[2][2]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
if((array[0][2]==chess||array[0][2]==‘1‘)&&(array[2][0])==chess||array[2][0]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}else
if((array[0][0]==array[2][2]&&array[0][0]!=‘1‘)||((array[0][0]!=array[2][2])&&(array[0][0]==‘1‘||array[2][2]==‘1‘)))
if(array[0][0]==‘O‘) myside++;
else opposide++;
if((array[0][2]==array[2][0]&&array[0][2]!=‘1‘)||((array[0][2]!=array[2][0])&&(array[0][2]==‘1‘||array[2][0]==‘1‘)))
if(array[2][0]==‘O‘) myside++;
else opposide++;
return?myside-opposide;
}
int?alphabeta(int?alphaint?betaint?dbool
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4863??2009-10-23?09:20??alphabeta\alphabeta.cpp
?????文件???????4320??2009-10-17?10:39??alphabeta\alphabeta.dsp
?????文件????????526??2009-10-17?08:18??alphabeta\alphabeta.dsw
?????文件?????426624??2009-10-17?10:40??alphabeta\alphabeta.exe
?????文件??????41984??2009-10-23?09:21??alphabeta\alphabeta.ncb
?????文件??????48640??2009-10-23?09:21??alphabeta\alphabeta.opt
?????文件???????1303??2009-10-23?09:21??alphabeta\alphabeta.plg
?????文件?????553029??2009-10-23?09:21??alphabeta\Debug\alphabeta.exe
?????文件?????786524??2009-10-23?09:21??alphabeta\Debug\alphabeta.ilk
?????文件?????258004??2009-10-23?09:21??alphabeta\Debug\alphabeta.obj
?????文件????2062840??2009-10-17?10:44??alphabeta\Debug\alphabeta.pch
?????文件????1090560??2009-10-23?09:21??alphabeta\Debug\alphabeta.pdb
?????文件??????74752??2009-10-23?09:21??alphabeta\Debug\vc60.idb
?????文件?????110592??2009-10-23?09:21??alphabeta\Debug\vc60.pdb
?????目錄??????????0??2010-03-01?22:09??alphabeta\Debug
?????目錄??????????0??2010-03-01?22:09??alphabeta
-----------?---------??----------?-----??----
??????????????5464561????????????????????16
- 上一篇:利用MFC實現的停車場模擬仿真程序
- 下一篇:貝塞爾曲面 vc++ opengl
評論
共有 條評論