国际象棋 C++.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
国际象棋C

#include iostream #include string #include cmathusing namespace std;enum TResult {//结局状态 WHITEWIN = 1,//白方赢 BLACKWIN,//黑方赢 STALEMATE,//僵局 DRAW,//和局 DEAD,//过多的输入 PUZZLE,//无法决定移动棋子 ILLEGAL //非法};const char RESULT[8][20]= {//结局状态输出表示 , White Win, Black Win, Stalemate, Draw, Dead Moves, Puzzle Move, Illegal Move };enum TPieceType {//棋子类型 SPACE = 0, PAWN,//兵 KING,//王 QUEEN,//后 ROOK,//车 BISHOP,//象 KNIGHT //马};enum TSide { NONE = 0, WHITE,//黑方 BLACK //白方};typedef struct {//棋盘每个位置的表示 TSide side;//所属玩家 TPieceType pt;//棋子类型}TPiece;const int BOARDSIZE = 8;//棋盘大小typedef TPiece TBoard[BOARDSIZE][BOARDSIZE];//棋盘int n;//棋谱步数TResult result;//最后结局/* *用来进行王车易位的布尔变量* * whitecastled:白方是否已经王车易位* blackcastled:黑方是否已经王车易位* white0rookMoved: 白方号位的车是否已经移动* white7rookMoved: 白方号位的车是否已经移动* black0rookMoved: 黑方号位的车是否已经移动* black7rookMoved: 黑方号位的车是否已经移动* whitekingMoved: 白方王是否已经移动* blackkingMoved: 黑方王是否已经移动**/bool whitecastled,blackcastled,white0rookMoved,white7rookMoved,black0rookMoved,black7rookMoved,whitekingMoved,blackkingMoved; TPieceType ChessType(const string move) { switch(move[0]) { case K://王 return KING; case Q://后 return QUEEN; case R://车 return ROOK; case B://象 return BISHOP; case N://马 return KNIGHT; } return PAWN;//兵}TSide Opponent(TSide side) {//获取对手类型 if (side==WHITE) return BLACK; return WHITE; }void clear(TBoard b,int x,int y) {//清空棋盘b的(x,y)位置 b[x][y].side = NONE;//所属玩家 b[x][y].pt = SPACE;//棋子类型}void init(TBoard b) {//初始化棋盘 int i,j; //清空整个棋盘 for(i=0;iBOARDSIZE;++i) for(j=0;jBOARDSIZE;++j) { clear(b,i,j); } //摆放各个棋子 for(i=0;iBOARDSIZE;++i) { //棋盘前两行是白方 b[0][i].side = WHITE; b[1][i].side = WHITE; b[1][i].pt = PAWN;//上面第二行是白方的兵 //棋盘最后两行是黑方 b[6][i].side = BLACK;

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档