2022年C语言编写中国象棋上课讲义 .pdf





《2022年C语言编写中国象棋上课讲义 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言编写中国象棋上课讲义 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C 语 言 编 写 中 国 象 棋名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 19 页 -/名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 19 页 -/main.c/象棋/車马相仕帅仕相马車/十十十十十十十十十/十炮十十十十十炮十/兵十兵十兵十兵十兵/十十十十十十十十十/楚河汉界/十十十十十十十十十/卒十卒十卒十卒十卒/十炮十十十十十炮十/十十十十十十十十十/車马象士将士象马車/Created by tarena121 on 15/8/12./Copyright(c)2015年 Tarena.All rights reserved.名师资料总结-精品资料欢迎下
2、载-名师精心整理-第 3 页,共 19 页 -/#include#include#include#include#define R(piece)03331m#piece 0330m/红色棋子#define B(piece)03330m#piece 0330m/黑色棋子#define CROSS 03333m 十0330m/定义外部变量,棋盘坐标char*array 119;int xi,yi;/要移动的棋子int xj,yj;/移动的目标位置bool isStandard=1;/是否符合规则,初始值1,符合bool gameOverSign=1;/游戏是否结束,0结束bool restart=
3、0;/生成棋盘void chessboardBuilding();/打印棋盘void printChessboard();/判断是红棋还是黑棋,红旗返回 1,黑棋返回-1,否则返回 0int redOrBlack(int x,int y);/红棋移动void redMove();/黑棋移动void blackMove();/每种棋子的规则void rulesOfAllKindsOfChessPieces();名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 19 页 -/判断游戏结束void isGameOver();/*主函数*int main()/生成棋盘chessboardB
4、uilding();/打印棋盘printChessboard();/开始下棋int turn=-1;while (gameOverSign)isStandard =1;turn*=(-1);/双方交替下棋switch (turn)case 1:redMove();turn=(restart)?(turn*-1):turn;break;case-1:blackMove();turn=(restart)?(turn*-1):turn;break;isGameOver();printf(游戏结束!n);/主函数结束/*自定义函数*名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 19 页
5、 -/生成棋盘void chessboardBuilding()for(int i=0;i 11;i+)for(int j=0;j 9;j+)arrayij=CROSS;printf(n);array 50=array 51=array 54=array 57=array 58=;array 52=B(楚);array 53=B(河);array 55=B(汉);array 56=B(界);/布置红棋array 00=array 08=R(車);array 01=array 07=R(马);array 02=array 06=R(相);array 03=array 05=R(仕);array
6、04=R(帅);array 21=array 27=R(炮);array 30=array 32=array 34=array 36=array 38=R(兵);/布置黑棋array 100=array 108=B(車);array 101=array 107=B(马);名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 19 页 -array 102=array 106=B(相);array 103=array 105=B(仕);array 104=B(将);array 81=array 87=B(炮);array 70=array 72=array 74=array 76=arr
7、ay 78=B(卒);/打印棋盘void printChessboard()/显示printf(03343;30m 中国象棋欢迎您 0330mnn);for(int i=0;i 11;i+)for(int j=0;j 9;j+)printf(%s,array ij);printf(n);/判断是红棋还是黑棋,红旗返回 1,黑棋返回-1,否则返回 0int redOrBlack(int x,int y)if(arrayxy=R(車)|arrayxy=R(马)|array xy=R(相)|arrayxy=R(仕)|array xy=R(帅)|array xy=R(炮)|array xy=R(兵)r
8、eturn1;else if(array xy=B(車)|arrayxy=B(马)|array xy=B(象)|array xy=B(仕)|array xy=B(将)|array xy=B(炮)|array xy=B(卒)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 19 页 -return -1;elsereturn 0;/红棋移动void redMove()if(restart)printf(违反游戏规则,请重新输入n);restart =0;printf(红棋 请输入你要移动的棋子:n);scanf(%d%d,&xi,&yi);printf(红棋 请输入你要放置的位置:n
9、);scanf(%d%d,&xj,&yj);rulesOfAllKindsOfChessPieces();printChessboard();/黑棋移动void blackMove()if(restart)printf(违反游戏规则,请重新输入n);restart =0;printf(黑棋 请输入你要移动的棋子:n);scanf(%d%d,&xi,&yi);printf(黑棋 请输入你要放置的位置:n);scanf(%d%d,&xj,&yj);rulesOfAllKindsOfChessPieces();printChessboard();名师资料总结-精品资料欢迎下载-名师精心整理-第 8
10、页,共 19 页 -/判断游戏结束void isGameOver()bool sign_r=0;bool sign_b=0;for(int i=0;i 11;i+)for(int j=0;j 9;j+)if(arrayij=R(帅)sign_r=1;else if(array ij=B(将)sign_b=1;if(sign_r=0)|(sign_b=0)gameOverSign =0;/每种棋子的规则void rulesOfAllKindsOfChessPieces()/R(車)-if(arrayxiyi=R(車)if(yi=yj)/列坐标不变,同列移动 for(int i=xi+1;i xj
11、;i-)if(i=5)continue;/如果行等于 5,跳过if(arrayxiyi!=CROSS)isStandard=0;else if(xi=xj)/行坐标不变,同行移动 for(int i=yi+1;i yj;i-)if(arrayxii!=CROSS)isStandard=0;if(xi=xj|yi=yj)&isStandard&(redOrBlack(xj,yj)!=1)/如果棋子直行、没有犯规且落点不是红棋,可以移动 arrayxiyi=CROSS;arrayxjyj=R(車);else restart=1;/B(車)-else if(arrayxiyi=B(車)if(yi=y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言编写中国象棋上课讲义 2022 语言 编写 中国象棋 上课 讲义

限制150内