📄 cchessuidlg.cpp
字号:
CChessBoard[i][j] =0;
}
}
CChessBoard[0][0] = R;
CChessBoard[1][0] = H;
CChessBoard[2][0] = E;
CChessBoard[3][0] = A;
CChessBoard[4][0] = K;
CChessBoard[5][0] = A;
CChessBoard[6][0] = E;
CChessBoard[7][0] = H;
CChessBoard[8][0] = R;
CChessBoard[1][2] = C;
CChessBoard[7][2] = C;
CChessBoard[0][3] = P;
CChessBoard[2][3] = P;
CChessBoard[4][3] = P;
CChessBoard[6][3] = P;
CChessBoard[8][3] = P;
CChessBoard[0][6] = p;
CChessBoard[2][6] = p;
CChessBoard[4][6] = p;
CChessBoard[6][6] = p;
CChessBoard[8][6] = p;
CChessBoard[1][7] = c;
CChessBoard[7][7] = c;
CChessBoard[0][9] = r;
CChessBoard[1][9] = h;
CChessBoard[2][9] = e;
CChessBoard[3][9] = a;
CChessBoard[4][9] = k;
CChessBoard[5][9] = a;
CChessBoard[6][9] = e;
CChessBoard[7][9] = h;
CChessBoard[8][9] = r;
/*
//FOR TEST..............................
CChessBoard[0][6] = p;
CChessBoard[2][6] = p;
CChessBoard[4][6] = p;
CChessBoard[6][6] = p;
CChessBoard[8][6] = p;
CChessBoard[1][7] = 0;
CChessBoard[7][7] = 0;
CChessBoard[0][9] = 0;
CChessBoard[1][9] = 0;
CChessBoard[2][9] = 0;
CChessBoard[3][9] = 0;
CChessBoard[4][9] = k;
CChessBoard[5][9] = 0;
CChessBoard[6][9] = 0;
CChessBoard[7][9] = 0;
CChessBoard[8][9] = 0;
*/
WhoseTurn = RED ;
fGameover = false;
nMaxSearchDepth = m_SetDlg.GetDepth();
}
//将阿拉伯数字转换为中国数字
CString ConvertDigit(int nNum)
{
switch(nNum)
{
case 0:
return "一";
case 1:
return "二";
case 2:
return "三";
case 3:
return "四";
case 4:
return "五";
case 5:
return "六";
case 6:
return "七";
case 7:
return "八";
case 8:
return "九";
default:
return "";
}
}
// 取得着法的名称
CString GetMoveStr(int nFromX,int nFromY,int nToX,int nToY,int nSourceID)
{
/*
bool bIsAgain;
int i;
int nCount;
int nPos[5];
int j=0;
*/
CString Str;
int nCur,nOther;
int Other[4];
//和兵有关的
int count_X = 1; //计算在一列上的子的数目
int count_Y = 0; //记录有几个子在当前子的前方
int i;
switch(nSourceID)
{
//红帅
case RED_K0:
if( nFromX == nToX )
{
if( nToY > nFromY )
Str="红:帅"+ConvertDigit(8-nFromX)+"进"+ConvertDigit(nToY-nFromY-1);
else
Str="红:帅"+ConvertDigit(8-nFromX)+"退"+ConvertDigit(nFromY-nToY-1);
}
else
Str="红:帅"+ConvertDigit(8-nFromX)+"平"+ConvertDigit(8-nToX);
break;
//黑将
case BLACK_K0:
if ( nFromX == nToX )
{
if( nToY < nFromY )
Str.Format("黑:将%d进%d",nFromX+1,nFromY-nToY);
else
Str.Format("黑:将%d退%d",nFromX+1,nToY-nFromY);
}
else
Str.Format("黑:将%d平%d",nFromX+1,nToX+1);
break;
//红仕
case RED_Sl:
case RED_Sr:
if( nToY>nFromY )
Str="红:仕"+ConvertDigit(8-nFromX)+"进"+ConvertDigit(8-nToX);
else
Str="红:仕"+ConvertDigit(8-nFromX)+"退"+ConvertDigit(8-nToX);
break;
//黑士
case BLACK_Sl:
case BLACK_Sr:
if( nToY<nFromY )
Str.Format("黑:士%d进%d",nFromX+1,nToX+1);
else
Str.Format("黑:士%d退%d",nFromX+1,nToX+1);
break;
//红相
case RED_Xl:
case RED_Xr:
if( nToY > nFromY )
Str="红:相"+ConvertDigit(8-nFromX)+"进"+ConvertDigit(8-nToX);
else
Str="红:相"+ConvertDigit(8-nFromX)+"退"+ConvertDigit(8-nToX);
break;
//黑象
case BLACK_Xl:
case BLACK_Xr:
if( nToY < nFromY )
Str.Format("黑:象%d进%d",nFromX+1,nToX+1);
else
Str.Format("黑:象%d退%d",nFromX+1,nToX+1);
break;
//红炮
case RED_Pl:
case RED_Pr:
if( RED_Pl == nSourceID )
{
nCur = RED_Pl;
nOther = RED_Pr;
}
else
{
nCur = RED_Pr;
nOther = RED_Pl;
}
if(ptChess[nCur].x == ptChess[nOther].x)
{
if(ptChess[nCur].y < ptChess[nOther].y)
{
if(nToY<nFromY)
{
Str="红:前炮退"+ConvertDigit(nFromY-nToY-1);
}
if(nToY>nFromY)
{
Str="红:前炮进"+ConvertDigit(nToY-nFromY-1);
}
if(nToY == nFromY)
{
Str="红:前炮平"+ConvertDigit(8-nToX);
}
}
else
{
if(nToY<nFromY)
{
Str="红:后炮退"+ConvertDigit(nFromY-nToY-1);
}
if(nToY>nFromY)
{
Str="红:后炮进"+ConvertDigit(nToY-nFromY-1);
}
if(nToY == nFromY)
{
Str="红:后炮平"+ConvertDigit(8-nToX);
}
}
}
else
{
if(nToY<nFromY)
{
Str="红:炮"+ConvertDigit(8-nFromX)+"退"+ConvertDigit(nFromY-nToY-1);
}
if(nToY>nFromY)
{
Str="红:炮"+ConvertDigit(8-nFromX)+"进"+ConvertDigit(nToY-nFromY-1);
}
if(nToY == nFromY)
{
Str="红:炮"+ConvertDigit(8-nFromX)+"平"+ConvertDigit(8-nToX);
}
}
break;
//黑炮
case BLACK_Pl:
case BLACK_Pr:
if( BLACK_Pl == nSourceID )
{
nCur = BLACK_Pl;
nOther = BLACK_Pr;
}
else
{
nCur = BLACK_Pr;
nOther = BLACK_Pl;
}
if(ptChess[nCur].x == ptChess[nOther].x)
{
if(ptChess[nCur].y > ptChess[nOther].y)
{
if(nToY<nFromY)
{
Str.Format("黑:前炮进%d",nFromY-nToY);
}
if(nToY>nFromY)
{
Str.Format("黑:前炮退%d",nToY-nFromY);
}
if(nToY == nFromY)
{
Str.Format("黑:前炮平%d",nToX+1);
}
}
else
{
if(nToY<nFromY)
{
Str.Format("黑:后炮进%d",nFromY-nToY);
}
if(nToY>nFromY)
{
Str.Format("黑:后炮退%d",nToY-nFromY);
}
if(nToY == nFromY)
{
Str.Format("黑:后炮平%d",nToX+1);
}
}
}
else
{
if(nToY<nFromY)
{
Str.Format("黑:炮%d进%d",nFromX+1,nFromY-nToY);
}
if(nToY>nFromY)
{
Str.Format("黑:炮%d退%d",nFromX+1,nToY-nFromY);
}
if(nToY == nFromY)
{
Str.Format("黑:炮%d平%d",nFromX+1,nToX+1);
}
}
break;
//红马
case RED_Ml:
case RED_Mr:
if( RED_Ml == nSourceID )
{
nCur = RED_Ml;
nOther = RED_Mr;
}
else
{
nCur = RED_Mr;
nOther = RED_Ml;
}
if(ptChess[nCur].x == ptChess[nOther].x)
{
if(ptChess[nCur].y < ptChess[nOther].y)
{
if( nToY<nFromY )
{
Str="红:前马退"+ConvertDigit(8-nToX);
}
if(nToY>nFromY)
{
Str="红:前马进"+ConvertDigit(8-nToX);
}
}
else
{
if(nToY<nFromY)
{
Str="红:后马退"+ConvertDigit(8-nToX);
}
if(nToY>nFromY)
{
Str="红:后马进"+ConvertDigit(8-nToX);
}
}
}
else
{
if(nToY<nFromY)
{
Str="红:马"+ConvertDigit(8-nFromX)+"退"+ConvertDigit(8-nToX);
}
if(nToY>nFromY)
{
Str="红:马"+ConvertDigit(8-nFromX)+"进"+ConvertDigit(8-nToX);
}
}
break;
//黑马
case BLACK_Ml:
case BLACK_Mr:
if( BLACK_Ml == nSourceID )
{
nCur = BLACK_Ml;
nOther = BLACK_Mr;
}
else
{
nCur = BLACK_Mr;
nOther= BLACK_Ml;
}
if(ptChess[nCur].x == ptChess[nOther].x)
{
if(ptChess[nCur].y > ptChess[nOther].y)
{
if(nToY<nFromY)
{
Str.Format("黑:前马进%d",nToX+1);
}
if(nToY>nFromY)
{
Str.Format("黑:前马退%d",nToX+1);
}
}
else
{
if(nToY<nFromY)
{
Str.Format("黑:后马进%d",nToX+1);
}
if(nToY>nFromY)
{
Str.Format("黑:后马退%d",nToX+1);
}
}
}
else
{
if(nToY<nFromY)
{
Str.Format("黑:马%d进%d",nFromX+1,nToX+1);
}
if(nToY>nFromY)
{
Str.Format("黑:马%d退%d",nFromX+1,nToX+1);
}
}
break;
//红车
case RED_Jl:
case RED_Jr:
if( RED_Jl == nSourceID )
{
nCur = RED_Jl;
nOther = RED_Jr;
}
else
{
nCur = RED_Jr;
nOther = RED_Jl;
}
if(ptChess[nCur].x == ptChess[nOther].x)
{
if(ptChess[nCur].y < ptChess[nOther].y)
{
if(nToY<nFromY)
{
Str="红:前车退"+ConvertDigit(nFromY-nToY-1);
}
if(nToY>nFromY)
{
Str="红:前车进"+ConvertDigit(nToY-nFromY-1);
}
if(nToY == nFromY)
{
Str="红:前车平"+ConvertDigit(8-nToX);
}
}
else
{
if(nToY<nFromY)
{
Str="红:后车退"+ConvertDigit(nFromY-nToY-1);
}
if(nToY>nFromY)
{
Str="红:后车进"+ConvertDigit(nToY-nFromY-1);
}
if(nToY == nFromY)
{
Str="红:后车平"+ConvertDigit(8-nToX);
}
}
}
else
{
if(nToY<nFromY)
{
Str="红:车"+ConvertDigit(8-nFromX)+"退"+ConvertDigit(nFromY-nToY-1);
}
if(nToY>nFromY)
{
Str="红:车"+ConvertDigit(8-nFromX)+"进"+ConvertDigit(nToY-nFromY-1);
}
if(nToY == nFromY)
{
Str="红:车"+ConvertDigit(8-nFromX)+"平"+ConvertDigit(8-nToX);
}
}
break;
//黑车
case BLACK_Jl:
case BLACK_Jr:
if( BLACK_Pl == nSourceID )
{
nCur = BLACK_Jl;
nOther = BLACK_Jr;
}
else
{
nCur = BLACK_Jr;
nOther = BLACK_Jl;
}
if(ptChess[nCur].x == ptChess[nOther].x)
{
if(ptChess[nCur].y > ptChess[nOther].y)
{
if(nToY<nFromY)
{
Str.Format("黑:前车进%d",nFromY-nToY);
}
if(nToY>nFromY)
{
Str.Format("黑:前车退%d",nToY-nFromY);
}
if(nToY == nFromY)
{
Str.Format("黑:前车平%d",nToX+1);
}
}
else
{
if(nToY<nFromY)
{
Str.Format("黑:后车进%d",nFromY-nToY);
}
if(nToY>nFromY)
{
Str.Format("黑:后车退%d",nToY-nFromY);
}
if(nToY == nFromY)
{
Str.Format("黑:后车平%d",nToX+1);
}
}
}
else
{
if(nToY<nFromY)
{
Str.Format("黑:车%d进%d",nFromX+1,nFromY-nToY);
}
if(nToY>nFromY)
{
Str.Format("黑:车%d退%d",nFromX+1,nToY-nFromY);
}
if(nToY == nFromY)
{
Str.Format("黑:车%d平%d",nFromX+1,nToX+1);
}
}
break;
//红兵
case RED_B1:
case RED_B2:
case RED_B3:
case RED_B4:
case RED_B5:
if( RED_B1 == nSourceID )
{
nCur = RED_B1;
Other[0]= RED_B2;
Other[1]= RED_B3;
Other[2]= RED_B4;
Other[3]= RED_B5;
}
if( RED_B2 == nSourceID )
{
nCur = RED_B2;
Other[0]= RED_B1;
Other[1]= RED_B3;
Other[2]= RED_B4;
Other[3]= RED_B5;
}
if( RED_B3 == nSourceID )
{
nCur = RED_B3;
Other[0]= RED_B1;
Other[1]= RED_B2;
Other[2]= RED_B4;
Other[3]= RED_B5;
}
if( RED_B4 == nSourceID )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -