#include#include#includeusingnamespacestd;enumTResult{//结局状态WHITEWIN=1,//白方赢BLACKWIN,//黑方赢STALEMATE,//僵局DRAW,//和局DEAD,//过多的输入PUZZLE,//无法决定移动棋子ILLEGAL//非法};constcharRESULT[8][20]={//结局状态输出表示"","WhiteWin","BlackWin","Stalemate","Draw","DeadMoves","PuzzleMove","IllegalMove"};enumTPieceType{//棋子类型SPACE=0,PAWN,//兵KING,//王QUEEN,//后ROOK,//车BISHOP,//象KNIGHT//马};enumTSide{NONE=0,WHITE,//黑方BLACK//白方};typedefstruct{//棋盘每个位置的表示TSideside;//所属玩家TPieceTypept;//棋子类型}TPiece;constintBOARDSIZE=8;//棋盘大小typedefTPieceTBoard[BOARDSIZE][BOARDSIZE];//棋盘intn;//棋谱步数TResultresult;//最后结局/**用来进行王车易位的布尔变量**whitecastled:白方是否已经王车易位*blackcastled:黑方是否已经王车易位*white0rookMoved:白方号位的车是否已经移动*white7rookMoved:白方号位的车是否已经移动*black0rookMoved:黑方号位的车是否已经移动*black7rookMoved:黑方号位的车是否已经移动*whitekingMoved:白方王是否已经移动*blackkingMoved:黑方王是否已经移动**/b