国际象棋C分析和总结.docxVIP

  • 5
  • 0
  • 约1.16万字
  • 约 18页
  • 2023-09-18 发布于上海
  • 举报
实用文档 实用文档 文案大全 文案大全 #include iostream #include string #include cmath using 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,black 7rookMoved,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; b[7][i].side = BLACK; b[6][i].pt = PAWN;//倒数第二行是黑方的兵 } b[0][0].pt = b[0][7].pt = b[7][0].pt = b[7][7].pt = ROOK;/ 初/ 置 始化车的位 b[0][1].pt = b[0][6].pt = b[7][1].pt = b[7][6].pt = KNIGHT;//初始化马的 位置 b[0][2].pt = b[0][5].pt = b[7][2].pt = b[7][5].pt = BISHOP;//初始化象的 位置 b[0][3].pt = b[7][3].pt = QUEEN;//初始化后的位置b[0][4].p

文档评论(0)

1亿VIP精品文档

相关文档