




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌航空大学信息工程学院课程设计说明书 课程名称: C语言课程设计 设计题目: 中国象棋 专业: 计算机科学与技术 班级:_ 姓名: 学号:_ 评分: 指导教师: 2012 年 6月26日目 录 摘要 前言 功能描述 配置要求 总体设计(个人负责模块)一、功能模块设计二、数据结构设计三、函数功能描述四、代码实现 五、运行结果 小结 摘 要 中国象棋是一款很古老、很受欢迎的游戏,其开发过程有一定的技巧和方法,其中 涉及到函数调用、二维数组、键盘操作等方面的知识。本游戏的开发者需要基本掌握复 杂情况下函数的编写以及调用能力、二维数组的运用能力、复杂算法的设计能力等。 前 言中国象棋是一款经典的智力游戏,具有悠久的历史,早在战国时期就有了关于中国象棋的记载,经过几千年的流传,目前仍然是中国家喻户晓的棋类游戏,颇受欢迎。因此,我们决定借这次机会通过用C语言将中国象棋实现出来,当然,我们也借鉴了前人的一些技巧经验。有不足之处,希望老师能够谅解,我们以后将会再接再厉。 功能描述本人负责棋子帅(将)、象(相)、士(仕)、卒(兵)子函数的编写,它们的所能实现的功能分别是:(1)帅(将):控制棋子帅(将)能符合现实情况下的游戏规则而行走,例如帅(将)只能在规定范围内向上或向左、右、下行走一格,最后返回一个行走正确或行走错误的数据。(2)象(相):控制棋子象(相)能符合现实情况下的游戏规则而行走,例如象(相)只能在自己领域内走“田”字格,且中间不能有其他棋子阻挡,最后返回一个行走正确或行走错误的数据。(3)士(仕):控制棋子士(仕)能符合现实情况下的游戏规则而行走,例如士(仕)只能在规定范围内斜着跨一格,然后返回一个行走正确或行走错误的数据。(4)卒(兵):控制棋子卒(兵)能符合现实情况下的游戏规则而行走,例如卒(兵)只能一次走一格,同时在自己领域内只能向前走,而在对方领域内可向前、左、右方向走一格,最后返回一个行走正确或行走错误的数据。 配置要求(1) 硬件配置CPU:Pentium III 600内存:64MB硬盘剩余空间:128MB(2) 软件环境Visual C+6.0及其以上版本 总体设计(个人负责模块)本人为小组成员,负责的模块是:棋子帅(将)、象(相)、士(仕)、卒(兵)子函数的设计与编写。一、系统模块设计1、系统模块图本人所负责的模块共有四个小项目组成,分别是控制棋子正确行走的帅(将)、象(相)、士(仕)、卒(兵)子函数。(1)帅(将)该子函数主要负责控制维持棋子帅(将)的正确行走,返回正确或错误的数据信息。(2)象(相)该子函数主要负责控制维持棋子象(相)的正确行走,返回正确或错误的数据信息。(3)士(仕)该子函数主要负责控制维持棋子士(仕)的正确行走,返回正确或错误的数据信息。(4)卒(兵)该子函数主要负责控制维持棋子卒(兵)的正确行走,返回正确或错误的数据信息。帅(将)象(相)士(仕)卒(兵)主函数 调调用调调调用用用用图1. 系统模块图2、任务执行流程图在玩家进行游戏移动棋子帅(将)、象(相)、士(仕)、卒(兵)的时候,主函数调用这几个子函数的执行流程图均为:开始输入目标位置的坐标符合规则吗?符合规则返回1不符合规则返回0输出规则提示信息图2. 任务执行流程图二、数据结构设计 四个子函数均定义了局部变量x1,x2,y1,y2,table10,通过主函数调用将玩家从键盘输入的值传递给x1,x2,y1,y2. table10是在主函数中定义的一个二维数组,在子函数中同样控制棋盘的输出。 三、函数功能描述 1.chekshuai ( ) 函数原型:int checkshuai(int x1,int y1,int x2,int y2,int table10)checkshuai( )函数控制棋子帅(将)的正确行走,通过主函数将初始位置的坐标x1,y1与目标位置的坐标x2,y2传递给该子函数,从而判别帅(将)的行走是否符合规则。2.checkxiang ( )函数原型:int checkxiang(int x1,int y1,int x2,int y2,int table10)checkxiang( )函数控制棋子象(相)的正确行走,通过主函数将初始位置的坐标x1,y1与目标位置的坐标x2,y2传递给该子函数,从而判别象(相)的行走是否符合规则。3.checkshi ( ) 函数原型:int checkshi(int x1,int y1,int x2,int y2,int table10)checkshi( )函数控制棋子士(仕)的正确行走,通过主函数将初始位置的坐标x1,y1与目标位置的坐标x2,y2传递给该子函数,从而判别士(仕)的行走是否符合规则。 4.checkbing ( ) 函数原型:int checkbing(int x1,int y1,int x2,int y2,int table10)checkbing( )函数控制棋子士(仕)的正确行走,通过主函数将初始位置的坐标x1,y1与目标位置的坐标x2,y2传递给该子函数,从而判别士(仕)的行走是否符合规则。四、代码实现1. 帅(将)int checkshuai(int x1,int y1,int x2,int y2,int table10) if (x210 | y26)&(x23 | y26) / 控制棋子的行走范围是在自己领域的九宫格内printf(n将或者帅是不能移出九宫区域的,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else if (abs(x2-x1)=1)&(abs(y2-y1)=1) / 控制棋子的行走只能是直线 printf(n将或者帅是不能走斜线的哦,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else if (tablex2y2*tablex1y10) / 控制棋子只能覆盖对方棋子以分清敌我 printf(n自己不能吃掉自己呀,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else if (abs(x2-x1)=2)|(abs(y2-y1)=2) / 控制棋子每次只能跨越一格 printf(n将或者帅不能一次走多格呀,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else return 1; / 若未遇到错误则返回1继续进行游戏2. 象(相)int checkxiang(int x1,int y1,int x2,int y2,int table10) if (abs(x2-x1)!=2 | (abs(y2-y1)!=2) / 控制棋子的行走路线为田字格对角线 printf(n相(象)只能走田字呀,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else if (tablex1y10 &x25)|(tablex1y10 &x20) / 控制棋子只能覆盖对方棋子以分清敌我 printf(n自己不能吃掉自己呀,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else return 1; / 若未遇到错误则返回1继续进行游戏3. 士(仕)int checkshi(int x1,int y1,int x2,int y2,int table10) if (x210 | y26)&(x23 | y26) / 控制棋子的行走范围是在自己领域的九宫格内 printf(n士或者仕是不能移出九宫区域的,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else if (tablex2y2*tablex1y10) / 控制棋子只能覆盖对方棋子以分清敌我 printf(n自己不能吃掉自己呀,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else if (abs(x2-x1)=2)|(abs(y2-y1)=2) / 控制棋子每次只能跨越一格 printf(n士或者仕不能一次走多格呀,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else if (!(abs(x2-x1)=1)&(abs(y2-y1)=1) / 控制棋子行走路径只能是沿着一格的对角线 printf(n士或者仕只能斜着走呀,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else return 1; / 若未遇到错误则返回1继续进行游戏4. 卒(兵)int checkbing(int x1,int y1,int x2,int y2, int table10) if(tablex1y10)/ 兵(卒)是否是甲方棋子(在上方) if(tablex2y20)/ 控制棋子只能覆盖对方棋子以分清敌我 printf(n拜托,不能自己吃自己!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入 if(x16)/ 此时兵(卒)没过河 if(y1=y2)&(x2-x1=1) / 控制棋子只能向前走 return 1; / 若符合规则则继续游戏elseprintf(n兵(卒)过河前只能向前走,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else/ 若此时兵(卒)已过河if(y1=y2)&(x2-x1=1)|(y1-y2=1)&(x2=x1)|(y2-y1=1)&(x2=x1) / 控制棋子过河后只能向前或者向左、右移动 return 1; / 若符合规则则继续游戏else printf(n兵(卒)过河后只能向前走或者平移,不能后退,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入else/ 判断兵是否在乙方(在下方)if(tablex2y25)/ 如果兵(卒)没过河 if(y1=y2)&(x1-x2=1) / 控制棋子只能向前走 return 1; / 若符合规则则继续游戏 else printf(n兵(卒)过河前只能向前走,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入 else/ 如果兵(卒)已过河 if(y1=y2)&(x1-x2=1)|(y1-y2=1)&(x2=x1)|(y2-y1=1)&(x2=x1) / 控制棋子过河后只能向前或者向左、右移动return 1; / 若符合规则则继续游戏 else printf(n兵(卒)过河后只能向前走或者平移,不能后退,重新输入吧!n); return 0; / 规则错误后出现提示信息并且返回0进行重新输入 五、运行结果1、游戏进入初始界面进入游戏后显示的初始界面截图如下图:图3. 游戏初始界面2、游戏进行中的界面如下显示了游戏进行中的界面截图:图4. 游戏进行过程中界面3、游戏结束完成游戏后结束的界面截图:图5.游戏结束界面 小结 两周的课程设计结束了,这次的课程设计不仅检验了我们所学的知识,同时也培养了大家如何去把一件事情认认真真的做
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 万科招聘考试试题及答案
- 资阳乡镇公务员面试题及答案
- 道法考试试题大全及答案
- 吴川公务员试题及答案
- 卫生等级考试试题及答案
- 高级社工考试试题及答案
- 仪表电气考试试题及答案
- 企业投资合作协议合同范例
- 广东省广州市2025届高考生物学5月模拟卷(有答案)
- 低应变合同范例
- 接触网工程图识图 六跨电分相绝缘锚段关节安装图的识图
- 公司实际控股人协议书
- 吊装安全事故经验分享
- 研究生干细胞培训课件
- 科学研究与方法论PPT课件讲义
- 土建生态环保和绿色施工环境管理培训ppt
- 二年级上册科学课件太阳的位置和方向
- GB/T 27930-2023非车载传导式充电机与电动汽车之间的数字通信协议
- 电力工程项目管理手册
- 苏州介绍PPT(苏州简介经典版)
- 华为公司质量管理手册
评论
0/150
提交评论