电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

国际象棋-C++VIP免费

国际象棋-C++_第1页
1/18
国际象棋-C++_第2页
2/18
国际象棋-C++_第3页
3/18
#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:黑方王是否已经移动**/boolwhitecastled,blackcastled,white0rookMoved,white7rookMoved,black0rookMoved,black7rookMoved,whitekingMoved,blackkingMoved;TPieceTypeChessType(conststring&move){switch(move[0]){case'K'://王returnKING;case'Q'://后returnQUEEN;case'R'://车returnROOK;case'B'://象returnBISHOP;case'N'://马returnKNIGHT;}returnPAWN;//兵}TSideOpponent(TSideside){//获取对手类型if(side==WHITE)returnBLACK;returnWHITE;}voidclear(TBoardb,intx,inty){//清空棋盘b的(x,y)位置b[x][y].side=NONE;//所属玩家b[x][y].pt=SPACE;//棋子类型}voidinit(TBoardb){//初始化棋盘inti,j;//清空整个棋盘for(i=0;iBOARDSIZE||y>BOARDSIZE){returntrue;}returnfalse;}boolCanMovePawn(TBoardb,intx,inty,intx2,inty2,intflag){//判断能否把兵从(x,y)移动到(x2,y2),当flag=1时,表示(x,y)直接移动到(x2,y2),flag为其他表示从(x,y)吃子到(x2,y2)if(flag==1){//直接移动,即兵直线前进一格if(y!=y2||b[x2][y2].side!=NONE){//y坐标不能改变,无法前进returnfalse;}if(b[x][y].side==WHITE){//下棋的是白方if(x==1){//白方的兵是第一次移动returnx2==2||(x2==3&&b[2][y].side==NONE);//第一次移动兵可以移动格或格}else{returnx2==x+1;//不是第一次移动,就只能向前移动格}}else{//下棋的是黑方if(x==6){//黑方的兵是第一次移动returnx2==5||(x2==4&&b[5][y].side==NONE);//第一次移动兵可以移动格或格}else{returnx...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

国际象棋-C++

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部