📄 demo.h
字号:
#include "itc.h"
class demo : public Tic
{
public:
demo()
{
}
virtual bool AutoDone() //此处为学生实现代码
{
if(IsWin(States[0])==1){cout<<"computer win"<<endl;return true;}
else if(IsWin(States[0])==-1){cout<<"player win"<<endl;return true;}
if(e_fun(States[0])==-1001)
{cout<<"平局"<<endl; return true;}
for(int k=0;k<4;k++)
{ if(States[0].QP[k][0]+States[0].QP[k][1]+States[0].QP[k][2]+States[0].QP[k][3]==3)
{ for(int h=0;h<4;h++)
States[0].QP[k][h]=1;
cout<<"computer win"<<endl;return true;
}
}
for(k=0;k<4;k++)
{ if(States[0].QP[0][k]+States[0].QP[1][k]+States[0].QP[2][k]+States[0].QP[3][k]==3)
{for(int h=0;h<4;h++)
States[0].QP[h][k]=1;
cout<<"computer win"<<endl;return true;
}
}
if(States[0].QP[0][0]+States[0].QP[1][1]+States[0].QP[2][2]+States[0].QP[3][3]==3)
{for(k=0;k<4;k++)
States[0].QP[k][k]=1;
cout<<"computer win"<<endl;return true;
}
if(States[0].QP[3][0]+States[0].QP[2][1]+States[0].QP[1][2]+States[0].QP[0][3]==3)
{States[0].QP[3][0]=1;
States[0].QP[2][1]=1;
States[0].QP[1][2]=1;
States[0].QP[0][3]=1;
cout<<"computer win"<<endl;return true;
}
for(k=0;k<4;k++)
{ if(States[0].QP[k][0]+States[0].QP[k][1]+States[0].QP[k][2]+States[0].QP[k][3]==-3)
{ for(int h=0;h<4;h++)
if(States[0].QP[k][h]==0)States[0].QP[k][h]=1;
return false;
}
}
for(k=0;k<4;k++)
{ if(States[0].QP[0][k]+States[0].QP[1][k]+States[0].QP[2][k]+States[0].QP[3][k]==-3)
{ for(int h=0;h<4;h++)
if(States[0].QP[h][k]==0)States[0].QP[h][k]=1; return false;
}
}
if(States[0].QP[0][0]+States[0].QP[1][1]+States[0].QP[2][2]+States[0].QP[3][3]==-3)
{for(k=0;k<3;k++)
if(States[0].QP[k][k]==0)States[0].QP[k][k]=1;
return false;
}
if(States[0].QP[3][0]+States[0].QP[2][1]+States[0].QP[1][2]+States[0].QP[0][3]==-3)
{if(States[0].QP[3][0]==0)States[0].QP[2][0]=1;
if(States[0].QP[2][1]==0)States[0].QP[1][1]=1;
if(States[0].QP[1][2]==0)States[0].QP[0][2]=1;
if(States[0].QP[0][3]==0)States[0].QP[0][2]=1;
return false;
}
int ef=-10;
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
{
States[i*4+j+1].parent=0;
for(int k=0;k<4;k++)
for(int h=0;h<4;h++)
States[i*4+j+1].QP[k][h]=States[0].QP[k][h];
// States[i*3+j+1].QP=States[0].QP; ////error
if (States[0].QP[i][j]==0)
{ States[i*4+j+1].QP[i][j]=1;
int e=10;
for (int m=0;m<4;m++)
for (int n=0;n<4;n++)
{ States[(i*4+j+1)*16+m*4+n+1].parent=i*4+j+1;
for(int k=0;k<4;k++)
for(int h=0;h<4;h++)
States[(i*4+j+1)*16+m*4+n+1].QP[k][h]=States[i*4+j+1].QP[k][h];
if (States[i*4+j+1].QP[m][n]==0)
{ States[(i*4+j+1)*16+m*4+n+1].QP[m][n]=-1;
States[(i*4+j+1)*16+m*4+n+1].e_fun=e_fun(States[(i*4+j+1)*16+m*4+n+1]);
if(States[(i*4+j+1)*16+m*4+n+1].e_fun<e) e=States[(i*4+j+1)*16+m*4+n+1].e_fun;
// if(States[(i*4+j+1)*16+m*4+n+1].e_fun<ef){m=4;n=4;}
}//if end
}//for3, for4 end
States[i*4+j+1].e_fun=e;
}//if end
if (States[i*4+j+1].e_fun>ef) ef=States[i*4+j+1].e_fun;
}//for1 for2 end
for (i=0;i<4;i++)
for (int j=0;j<4;j++)
{if(ef==States[i*4+j+1].e_fun)
for(int k=0;k<4;k++)
for(int h=0;h<4;h++)
States[0].QP[k][h]=States[i*4+j+1].QP[k][h];
}
for(i=0;i<275;i++)
States[i].e_fun=-10;
if(IsWin(States[0])==0)return false;
else if(IsWin(States[0])==1){cout<<"computer win"<<endl;return true;}
else if(IsWin(States[0])==-1){cout<<"player win"<<endl;return true;}
s_count++;
if(s_count>=8)
return true;
}//AutoDone
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -