资源简介

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


评论

共有 条评论