📄 five.cpp
字号:
else
break;
}
int nXStep = nXEnd-nXStart+1;
int nYStep = nYEnd-nYStart+1;
int nXYStep = nXYEnd-nXYStart+1;
int nYXStep = nYXEnd-nYXStart+1;
bool bX_4 = ((nXStep==4)&&(bXStartEmpty&&bXEndEmpty));
bool bY_4 = ((nYStep==4)&&(bYStartEmpty&&bYEndEmpty));
bool bXY_4 = ((nXYStep==4)&&(bXYStartEmpty&&bXYEndEmpty));
bool bYX_4 = ((nYXStep==4)&&(bYXStartEmpty&&bYXEndEmpty));
bool bX4 = ((nXStep==4)&&(bXStartEmpty||bXEndEmpty));
bool bY4 = ((nYStep==4)&&(bYStartEmpty||bYEndEmpty));
bool bXY4 = ((nXYStep==4)&&(bXYStartEmpty||bXYEndEmpty));
bool bYX4 = ((nYXStep==4)&&(bYXStartEmpty||bYXEndEmpty));
bool bX_3 = ((nXStep==3)&&(bXStartEmpty&&bXEndEmpty));
bool bY_3 = ((nYStep==3)&&(bYStartEmpty&&bYEndEmpty));
bool bXY_3 = ((nXYStep==3)&&(bXYStartEmpty&&bXYEndEmpty));
bool bYX_3 = ((nYXStep==3)&&(bYXStartEmpty&&bYXEndEmpty));
bool bX3 = ((nXStep==3)&&(bXStartEmpty||bXEndEmpty));
bool bY3 = ((nYStep==3)&&(bYStartEmpty||bYEndEmpty));
bool bXY3 = ((nXYStep==3)&&(bXYStartEmpty||bXYEndEmpty));
bool bYX3 = ((nYXStep==3)&&(bYXStartEmpty||bYXEndEmpty));
bool bX_2 = ((nXStep==2)&&(bXStartEmpty&&bXEndEmpty));
bool bY_2 = ((nYStep==2)&&(bYStartEmpty&&bYEndEmpty));
bool bXY_2 = ((nXYStep==2)&&(bXYStartEmpty&&bXYEndEmpty));
bool bYX_2 = ((nYXStep==2)&&(bYXStartEmpty&&bYXEndEmpty));
bool bX2 = ((nXStep==2)&&(bXStartEmpty||bXEndEmpty));
bool bY2 = ((nYStep==2)&&(bYStartEmpty||bYEndEmpty));
bool bXY2 = ((nXYStep==2)&&(bXYStartEmpty||bXYEndEmpty));
bool bYX2 = ((nYXStep==2)&&(bYXStartEmpty||bYXEndEmpty));
bool bX_1 = ((nXStep==1)&&(bXStartEmpty&&bXEndEmpty));
bool bY_1 = ((nYStep==1)&&(bYStartEmpty&&bYEndEmpty));
bool bXY_1 = ((nXYStep==1)&&(bXYStartEmpty&&bXYEndEmpty));
bool bYX_1 = ((nYXStep==1)&&(bYXStartEmpty&&bYXEndEmpty));
int nXAdd, nYAdd, nXYAdd, nYXAdd;
nXAdd = nYAdd = nXYAdd = nYXAdd = 0;
if (nXEndAdd>=nXStartAdd)
{
nXAdd = nXEndAdd;
bXEndEmpty = bXEndEmpty1;
}
else
{
nXAdd = nXStartAdd;
bXStartEmpty = bXStartEmpty1;
}
if (nYEndAdd>=nYStartAdd)
{
nYAdd = nYEndAdd;
bYEndEmpty = bYEndEmpty1;
}
else
{
nYAdd = nYStartAdd;
bYStartEmpty = bYStartEmpty1;
}
if (nXYEndAdd>=nXYStartAdd)
{
nXYAdd = nXYEndAdd;
bXYEndEmpty = bXYEndEmpty1;
}
else
{
nXYAdd = nXYStartAdd;
bXYStartEmpty = bXYStartEmpty1;
}
if (nYXEndAdd>=nYXStartAdd)
{
nYXAdd = nYXEndAdd;
bYXEndEmpty = bYXEndEmpty1;
}
else
{
nYXAdd = nYXStartAdd;
bYXStartEmpty = bYXStartEmpty1;
}
bool b1X_4 = ((nXStep+nXAdd>=4)&&(bXStartEmpty&&bXEndEmpty));
bool b1Y_4 = ((nYStep+nYAdd>=4)&&(bYStartEmpty&&bYEndEmpty));
bool b1XY_4 = ((nXYStep+nXYAdd>=4)&&(bXYStartEmpty&&bXYEndEmpty));
bool b1YX_4 = ((nYXStep+nYXAdd>=4)&&(bYXStartEmpty&&bYXEndEmpty));
bool b1X4 = ((nXStep+nXAdd>=4)&&(bXStartEmpty||bXEndEmpty));
bool b1Y4 = ((nYStep+nYAdd>=4)&&(bYStartEmpty||bYEndEmpty));
bool b1XY4 = ((nXYStep+nXYAdd>=4)&&(bXYStartEmpty||bXYEndEmpty));
bool b1YX4 = ((nYXStep+nYXAdd>=4)&&(bYXStartEmpty||bYXEndEmpty));
bool b1X_3 = ((nXStep+nXAdd==3)&&(bXStartEmpty&&bXEndEmpty));
bool b1Y_3 = ((nYStep+nYAdd==3)&&(bYStartEmpty&&bYEndEmpty));
bool b1XY_3 = ((nXYStep+nXYAdd==3)&&(bXYStartEmpty&&bXYEndEmpty));
bool b1YX_3 = ((nYXStep+nYXAdd==3)&&(bYXStartEmpty&&bYXEndEmpty));
if (nXStep>=5 || nYStep>=5 || nXYStep>=5 || nYXStep>=5)
nGrade = 0;
else if (bX_4 || bY_4 || bXY_4 || bYX_4)
nGrade = 1;
else if ((bX4 && (bY4 || bXY4 || bYX4 || b1Y4 || b1XY4 || b1YX4))||
(bY4 && (bX4 || bXY4 || bYX4 || b1X4 || b1XY4 || b1YX4))||
(bXY4 && (bY4 || bX4 || bYX4 || b1Y4 || b1X4 || b1YX4)) ||
(bYX4 && (bY4 || bXY4 || bX4 || b1Y4 || b1XY4 || b1X4)) ||
(b1X4 && (bY4 || bXY4 || bYX4 || b1Y4 || b1XY4 || b1YX4))||
(b1Y4 && (bX4 || bXY4 || bYX4 || b1X4 || b1XY4 || b1YX4))||
(b1XY4 && (bY4 || bX4 || bYX4 || b1Y4 || b1X4 || bYX4)) ||
(b1YX4 && (bY4 || bXY4 || bX4 || b1Y4 || b1XY4 || b1X4)))
nGrade = 2;
else if ((bX4 && (bY_3 || bXY_3 || bYX_3 || b1Y_3 || b1XY_3 || b1YX_3))||
(bY4 && (bX_3 || bXY_3 || bYX_3 || b1X_3 || b1XY_3 || b1YX_3))||
(bXY4 && (bY_3 || bX_3 || bYX_3 || b1Y_3 || b1X_3 || b1YX_3)) ||
(bYX4 && (bY_3 || bXY_3 || bX_3 || b1Y_3 || b1XY_3 || b1X_3)) ||
(b1X4 && (bY_3 || bXY_3 || bYX_3 || b1Y_3 || b1XY_3 || b1YX_3))||
(b1Y4 && (bX_3 || bXY_3 || bYX_3 || b1X_3 || b1XY_3 || b1YX_3))||
(b1XY4 && (bY_3 || bX_3 || bYX_3 || b1Y_3 || b1X_3 || b1YX_3)) ||
(b1YX4 && (bY_3 || bXY_3 || bX_3 || b1Y_3 || b1XY_3 || b1X_3)))
nGrade = 3;
else if ((bX_3 && (bY_3 || bXY_3 || bYX_3 || b1Y_3 || b1XY_3 || b1YX_3))||
(bY_3 && (bX_3 || bXY_3 || bYX_3 || b1X_3 || b1XY_3 || b1YX_3))||
(bXY_3 && (bY_3 || bX_3 || bYX_3 || b1Y_3 || b1X_3 || b1YX_3)) ||
(bYX_3 && (bY_3 || bXY_3 || bX_3 || b1Y_3 || b1XY_3 || b1X_3)) ||
(b1X_3 && (bY_3 || bXY_3 || bYX_3 || b1Y_3 || b1XY_3 || b1YX_3))||
(b1Y_3 && (bX_3 || bXY_3 || bYX_3 || b1X_3 || b1XY_3 || b1YX_3))||
(b1XY_3 && (bY_3 || bX_3 || bYX_3 || b1Y_3 || b1X_3 || b1YX_3)) ||
(b1YX_3 && (bY_3 || bXY_3 || bX_3 || b1Y_3 || b1XY_3 || b1X_3)))
nGrade = 4;
else if ((bXY4 && (bYX_2 || bY_2 || bX_2))||
(bYX4 && (bXY_2 || bY_2 || bX_2))||
(bX4 && (bXY_2 || bYX_2 || bY_2))||
(bY4 && (bXY_2 || bYX_2 || bX_2)))
nGrade = 5;
else if ((bXY4 && (bYX3 || bY3 || bX3))||
(bYX4 && (bXY3 || bY3 || bX3))||
(bX4 && (bXY3 || bYX3 || bY3))||
(bY4 && (bXY3 || bYX3 || bX3)))
nGrade = 6;
else if ((bXY4 && (bYX_1 || bY_1 || bX_1))||
(bYX4 && (bXY_1 || bY_1 || bX_1))||
(bX4 && (bXY_1 || bYX_1 || bY_1))||
(bY4 && (bXY_1 || bYX_1 || bX_1)))
nGrade = 7;
else if ((bXY4 && (bYX2 || bY2 || bX2))||
(bYX4 && (bXY2 || bY2 || bX2))||
(bX4 && (bXY2 || bYX2 || bY2))||
(bY4 && (bXY2 || bYX2 || bX2)))
nGrade = 8;
else if (bXY4 || bYX4 || bX4 || bY4)
nGrade = 9;
else if ((bXY_3 && (bYX_2 || bY_2 || bX_2))||
(bYX_3 && (bXY_2 || bY_2 || bX_2))||
(bX_3 && (bXY_2 || bYX_2 || bY_2))||
(bY_3 && (bXY_2 || bYX_2 || bX_2)))
nGrade = 10;
else if ((bXY_3 && (bYX3 || bY3 || bX3))||
(bYX_3 && (bXY3 || bY3 || bX3))||
(bX_3 && (bXY3 || bYX3 || bY3))||
(bY_3 && (bXY3 || bYX3 || bX3)))
nGrade = 11;
else if ((bXY_3 && (bYX_1 || bY_1 || bX_1))||
(bYX_3 && (bXY_1 || bY_1 || bX_1))||
(bX_3 && (bXY_1 || bYX_1 || bY_1))||
(bY_3 && (bXY_1 || bYX_1 || bX_1)))
nGrade = 12;
else if ((bXY_3 && (bYX2 || bY2 || bX2))||
(bYX_3 && (bXY2 || bY2 || bX2))||
(bX_3 && (bXY2 || bYX2 || bY2))||
(bY_3 && (bXY2 || bYX2 || bX2)))
nGrade = 13;
else if (bXY_3 || bYX_3 || bX_3 || bY_3)
nGrade = 14;
else if (bXY_2 || bYX_2 || bX_2 || bY_2)
nGrade = 16;
else if (bXY3 || bYX3 || bX3 || bY3)
nGrade = 17;
else if (bXY2 || bYX2 || bX2 || bY2)
nGrade = 18;
else if (bXY_1 || bYX_1 || bX_1 || bY_1)
nGrade = 19;
else
nGrade = 20;
if (nGrade>15)
if ((pdata->man[nX][nY-1]==0 || pdata->man[nX][nY-1]==cValue) &&
(pdata->man[nX+1][nY]==0 || pdata->man[nX+1][nY]==cValue) &&
(pdata->man[nX][nY+1]==0 || pdata->man[nX][nY+1]==cValue) &&
(pdata->man[nX-1][nY]==0 || pdata->man[nX-1][nY]==cValue) &&
((nX+2<15 && nY-2>=0 && (pdata->man[nX+2][nY-2]==0 || pdata->man[nX+2][nY-2]==cValue) &&
pdata->man[nX][nY-2]==cValue && pdata->man[nX+1][nY-1]==cValue && pdata->man[nX+2][nY]==cValue) ||
(nX+2<15 && nY+2<15 && (pdata->man[nX+2][nY+2]==0 || pdata->man[nX+2][nY+2]==cValue) &&
pdata->man[nX][nY+2]==cValue && pdata->man[nX+1][nY+1]==cValue && pdata->man[nX+2][nY]==cValue) ||
(nX-2>=0 && nY+2<15 && (pdata->man[nX-2][nY+2]==0 || pdata->man[nX-2][nY+2]==cValue) &&
pdata->man[nX][nY+2]==cValue && pdata->man[nX-1][nY+1]==cValue && pdata->man[nX-2][nY]==cValue) ||
(nX-2>=0 && nY-2>=0 && (pdata->man[nX-2][nY-2]==0 || pdata->man[nX-2][nY-2]==cValue) &&
pdata->man[nX][nY-2]==cValue && pdata->man[nX-1][nY-1]==cValue && pdata->man[nX-2][nY]==cValue)))
nGrade = 15;
return nGrade;
}
POINT FIVE_GetBestPoint(APP_DATA *pdata, char byColor)
{
int i, j, i0, j0;
POINT ptUrgent[2025], ptInit;
ptInit.x =ptInit.y =-1;
for (i=0; i<2025; i++)
ptUrgent[i].x =ptUrgent[i].y =-1;
// Seed the random-number generator with current time so that
// the numbers will be different every time we run.
//
POINT ptCurrent;
i0=(GETTIMEMS()%2) ? 0:LINE_COUNT-1;
int nGrade1, nGrade2;
int nUrgent1, nUrgent2, nUrgent;
for (i=i0; !i0 ? i<LINE_COUNT:i>=0; !i0 ? ++i:--i)
{
j0=(GETTIMEMS()%2) ? 0:LINE_COUNT-1;
for (j=j0; !j0 ? j<LINE_COUNT:j>=0; !j0 ? ++j:--j)
{
if (pdata->man[i][j]==0)
{
ptCurrent.x = i;
ptCurrent.y = j;
nGrade1 = FIVE_CheckStat(pdata, i, j, (char)(byColor+1));
nGrade2 = FIVE_CheckStat(pdata, i, j, (char)(!byColor+1));
if (pdata->skill == 3)
{
switch (nGrade1)
{
case 0 : nUrgent1 = 0; break;
case 1 : nUrgent1 = 2; break;
case 2 : nUrgent1 = 4; break;
case 3 : nUrgent1 = 5; break;
case 4 : nUrgent1 = 8; break;
case 5 : nUrgent1 = 10; break;
case 6 : nUrgent1 = 11; break;
case 7 : nUrgent1 = 12; break;
case 8 : nUrgent1 = 13; break;
case 9 : nUrgent1 = 14; break;
case 10 : nUrgent1 = 15; break;
case 11 : nUrgent1 = 16; break;
case 12 : nUrgent1 = 17; break;
case 13 : nUrgent1 = 18; break;
case 14 : nUrgent1 = 19; break;
case 15 : nUrgent1 = 20; break;
case 16 : nUrgent1 = 32; break;
case 17 : nUrgent1 = 34; break;
case 18 : nUrgent1 = 36; break;
case 19 : nUrgent1 = 38; break;
case 20 : nUrgent1 = 40; break;
default : nUrgent1 = 40; break;
}
switch (nGrade2)
{
case 0 : nUrgent2 = 1; break;
case 1 : nUrgent2 = 3; break;
case 2 : nUrgent2 = 6; break;
case 3 : nUrgent2 = 7; break;
case 4 : nUrgent2 = 9; break;
case 5 : nUrgent2 = 21; break;
case 6 : nUrgent2 = 22; break;
case 7 : nUrgent2 = 23; break;
case 8 : nUrgent2 = 24; break;
case 9 : nUrgent2 = 25; break;
case 10 : nUrgent2 = 26; break;
case 11 : nUrgent2 = 27; break;
case 12 : nUrgent2 = 28; break;
case 13 : nUrgent2 = 29; break;
case 14 : nUrgent2 = 30; break;
case 15 : nUrgent2 = 31; break;
case 16 : nUrgent2 = 33; break;
case 17 : nUrgent2 = 35; break;
case 18 : nUrgent2 = 37; break;
case 19 : nUrgent2 = 39; break;
case 20 : nUrgent2 = 41; break;
default : nUrgent2 = 41; break;
}
}
if (pdata->skill == 2)
{
switch (nGrade1)
{
case 0 : nUrgent1 = 0; break;
case 1 : nUrgent1 = 2; break;
case 2 : nUrgent1 = 4; break;
case 3 : nUrgent1 = 5; break;
case 4 : nUrgent1 = 8; break;
case 5 :
case 6 :
case 7 : nUrgent1 = 10; break;
case 8 :
case 9 :
case 10 : nUrgent1 = 11; break;
case 11 : nUrgent1 = 12; break;
case 12 : nUrgent1 = 13; break;
case 13 :
case 14 :
case 15 : nUrgent1 = 14; break;
case 16 : nUrgent1 = 20; break;
case 17 : nUrgent1 = 22; break;
case 18 : nUrgent1 = 24; break;
case 19 : nUrgent1 = 26; break;
case 20 : nUrgent1 = 28; break;
default : nUrgent1 = 28; break;
}
switch (nGrade2)
{
case 0 : nUrgent2 = 1; break;
case 1 : nUrgent2 = 3; break;
case 2 : nUrgent2 = 6; break;
case 3 : nUrgent2 = 7; break;
case 4 : nUrgent2 = 9; break;
case 5 :
case 6 :
case 7 : nUrgent2 = 15; break;
case 8 :
case 9 :
case 10 : nUrgent2 = 16; break;
case 11 : nUrgent2 = 17; break;
case 12 : nUrgent2 = 18; break;
case 13 :
case 14 :
case 15 : nUrgent2 = 19; break;
case 16 : nUrgent2 = 21; break;
case 17 : nUrgent2 = 23; break;
case 18 : nUrgent2 = 25; break;
case 19 : nUrgent2 = 27; break;
case 20 : nUrgent2 = 29; break;
default : nUrgent2 = 29; break;
}
}
if (pdata->skill == 1)
{
switch (nGrade1)
{
case 0 : nUrgent1 = 0; break;
case 1 : nUrgent1 = 2; break;
case 2 : nUrgent1 = 4; break;
case 3 : nUrgent1 = 5; break;
case 4 : nUrgent1 = 8; break;
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 : nUrgent1 = 10; break;
case 11 :
case 12 :
case 13 :
case 14 :
case 15 : nUrgent1 = 11; break;
case 16 : nUrgent1 = 14; break;
case 17 : nUrgent1 = 16; break;
case 18 : nUrgent1 = 18; break;
case 19 : nUrgent1 = 20; break;
case 20 : nUrgent1 = 22; break;
default : nUrgent1 = 22; break;
}
switch (nGrade2)
{
case 0 : nUrgent2 = 1; break;
case 1 : nUrgent2 = 3; break;
case 2 : nUrgent2 = 6; break;
case 3 : nUrgent2 = 7; break;
case 4 : nUrgent2 = 9; break;
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 : nUrgent2 = 12; break;
case 11 :
case 12 :
case 13 :
case 14 :
case 15 : nUrgent2 = 13; break;
case 16 : nUrgent2 = 15; break;
case 17 : nUrgent2 = 17; break;
case 18 : nUrgent2 = 19; break;
case 19 : nUrgent2 = 21; break;
case 20 : nUrgent2 = 23; break;
default : nUrgent2 = 23; break;
}
}
nUrgent = ((nUrgent1>nUrgent2)?nUrgent2:nUrgent1)*45 + ((nUrgent1<nUrgent2)?nUrgent2:nUrgent1);// lgd
ptUrgent[nUrgent] = ptCurrent;
}
}
}
for (i=0; i<2025; ++i)
if (ptUrgent[i].x != -1 && ptUrgent[i].y !=-1)
break;
if (ptUrgent[i].x ==-1 && ptUrgent[i].y ==-1) // 和棋
{
//;
}
return ptUrgent[i];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -