资源描述:
《vc339中国象棋游戏的设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC339中国象棋游戏的设计
2.1 棋局表示
计算机下棋的前提是要让计算机读懂象棋。所谓读懂,即计算机应该能够清楚地了解到棋盘上的局面(棋盘上棋子的分布情况)以及下棋方所走的每一种着法。因而首先需要设计一套数据结构来表示棋盘上的局面以及着法。
对于棋盘局面的表示可采用传统而简单的“棋盘数组”。即用一个9*10的数组来存储棋盘上的信息,数组的每个元素存储棋盘上是否有棋子。这种表示方法简单易行(缺点是效率不是很高)。按此方法棋盘的初始情形如下所示:
BYTECChessBoard[9][10]={
R, 0,
2、 0, P, 0, 0, p, 0, 0, r,
H, 0, C, 0, 0, 0, 0, c, 0, h,
E, 0, 0, P, 0, 0, p, 0, 0, e,
A, 0, 0, 0, 0, 0, 0,
3、0, 0, a,
K, 0, 0, P, 0, 0, p, 0, 0, k,
A, 0, 0, 0, 0, 0, 0, 0, 0, a,
E, 0, 0, P, 0, 0, p, 0, 0, e,
H, 0, C,
4、0, 0, 0, 0, c, 0, h,
R, 0, 0, P, 0, 0, p, 0, 0, r
};
给所有棋子定义一个值:
#defineR_BEGIN R_KING
#defineR_END R_PAWN
#defineB_BEGIN B_
5、KING
#defineB_END B_PAWN
#defineNOCHESS 0 //没有棋子
黑方:#defineB_KING 1//黑帅
#defineB_CAR 2//黑车
#defineB_HORSE 3//黑马
#defineB_CANON 4//黑
6、炮
#defineB_BISHOP 5//黑士
#defineB_ELEPHANT6//黑象
#defineB_PAWN 7//黑卒
红方:#defineR_KING 8//红将
#defineR_CAR 9//红车
#defineR_HORSE 10//红马
#defineR_CANON  
7、;11//红炮
#defineR_BISHOP 12//红士
#defineR_ELEPHANT13//红相
#defineR_PAWN 14//红兵
判断颜色:
#defineIsBlack(x)(x>=B_BEGIN&&x<=B_END)//判断某个棋子是不
是黑色
#defineIsRed(x) (x>=R_BEGIN&&x<=R_END)//判断某个棋子是不
8、R>是红色
对于着法的表示,直接借用棋盘数组的下标来记录着法的起点和目标点