1 内容提要
中国象棋是一款经典的智力游戏,具有悠久的历史,是中国家喻户晓的棋类游戏,属于两人对抗游戏的一种,它经过几千年的流传,仍然颇受欢迎。它是中国棋文化,也是中国民族的文化瑰宝,它源远流长,趣味浓厚,基本规则简明易懂。下棋过程中,双方交替行棋,率先把对方的将(帅)“将死”的一方获胜。借着此次项目设计的机会,用C语言的方式将它编写出来。在编程中,可能会涉及到函数、数组等知识;要设计好棋盘、确定棋子的摆放位置、各棋子的功能、各棋子的行进走法以及“吃棋”等。
2 设计内容
该程序设计内容包括象棋棋盘、棋子摆布、行棋规则、吃子、将军/应将/送将、将帅照面/王不见王、胜负判定。
3 概要设计
象棋棋盘以“楚河 汉界”为界,划分双方阵地,两军对垒作战。在这里,用很多的点“.”来绘制棋盘,将棋子摆放在各自的位置,红方棋子在棋盘上的显示分别是“【帥】、【仕】、【相】、【傌】、【俥】、【炮】、【兵】”;黑方棋子在棋盘上的显示分别是“(將)、(士)、(象)、(馬)、(車)、(砲)、(卒)”。当棋子行棋离开初始位置时,“.”变为“+”。
4 详细设计
4.1 棋子选取
游戏开始时光标位于红方的“【炮】”上,移动选择棋子时表现为“[ ]”,选定棋子后,被选中的棋子表现为“* *”,例如,选定红方的“【炮】”则显示为“*【炮】*”。将光标移动到要选择的棋子,按空格键选定该棋子,将棋子移动到要取的位置,再次按空格键确定。
void toSymbolWithCur(int num){
printf("[");
toSymbol(num);
printf("]");
}
void toSymbolWithMark(int num){
printf("*");
toSymbol(num);
printf("*");
}
4.2 行棋吃子
在下棋过程中,双方交替行棋,由红方先行,红方走完后黑方行棋,黑方走完后红方再接上,如此反复交替行棋。象棋的棋子之间不存在大小关系,任何棋子都可以吃掉任何棋子,也可能被任何棋子吃掉——只要符合行棋规则。程序设计时,当一方的一颗棋子吃掉另一方的一颗棋子时,该方棋子位于被吃方的棋子所在位置,而被吃方的棋子从棋盘上消失。
void tab(int num){
for(int i = 0; i<num; i++){
printf("\t");
}
}
void space(int num){
for(int i = 0; i<num; i++){
printf(" ");
}
}
void line(int num){
for(int i = 0; i<num; i++){
printf("\n");
}
}
void cls(){
system("cls");
}
void hr(int num){
for(int i = 0; i<num; i++){
printf("—");
}
}
int color(int piece){
if(piece>=1 && piece <=14){
if(piece % 2 != 0)