




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课程设计-中国象棋南 昌 航空大学信息工程学院课程设计说明书课程名称:C语言课程设计设计题目:中国象棋专业:计算机科学与技术班级:姓名:学号:评分:指导教师:2012年6月26日摘要II前言功能描述IV配置要求总体设计(个人负责模块)功能模块设计数据结构设计三、函数功能描述四、代码实现五、运行结果VI小结中国象棋是一款很古老、很受欢迎的游戏,其开发过程有一定的技巧和方法,其中涉及到函数调用、二维数组、键盘操作等方面 的知识。本游戏的开发者需要基本掌握复杂情况下函数的编写以及调用能力、二维数组 的运用能力、复杂算法的设计能力等。n前言中国象棋是一款经典的智力游戏,具有悠久的历史,早在战国时
2、期就有了关于中国象棋的记载,经过几千年的流传,目前仍然是中国家喻户晓的棋类游戏,颇受欢迎。因此,我们决定借这次机会通过用C语言将中国象棋实现出来,当然,我们也借鉴了前人的一些技巧 经验。有不足之处,希望老师能够谅解,我们 以后将会再接再厉。m功能描述本人负责棋子帅(将)、象(相)、士(仕)、卒(兵)子函数的编写,它们的所能实现的功能分别是:(1)帅(将):控制棋子帅(将)能符合现实情况下的游戏规则而行走,例如帅(将)只能在规定范围内向上或向左、右、下行走一格,最后返回一个行走正确或行走错误的数据。(2)象(相):控制棋子象(相)能符合现实情况下的游戏规则而行走,例如象(相)只能在自己领域内走“
3、田”字格,且中间不能有其他棋子阻挡,最后返回一个行走正确或行走错误的数据。(3) 士(仕):控制棋子士(仕)能符合现 实情况下的游戏规则而行走,例如士(仕)只能在规定范围内斜着跨一格,然后返回一个行走正确或行走错误的数据。(4)卒(兵):控制棋子卒(兵)能符合现实情况下的游戏规则而行走,例如卒(兵)只 能一次走一格,同时在自己领域内只能向前 走,而在对方领域内可向前、左、右方向走一格,最后返回一个行走正确或行走错误的数据。IV配置要求(1)硬件配置CPU:Pentium III 600内存:264MB硬盘剩余空间:2128MB(2)软件环境Visual C+6.0及其以上版本V总体设计(个人负
4、责模块)本人为小组成员,负责的模块是:棋子 帅(将)、象(相)、士(仕)、卒(兵)子函 数的设计与编写。一、系统模块设计1、系统模块图本人所负责的模块共有四个小项目组成,分别是控制棋子正确行走的帅(将”象(相,士(仕)、卒(兵)子函数。(1)帅(将)该子函数主要负责控制维持棋子帅(将)的正确行走,返回正确或错误的数据信息。 (2)象(相)该子函数主要负责控制维持棋子象(相)的正 确行走,返回正确或错误的数据信息。3 3) (仕)该子函数主要负责控制维持棋子士(仕)的正确行走,返回正确或错误的数据信息。 (4)卒(兵)该子函数主要负责控制维持棋子卒(兵)的正确行走,返回正确或错误的数据信息。图1
5、.系统模块图2、任务执行流程图在玩家进行游戏移动棋子帅(将)、象(相)、 (仕)、卒(兵)的时候,主函数调 用这几个子函数的执行流程图均为:图2.任务执行流程图二、数据结构设计四个子函数均定义了局部变量xl,x2,yl,y2,table10,通过主函数调用将玩家从键盘输入的值传递给xl,x2,yl,y2. table10是在主函数中定义的一个二维数组,在子函数中 同样控制棋盘的输出。三、函数功能描述l.chekshuai ()函数原型:int checkshuai (int xl, intyl, int x2, int y2, int tabled 10)checkshuai ()函数控制棋子
6、帅(将)的正确行走,通过主函数将初始位置的坐 标xl, y 1与目标位置的坐标x2, y2传递给 该子函数,从而判别帅(将)的行走是否 符合规则。2checkxiang ()函数原型:int checkxiang(int xl,intyl,int x29int y2,int table10)checkxiang()函数控制棋子象(相)的正确行走,通过主函数将初始位置的坐 标xl, yl与目标位置的坐标x2, y2传递给 该子函数,从而判别象(相)的行走是否 符合规则。3checkshi ()函数原型:int checkshi(int xl,int yljntx2,int y2,int tabl
7、e10)checkshi()函数控制棋子士(仕)的正确行走,通过主函数将初始位置的坐标xl, yl与目标位置的坐标x2, y2传递给该 子函数,从而判别士(仕)的行走是否符合规则。4 .checkbing ()函数原型:int checkbing(int xljnt yl,intx2,int y2,int tablet10)checkbing()函数控制棋子士(仕)的正确行走,通过主函数将初始位置的坐标xl, y 1与目标位置的坐标x2, y2传递给 该子函数,从而判别士(仕)的行走是否符合规则o四、代码实现1 .帅(将)int checkshuai(int xl,int yl,int x2,
8、int y2,int table口10)if (x210 II y26)&(x23 II y26)/控制棋子的行走范围是在自己领域的九宫格内printf(Hn将或者帅是不能移出九宫区 域的,重新输入吧!n);return 0;/规则错误后出现提示信息并且返回0进行重新输入)elseif(abs(x2-xl)=l)&(abs(y2-yl)=l)/控制棋子的行走只能是直线printf(Hn将或者帅是不能走斜线的哦,重新输入吧!n”);return 0;/规则错误后出现提示信息并且返回0进行重新输入else if (tablex2y2*tablexlyl0)/控制棋子只能覆盖对方棋子以分清敌我pri
9、ntf(Hn自己不能吃掉自己呀,重新输入吧!n”);return 0;/规则错误后出现提示信息并且返回0进行重新输入ifelse(abs(x2-xl)=2)ll(abs(y2-yl)=2)/控制棋子每次只能跨越一格printf(nn将或者帅不能一次走多格呀,重新输入吧!n);return 0;/规则错误后出现提示信息并且返回0进行重新输入else return 1;/若未遇到错误则返回1继续进行游戏2 .象(相)int checkxiang(int xl,int yljnt x29int y2,int table10)if (abs(x2-xl)!=2 II (abs(y2-yl)!=2)/控
10、制棋子的行走路线为田字格对角线printf(Hn相(象)只能走田字呀,重新输入吧!n”);return 0;/规则错误后出现提示信息并且返回0进行重新输入)elseif(tablexlyl0&x25)ll(tablexlyl0&x20)/控制棋子只能覆盖对方棋子以分清敌我printf(Hn自己不能吃掉自己呀,重新输入吧!return 0;/规则错误后出现提示信息并且返回0进行重新输入else return 1;/若未遇到错误则返回1继续进行游戏3 . 士(仕)int checkshi(int xl,int yl,int x2,int y2,int table10)if (x210 II y26
11、)&(x23 II y26)/控制棋子的行走范围是在自己领域的九宫格内printf(Hn 士或者仕是不能移出九宫 区域的,重新输入吧!n);return 0;/规则错误后出现提示信息并且返回0进行重新输入else if(tablex2y2*tablexlyl0)/控制棋子只能覆盖对方棋子以分printf(Hn自己不能吃掉自己呀,重新输入吧!n”);return 0;/规则错误后出现提示信息并且返回0进行重新输入else(abs(x2-xl)=2)ll(abs(y2-yl)=2)/控制棋子每次只能跨越一格printf(Hn 士或者仕不能一次走多,呀,重新输入吧!n”);return 0;/规则错
12、误后出现提示信息并且返回0进行重新输入)else(I(abs(x2-xl)=l)&(abs(y2-yl)=l)/控制棋子行走路径只能是沿着格的对角线printf(Hn士或者仕只能斜着走呀,重新输入吧!n”);return 0;/规则错误后出现提示信息并且返回0进行重新输入else return 1;/若未遇到错误则返回1继续进行游戏4 .卒(兵)int checkbing(int xl,int yl,int x2,int y2, int table10)if(tablexlyl0)/兵()是否是甲方棋子(在上 方)if(tablex2y20)/控制棋子只能覆盖对方棋子以分清敌我printf(H
13、n拜托,不能自己吃自 B!nn);return 0;/规则错误后出现提示信息并且返回0进行重新输入)if(xl6)/此时兵W没过河if(yl=y2)&(x2-xl=l)/控制棋子只能向前走return 1;/若符合规则则继续游戏printf(nn兵(卒)过河后只能向前走或者平移,不能后退,重新输入吧!n”);return 0;/规则错误后出现提示信息并且返回0进行重新输入)elseprintf(nn兵(卒)过河前只能向前走,重 新输入吧!n”);return 0;/规则错误后出现提示信息并且返回0进行重新输入else/若此时兵()已过河if(yl=y2)&(x2-xl=l)ll(yl-y2=l
14、)&(x2=xl)ll(y2-yl=l)&(x2=xl)/控制棋子过河后只能向前或者向左、右移动return 1;/若符合规则则继续游戏else)else/判断兵是否在乙方(在下方)if(tablex2y2Q。4 wA q.L* kA* 4 *ij。7。:,tj *?7j-t*7-j-4,Nt,j:*jjjjj,“::,:-:,: ?:,:,T?:- *j*:,“7 *? T1234567891车丁象土石包士象丁车2 H+-H3卜庖名小炮中W4H4卒十十=H=+卒匏卒5 1 卒4 4=HI *楚河*汉界* I6 卜丁丁丁丁丁丁丁37兵中兵中兵中兵中兵8 b+W=H=+=H9 1=L=1=L=|=L=|=10卓上相仕帅仕相焉卓请甲方走棋!恭喜乙方,乙方已取得胜利!游戏结束!重新开始请输入1结束请输入0:图5.游戏结束界面VI小结两周的课程设计结束了,这次的课程设计不仅检验了我们所学的知识,同时也培养了大家如 何去把一件事情认认真真的做好。在整个设计过 程中,我们互相讨论、互相学习、互
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 马工学在企业战略中的试题及答案
- 2024育婴师早教知识试题及答案
- 保姆服务合同范本及条款
- 兽医社会责任探讨试题及答案
- 专利技术许可合同
- 个人信用借款合同范本
- 合同纠纷解决律师问答宝典
- 便携式医疗检测设备租赁合同
- 出国留学咨询与服务合同
- 企业资产抵押合作合同样本
- 《中央八项规定精神学习教育》专项讲座
- 土地整治项目监理工作总结报告
- ZYJ7道岔故障处理方法
- 商业银行票据业务知识考试试题
- 建筑工程材料见证取样、送检单
- 劳务派遣公司管理制度
- 大一高数试题及答案(共16页)
- 吉林大学地球科学学院09版培养方案.doc(2010.11.30)
- 工程信号基础
- 某化工项目总承包合同(epc)范本
- 年度产品研发计划表
评论
0/150
提交评论