版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Il垂十逸十丄隹十绿+凰国十+十十2+ :ttEtiBI3i3X3【黑申”卄!入你5移动的楙子5 7黑,农】谄將入你5teS的悅I.6 3十1111 土十:+化+ 十辜十琴十十+十+十十+十 -注一抚: +十+十+十十+十 远十二十壬十.+ 4;二:+ 用+ +十 J+61戴翕屛 违反册裁规则,诅S3ffia入 rsiw入俅更移疏的複子.精选文库 -运厂劇也一a?却话詢入和要移站的相子1 4:tP朗谊入库基放S的怔旨 10 4十十+十十十+十十 十十十十十十十皓十 蠢十亘十黛卜蟲匕禺 十+十十十” l f渗一乜镒- 十十十十十亠SS年亠挝十十 亠卑十=3 十證;十$了+ 十十-ig_i十十:X
2、 t(云瞞簧自G 箝甑片芒IHIagout11/main.c/象棋/車马相仕帅仕相马車十十十十十十十十十十炮十十十十十炮十兵十兵十兵十兵十兵十十十十十十十十十楚河汉界十十十十十十十十十卒十卒十卒十卒十卒十炮十十十十十炮十十十十十十十十十十車马象士将士象马車/Created by tarena121 on 15/8/12.Copyright (c) 2015 年 Tarena. All rights reserved./#includevstdio.h#includevstdbool.h#includevmath.h#includevstdlib.h#define R(pi ece)03331m
3、 #piece 0330m 红色棋子#define B(p iece)03330m #piece 0330m 黑色棋子#define CROSS03333m 十0330m定义外部变量,棋盘坐标char* array 119;int xi,yi; /要移动的棋子 int xj,yj; 移动的目标位置bool isStandard = 1;/是否符合规则,初始值 1,符合 bool gameOverSign = 1;/游 戏是否结束,0 结束bool restart = 0;/生成棋盘 void chessboardBuilding();/打印棋盘 void P rintChessboard();
4、/判断是红棋还是黑棋,红旗返回1,黑棋返回-1,否则返回0 int redOrBlack( int x,int y);红棋移动void redMove();/黑棋移动 void blackMove();每种棋子的规则void rulesOfAIIKindsOfChess Pieces();/判断游戏结束 void isGameOver();/*主函*int main()/生成棋盘chessboardBuilding ();/打印棋盘PrintChessboard ();/开始下棋int turn = - 1;while (gameOverSign ) isStandard = 1;turn *
5、= (- 1);/双方交替下棋 switch (turn) case 1:redMove ();turn = (restart) ? (turn*- 1) : turn;break ;case -1:blackMove ();turn = (restart) ? (turn*- 1) : turn;break ;isGameOver ();printf(游戏结束!n);/主函数结束/* 自定义函*/生成棋盘 void chessboardBuildingOfor (int i = 0; i 11; i +) for (int j = 0; j 9 ; j +) arrayij = CROSS
6、;p rintf(n);array50 = array 51 = array 54 = array 57 = array 58=-array5 2 = B(楚);array53 = B(河);array55 = B(汉);array5 6 = B(界);布置红棋arrayOO = array 08 = R(車);array01 = array 07 = R(马);arrayO2 = array 06 = R(相);array03 = array 05 = R(仕);array04 = R(帅);array21 = array 27 = R(炮);array30 = array 32 = arr
7、ay 34 = array 36 = array 38 = R(兵);布置黑棋array100 = array 108 = B(車);array101 = array 107 = B(马);array102 = array 106 = B(相);array103 = array 105 = B(仕);array104 = B(将);array81 = array 87 = B(炮);array 70 = array 72 = array 74 = array 76 = array 78 = B(卒);/打印棋盘 void p rintChessboard()/显示printf (03343;3
8、0m 中国象棋欢迎您 0330mnn);for (int i = 0; i 11; i +) for (int j = 0; j 9; j +) printf(%s ,array ij);printf (n);/判断是红棋还是黑棋,红旗返回1,黑棋返回-1,否则返回0 int redOrBlack( int x,int y)if (array xy = R(車)| array xy = R(马)| array xy = R(相)| array xy = R(仕)| array xy =R(帅)| array xy = R(炮)| array xy = R(兵)return 1;else if
9、(array xy = B(車) | array xy = B(马)| array xy = B(象)| array xy = B(仕)| array xy = B(将)| array xy = B(炮)| array xy = B(卒)return -1;elsereturn 0;红棋移动void redMove()if (restart) printf (违反游戏规则,请重新输入n);restart = 0;printf (红棋请输入你要移动的棋子:n);scanf (%d %d,&xi,&yi);printf (红棋请输入你要放置的位置:n);scanf (%d %d,&xj,&yj);
10、rulesOfAIIKindsOfChess Pieces();printChessboard ();/黑棋移动voidblackMove()if (restart) printf (违反游戏规则,请重新输入n);restart = 0;printf (黑棋请输入你要移动的棋子:n);scanf (%d %d,&xi,&yi);printf (黑棋请输入你要放置的位置:n);scanf (%d %d,&xj,&yj);rulesOfAIIKindsOfChess Pieces();printChessboard ();/判断游戏结束 void isGameOver()bool sign= 0;
11、bool sign_b = 0;for (int i = 0; i 11; i +) for (int j = 0; j 9; j +) if (array ij = R(帅)sign_r = 1;else if (array ij = B(将)sign_b = 1;if (sign_r = 0)|(sign_b = 0) gameOverSign = 0;每种棋子的规则void rulesOfAIIKindsOfChess Pieces()/R (車)if (arrayxiyi = R(車)if (yi = yj) /列坐标不变,同列移动for (int i = xi+ 1; i xj; i
12、 -)if (i = 5)continue ;/如果行等于5,跳过if (arra y xiyi != CROSS)isStandard = 0;else if (xi = xj) 行坐标不变,同行移动for (int i = yi+ 1; i yj; i -)if (arra yxi i != CROSS)1)/如果棋子直行、没有犯规且落isStandard = 0;if (xi = xj | yi = yj)& isStandard & (redOrBlack(xj, yj) !=点不是红棋,可以移动arrayxi yi = CROSS;arrayxjyj = R(車);elseresta
13、rt = 1;/B (車)elseif (arrayxiyi = B(車)if (yi = yj) /列坐标不变,同列移动for (int i = xi+ 1; i xj; i -)if (i = 5)continue ;/如果行等于5,跳过if (arrayiyi != CROSS)isStandard = 0;else if (xi = xj) /行坐标不变,同行移动for (int i = yi+ 1; i yj; i -)if (arrayxii != CROSS)1)/如果棋子直行、没有犯规且落点isStandard = 0;if (xi = xj | yi = yj)& isSta
14、ndard & redOrBlack(xj, yj) !=-不是红棋,可以移动arrayxi yi = CROSS;arrayxjyj = B(車);elserestart = 1;万SOMO SXMee(一 A 一 L xwoe_8op2ss L 士 Mum 4 土 x=(0(L 士 xwoe_8ope.pss 4 士s = (04 丄XMMIX) = (0(0 hh (一 a 二 x)loe_8ope.pss L 土A Mum 4 土 xs = (0 Hus = (0(L +_ -_xro-md?s 土Am L 土X M 丄X) 一一 (0 hh p 土 A xwoe_8ope.pss 4
15、 土 A Mum L ._x(L 士 - _xro-md?s 4 士 Mum Lxs = (0(一A 一 L ._xoro-md0c-s L A(m 一 L ._xoro-md0c-s L 士 Mum 4 丄 XX) sp - Mi (mxwoe_8op2)_(h )8SXMee 二一es_eL H telsees_eXh )M=XMee万SOMO SXMee(一 A 一 L xwoe_8op2ss L 士 Mum 4 土 x=(0(L 士 xwoe_8ope.pss 4 士s = (0(0 hh (一 a 二 x)loe_8ope.pss L 土A Mum 4 土 xs = (0 UNs =
16、 (0(L +_ -_xro-md?s 土Am L 土X M 丄X) 一一 (0 hh p 土 A xwoe_8ope.pss 4 土 A Mum L ._x(L 士 - _xro-md?s 4 士 Mum Lxs = (0(一A 一 L ._xwoe_8op2ss L Amss = (0 hh (一a . L ._xoro-md0c-s L 士._xX)丛(mxwoe_8op2)_(h )MSXMee)匕 es_e精选文库else if (arrayxiyi = R(炮)int count = 0;/起始位置间棋子的个数if (yi = yj) /列坐标不变,同列移动for (int i =
17、 xi+ 1; i xj; i -)if (i = 5)continue ;/如果行等于5,跳过if (redOrBlack(i, yi) !=0)count+;else if (xi = xj) 行坐标不变,同行移动for (int i = yi+ 1; i yj; i -)if (redOrBlack(xi, i) !=0)count+;if (xi = xj II yi = yj)& (count =1) & redOrBlack(xj, yj) !=1)/如 果棋子直行、没有犯规且落点不是红棋,可以移动arrayxjyj = R(炮);arrayxiyi = CROSS;15精选文库1
18、9elserestart = 1;/B (炮)elseif (arrayxiyi = B(炮)int count = 0;/起始位置间棋子的个数 if (yi = yj) /列坐标不变,同列移动for (int i = xi+ 1; i xj; i -)if (i = 5)continue ;/如果行等于5,跳过if (redOrBlack(i, yi) !=0)count+;else if (xi = xj) 行坐标不变,同行移动for (int i = yi+ 1; i yj; i -)if (redOrBlack(xi, i) !=0)count+;if (xi = xj | yi =
19、yj)& (count xj)isStandard = 0;/如果倒退,则不符合规范if (xi = 3)if (xj != xi+ 1) | (yi != yj)isStandard = 0;/第 3行时只能前进一步if (xi = 4)if (xj != xi+ 2) | (yi != yj)isStandard = 0;/第 4行时只能前进两步if (xi 4) if (xj = xi+ 1 & yi =yj)| (xj = xi & yi =yj+1 )|(xj = xi & yi =yj-1) elseisStandard = 0;if (xi = xj | yi = yj)& is
20、Standard & redOrBlack(xj, yj) != else/B (卒)arrayxjyj = R (兵);restart = 1;elseif (arrayxiyi = B(卒) if (xi xj)isStandard = 0;/如果倒退,则不符合规范 if (xi = 7)if (xj != xi- 1) | (yi != yj)isStandard = 0;/第 3行时只能前进一步if (xi = 6)if (xj != xi- 2) | (yi != yj)isStandard = 0;/第 4行时只能前进两步if (xi 4) if (xj = xi- 1 & yi =yj)| (xj = xi & yi =yj+1 )|(xj = xi & yi =yj-1)elseisStandard = 0;if (isStandard & redOrBlack(xj, yj) != -1)/arrayxi yi = CROSS;arrayxjyj = R (卒);elserestart = 1;精选文库elseif (arrayxiyi = R(仕)#/R (相)elseif (arra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版冷链物流车辆租赁合作协议2篇
- 安徽事业单位二零二五年度聘用合同范本3篇
- 2025年度个人股权质押股权分割合同(公平版)4篇
- 2025版房地产开发商逾期交房违约责任担保合同4篇
- 二零二五版绿色家居墙面涂料采购与应用合同3篇
- 二零二五版毛竹林资源承包与加工利用合同2篇
- 2025年度宅基地使用权流转纠纷处理服务合同4篇
- 2025年度电子商务平台运营维护外包服务合同协议2篇
- 2025年度别墅铜门定制与市场推广活动合同3篇
- 2025年度轮胎销售区域保护与市场垄断协议4篇
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 2024年城市轨道交通设备维保及安全检查合同3篇
- 【教案】+同一直线上二力的合成(教学设计)(人教版2024)八年级物理下册
- 湖北省武汉市青山区2023-2024学年七年级上学期期末质量检测数学试卷(含解析)
- 单位往个人转账的合同(2篇)
- 科研伦理审查与违规处理考核试卷
- GB/T 44101-2024中国式摔跤课程学生运动能力测评规范
- 高危妊娠的评估和护理
- 2024年山东铁投集团招聘笔试参考题库含答案解析
- 2023年高考全国甲卷数学(理)试卷【含答案】
- 数独题目A4打印版无答案
评论
0/150
提交评论