下载此文档

国际象棋-C.docx


文档分类:生活休闲 | 页数:约53页 举报非法文档有奖
1/53
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/53 下载此文档
文档列表 文档介绍
国际象棋-C++
LT
#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
{//棋盘每个位置的表示
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;i<BOARDSIZE;++i)
for(j=0;j<BOARDSIZE;++j)
{
clear(b,i,j);
}
//摆放各个棋子
for(i=0;i<BOARDSIZE;++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].pt = b[7][4].pt = KING;//初始化王的位置
//初始化王车易位使用的布尔变量
whitecastled = false;
blackcastled = false;
white0rookM

国际象棋-C 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数53
  • 收藏数0 收藏
  • 顶次数0
  • 上传人lu2yuwb
  • 文件大小1.48 MB
  • 时间2021-12-12