




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.中北大学程序设计课程设计说明书学生姓名: 学 号:10051041 学 院: 信息与通信工程学院 专 业: 光电信息工程 题 目: 五子棋 指导教师: 职称: 2012 年 01月 06 日(纪念我已经逝去的大学生活)院: 信息与通信工程学院 专 业: 光电信息工程 学 生 姓 名: 学 号: 10051041 课程设计题目: 五子棋 起 迄 日 期:2011年12月 24日2012年1月6日 课程设计地点: 111420 指 导 教 师: 系 主 任: 下达任务书日期: 2011 年 12 月25 日课 程 设 计 任 务 书1设计目的:1 熟悉C语言程序设计的原理与方法;2 掌握C语言开
2、发环境下程序的具体设计;3 掌握利用C语言分析解决具体问题。2设计内容和要求:设计内容:用C语言设计一个五子棋游戏程序,允许游戏者自由选择棋子颜色,实现人人对战和人机对战,利用时间函数设置实现落子倒计时功能程序应该具有以下基本功能:1显示欢迎界面。2玩家棋子可选,棋盘范围足够。3落子时间倒计时。设计要求:1不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。3对系统进行功能模块分析、画出总流程图和各模块流程图。4用户界面要求使用方便、简洁明了、美观大方、格式统一。5所有程序需在Win-Tc 或Microsoft Visual C+ 6.
3、0 环境调试通过。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:1) 课程设计说明书一份;2) 电子文档(说明书、设计程序)一份 课 程 设 计 任 务 书4主要参考文献:谭浩强 c程序设计 北京大学出版社 5设计成果形式及要求:1) 课程说明书打印,并装订;2) 必要的程序流程图和程序附录。6工作计划及进度:2011年12月24日2011年12月26日 下达设计任务书,学生熟悉设计内容; 2011年12月27日2011年12月29日 查阅参考资料,确定基本设计方案;2011年12月29日2012年01月04日 C语言进行程序设计;2012年01月05日2012
4、年01月06日 完成设计报告;2012年01月06日 答辩; 系主任审查意见: 签字: 年 月 日目 录1、课程设计的背景及意义.062、设计的基本原理063、设计的基本过程084、设计的结果105、总结和结论.111. 设计背景及意义我们的五子棋程序是在Visual C+ 6.0环境下运行的。 Visual C+ 6.0 Microsoft Visual C+(简称Visual C+、MSVC、VC+或VC)微软公司的C+开发工具,具有集成开发环境,可提供编辑C语言,C+以及C+/CLI等编程语言。VC+整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画D
5、irectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C+ 2010。Visual C+ 6.0集成了MFC6.0,于1998发行。发行至今一直被广泛地用于大大小小的项目开发。 五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。我们通过对C语言以及对大学计算机基础的初步学习后,本学期末进行了课程程序设计,设计课题为“五子棋”。我们小组由6人组成,通过分工与合作并在赵老师的耐心指导下共同完成了此程序设计。2.设计的基本原理2.1问题描述连珠(五子棋)是有两个人在一盘棋上进行对抗的竞技运动。在对局开始时,先由用户选择哪方
6、先开局,先开局一方将一枚棋子落在一点上,然后由另一方在对方棋周围的交叉点上落子,如此轮流落子,直到某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方就算获胜。此时,算法结束。 2.2需求分析(1)输出棋盘界面(2)要求玩家选择棋子(3)玩家轮流下棋(4)判断键盘输入哪个键按规则执行操作(5)判断谁先落棋(6)判断赢家(7)输出结果界面2.3流程图开始玩家选择棋子输出棋盘界面O方先输入棋子坐标刷新棋盘界面转换玩家玩家移动棋子YYYNNN结束判断是否赢棋判断是否重子判断棋子是否出界刷新棋盘界面输出胜利界面3设计的基本过程char b4040;void show() /输出获胜图像/ int
7、i=0,j=0; /i为横坐标变量,j为纵坐标变量/for(i=0;i40;i+) /对图像数组赋初值/ for(j=0;j40;j+) bij=46;for(i=0;i40;i+) /对图像数组特定点赋值/for(j=0;j10&i10&j25&j=6&j=7&j=8&j=9&j=10&j=12&j=14&j=17&j=23)bij=O;for(i=0;i40;i+) /输出图像数组/for(j=0;j40;j+)printf(%c,bij);printf(n);详细说明:Show函数的目的是输出获胜界面,调用全局变量b(目的是为图像分配存储空间),i为横坐标变量,j为纵坐标变量,接下来的两
8、个for是把b初始化为“.”,再接下来的双for是为塑形:限定行间距为10i16,再限定列间距为10j16或25j31,用判断语句来塑造图形“双眼”;当i=21时,限定6=j=25,当i=22,23,24,25,26,27时同理,用判断语句来塑造“嘴”,最后用双for语句来输出图形。4设计结果玩家获胜显示界面截图5总结与结论1 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.回顾起此次课程程序设计,至今我仍感慨颇多,从选题到定稿,从理论到实践,在整整两星期的日子里,学到很多很多的的东西,不仅巩固了以前所学过的
9、知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中难免会遇到过各种各样的问题,同时在设计的过程中也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,把以前所学过的知识重新温故。这次课程设计顺利完成了,在设计中遇到了很多编程问题,最后在赵宇老师的辛勤指导下,终于游逆而解。同时,在赵宇老师的身上我学得到很多实用的知识,我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示
10、忠心的感谢!附录负责人设计内容Viod judge()函数的设计及程序的调试Viod judge()函数的设计及程序的调试Void move()函数的设计及课程设计说明书的排版制作 Int playing()函数的设计及程序的调试Void showcheckerboard()函数设计及相关操作Void show()函数的设计及程序的调试程序源代码:#include#includechar a6565;char b4040;void show() /输出获胜图像/ int i=0,j=0; /i为横坐标变量,j为纵坐标变量/for(i=0;i40;i+) /对图像数组赋初值/ for(j=0;j
11、40;j+) bij=46;for(i=0;i40;i+) /对图像数组特定点赋值/for(j=0;j10&i10&j25&j=6&j=7&j=8&j=9&j=10&j=12&j=14&j=17&j=23)bij=O;for(i=0;i40;i+) /输出图像数组/for(j=0;j40;j+)printf(%c,bij);printf(n);void move(int *x,int *y) /*移动棋子的方向*/ /x为上一步棋子横坐标,y为上一步棋子纵坐标/char b40; /为记录棋子将要移动的步伐/int i,z,flag=1; /z为某一步的中间变量,flag为标志变量/gets(
12、b); /输入要移动的步伐/for(i=0;i40;i+)z=bi; /把b【】的某一步传递给z/switch(z) /判断移动棋子方向/case 119: *x=*x-1;break; /w键控制棋子上移/case 97: *y=*y-1;break; /a键控制棋子左移/case 115: *x=*x+1;break; /s键控制棋子下移/case 100: *y=*y+1;break; /d键控制棋子右移/case 111: flag=0;break; /o键确定落子/if(flag=0) break; /判断某步是否移动完成/int playing() /*开始下棋*/ int fla
13、g=1,i=0,x=0,y=0,k,l,n=0,m=1; /flag为记录哪方下棋的标志变量,x,y为a的横纵坐标,m,n分别记录o方,方的积累步数/int *p1=&x,*p2=&y; int judge (int x,int y); /本函数所用子函数的声明/void move(int *p1,int *p2);void showcheckerboard(int x,int y); printf(O方先输入首子坐标:); scanf(%d %d,&x,&y); /输入首坐标/axy=O; /首坐标的棋盘位置画棋子/showcheckerboard(m,n); /输出更新后的棋盘/for(i
14、=0;i2000;i+) /改变玩家/if(flag=1)flag=0;elseflag=1;for(k=0;k=1&x=1&y=64) if(axy=46) break; else if(flag=1) m-; else n-; printf(此处有子,请继续移子); continue;else if(flag=1) m-; else n-;printf(此处过界,请继续移子);if(flag=1) /在a的特定位置更新字符/axy=O;else axy=;showcheckerboard(m,n); /更新棋盘/l=judge(x,y); /记录谁赢变量/ if(l=1) return f
15、lag; void showcheckerboard(int x,int y) /*画出棋盘*/ /x,y分别为o方下棋步数,方下棋步数/int i,j,w=0; /i,j为横纵坐标变量/printf(=n);printf( 0方累计下棋步数:%d 方累计下棋步数:%dn,x,y);printf(=n);for(i=0;i65;i+) /输出横纵坐标/printf(%2d,i);printf(n);for(i=1;i65;i+)for(j=0;j65;j+)if(j=0)w+=1;printf(%2d,w);elseprintf(%2c,aij);printf(n);int judge(int
16、 x,int y) /*判断各方向五子是否连成一线*/ /x,y分别为横纵坐标/ int i,b,c,d,e,z=1; /z为标志变量,记录每个方向连棋个数/for(i=1;i5;i+) /垂直向下数/if(axy+i=axy) z+=1;if(z=5)return(1);break;else break;for(i=1;i5;i+) /垂直向上数/if(axy-i=axy)z+=1;if(z=5)return(1);break;else break;e=z;z=1; for(i=1;i5;i+) /水平向右数/if(ax+iy=axy)z+=1;if(z=5)return(1);break;
17、else break; for(i=1;i5;i+) /水平向左数/if(ax-iy=axy)z+=1;if(z=5)return(1);break;else break; b=z;z=1;for(i=1;i5;i+) /向左下方数/if(ax-iy+i=axy)z+=1;if(z=5)return(1);break;else break; for(i=1;i5;i+) /向右上方数/if(ax+iy-i=axy)z+=1;if(z=5)return(1);break;else break; c=z;z=1;for(i=1;i5;i+) /向左上方数/if(ax-iy-i=axy)z+=1;if(z=5)return(1);break;else break; for(i=1;i5;i+) /向右下方数/if(ax+iy+i=axy)z+=1;if(z=5)return(1);break;else break; d=z;if(e!=5&b!=5&c!=5&d!=5) /判断某个方向五子连棋/return(0);void main() int x,y,flag,m=0,n=0,p=0; /flag为哪方下棋的判断变量,m,n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 收获友谊的初一语文作文
- 纺织品及针织品国际贸易风险防范考核试卷
- 森林生态系统服务流研究与应用考核试卷
- 核子仪表在核设施退役过程中放射性废物处理的应用考核试卷
- 九级语文上册第四单元提高练习5课人教新课标版
- 有色金属压延加工企业的营销网络构建与渠道管理考核试卷
- 氨纶纤维在乐器弦线中的应用考核试卷
- 山东英才学院《商业银行贷款管理》2023-2024学年第二学期期末试卷
- 凌云县2024-2025学年小升初数学高频考点模拟卷含解析
- 山东省德州市平原县2024-2025学年五年级数学第二学期期末经典试题含答案
- 居民死亡医学证明(推断)书+空白表
- 《中国药典》中药质量标准研究制定技术要求
- 2023年04月北京外国语大学管理及教辅岗位招考聘用笔试历年难易错点考题含答案带详细解析
- (全)美容师(技师)作业模拟考试题库附答案(内部题库2024版)
- 让时间陪你慢慢变富
- 变电站(发电厂)第一、二种工作票格式样本
- 生物化学第三版课后习题答案
- 新工科背景下无机化学教学法改革研究获奖科研报告
- 中国戏剧史导论
- 8.6《林黛玉进贾府》课本剧剧本
- LY/T 2005-2012国家级森林公园总体规划规范
评论
0/150
提交评论