




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成 绩 评 定 表学生姓名郭雨佳班级学号1409060103专 业光电信息科学与工程课程设计题目五子棋小游戏评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院理学院专 业光电信息科学与工程学生姓名郭雨佳班级学号1409060103课程设计题目五子棋小游戏实践教学要求与任务:要求:1、进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。2、针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。3、掌握C语言的编程技巧和上机调试程序的方法。4、掌握程序设计中的常用算法。任务:1、联系已学过的内容,巩固所学的理论,增强独立工作能力。2、通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。3、通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。工作计划与进度安排:第一周:查阅资料 、算法设计第二周: 第一、二天:算法设计 第三、四天:程序实现 第五天:答辩指导教师: 201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日摘要C语言是国际上广泛流行的计算机高级语言,它适合作为系统描述语言,即可以用来编写系统软件,也可以编写应用软件。在早期的操作系统软件主要是汇编语言编写的,但汇编语言依赖于计算机硬件程序的可读性和可移植性级语言,而C语言兼具一般语言优点还能克服其他语言的缺点。五子棋是一种两人对弈的纯策略型棋类游戏,应用C语言编写程序可以在计算机上实现二人对弈五子棋功能。二人对弈五子棋程序由图像生成、光标移动与落子、判断胜负和系统帮助等子程序构成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。程序通过棋盘和棋子图像生成、二人移子与落子和判断胜负等功能的实现,在计算机上实现二人五子棋对弈。同时也对其他系统游戏的开发设计有一定的借鉴作用。关键词:C语言;数组;结构体;全局变量;按键处理目录1引言11.1五子棋介绍11.2程序需求分析11.3编程方案22五子棋游戏的设计与实现22.1模块图22.2流程图33对应程序:44运行结果截屏:115总结146参考文献14211引言1.1五子棋介绍五子棋是起源于中国古代的传统黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修生养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源远流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。他是东西文化的交流点,是古今哲理的结晶。1.2程序需求分析根据功能需求将程序分为图形显示、玩家控制、胜负判断三个模块,以下分析各模块的需求。图形显示模块:游戏开始后要求棋盘生成为15*15,游戏运行中要求显示已落棋子情况。玩家控制模块:游戏过程中玩家需移动光标选择落子。胜负判断模块:一旦某一颜色棋子出现物资连续,终止游戏,弹出改色游戏玩家胜出。1.3编程方案棋子的移动与落子在键盘上按键控制,本程序选取按键为、和空挡键。分别代表上移、左移、下移、右移和落子。在光标移动过程中,光标按照玩家按键移动;在玩家按下落子键后,程序自动调用棋子显示子程序和判断胜负子程序。2五子棋游戏的设计与实现五子棋游戏2.1模块图胜负判断图形显示玩家控制 是否有五子黑白棋落子棋盘的拼成2.2流程图开始画15*15界面开始游戏白子落子白子落子5? N白子获胜?输出白方获胜! Y Y黑子落子 N黑子落子 黑子获胜?输出黑方获胜! Y N白子落子 输出平局!棋盘铺满? YN结束3对应程序:#include #include #include #include #define MAXIMUS 15 int pMAXIMUSMAXIMUS;char buffMAXIMUS*2+1MAXIMUS*4+3;int Cx,Cy;int Now;int wl,wp;char* showText;int count;char* Copy(char* strDest,const char* strSrc)char* strDestCopy = strDest;while (*strSrc!=0)*strDest+=*strSrc+;return strDestCopy;void Initialize()int i,j;showText=;count=0;for(i=0;iMAXIMUS;i+)for(j=0;jMAXIMUS;j+)pij=0;Cx=Cy=MAXIMUS/2;Now=1;char* getStyle(int i,int j)if(pij=1)return ;else if(pij=2)return ;else if(i=0&j=0)return ;else if(i=MAXIMUS-1&j=0)return ;else if(i=MAXIMUS-1&j=MAXIMUS-1)return ;else if(i=0&j=MAXIMUS-1)return ;else if(i=0)return ;else if(i=MAXIMUS-1)return ;else if(j=0)return ;else if(j=MAXIMUS-1)return ;return ;char* getCurse(int i,int j)if(i=Cx)if(j=Cy)return ;else if (j=Cy+1)return ;else if(i=Cx+1)if(j=Cy)return ;else if (j=Cy+1)return ;return ;void write(char* c)Copy(buffwl+wp,c);wp+=strlen(c);void ln()wl+=1;wp=0;void Display()int i,l=strlen(showText);int Offset=MAXIMUS*2+2-l/2;if(Offset%2=1)Offset-;Copy(buffMAXIMUS+Offset,showText);if(l%2=1)*(buffMAXIMUS+Offset+l)=0x20;system(cls);for(i=0;iMAXIMUS*2+1;i+)printf(%s,buffi);if(iMAXIMUS*2)printf(n);void Print()int i,j;wl=0;wp=0;for(j=0;j=MAXIMUS;j+)for(i=0;i=MAXIMUS;i+)write(getCurse(i,j);if(j=0|j=MAXIMUS)if(i!=MAXIMUS)write();elseif(i=0|i=MAXIMUS-1)write();else if(i!=MAXIMUS)write();if(j=MAXIMUS)break;ln();write();for(i=0;iMAXIMUS;i+)write(getStyle(i,j);if(i!=MAXIMUS-1)if(j=0|j=MAXIMUS-1)write();elsewrite();ln();Display();int Put()if(pCxCy=0)pCxCy=Now;return 1;elsereturn 0;int Check()intw=1,x=1,y=1,z=1,i; for(i=1;i5;i+)if(Cy+iMAXIMUS&pCxCy+i=Now)w+;else break;for(i=1;i0&pCxCy-i=Now)w+;else break;if(w=5)return Now;for(i=1;i5;i+)if(Cx+iMAXIMUS&pCx+iCy=Now)x+;else break;for(i=1;i0&pCx-iCy=Now)x+;else break;if(x=5)return Now;for(i=1;i5;i+)if(Cx+iMAXIMUS&Cy+iMAXIMUS&pCx+iCy+i=Now)y+;else break;for(i=1;i0&Cy-i0&pCx-iCy-i=Now)y+;else break;if(y=5)return Now;for(i=1;i5;i+)if(Cx+i0&pCx+iCy-i=Now)z+;else break;for(i=1;i0&Cy+i=5)return Now; return 0; int RunGame()int input;int victor;Initialize();while(1) Print();input=getch();if(input=27)exit(0);else if(input=0x20) if(Put()victor=Check();Now=3-Now; count+;if(victor=1) showText=白方获得了胜利!;Print();if(getch()=0xE0)getch();return Now;else if(victor=2) showText=黑方获得了胜利!;Display();if(getch()=0xE0)getch();return Now;else if(count=MAXIMUS*MAXIMUS) showText=平局!;Display();if(getch()=0xE0)getch();return 0;else if(input=0xE0) input=getch();switch(input) case 0x4B:/Cx-;break;case 0x48:Cy-;break;case 0x4D:Cx+;break;case 0x50:Cy+;break;if(Cx0)Cx=MAXIMUS-1; if(CyMAXIMUS-1)Cx=0;if(CyMAXIMUS-1)Cy=0;int main()system(title 简易五子棋 1409060103 郭雨佳);system(mode con cols=63 lines=32);system(color A2f);while(1)RunGame();4运行结果截屏:5总结C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,还可以开发创造能力、培养沟通能力。这次实习时间虽然仅有一个星期,但确实使我受益非浅。给我们提供了一个既动手又动脑,独立实践的机会。通过实习我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境。本次课程设计,使我对五子棋设计的基本过程的设计方法、步骤、思路,有一定的了解与认识。在课程设计过程中,我基本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 哈尔滨剑桥学院《税收筹划与管理》2023-2024学年第二学期期末试卷
- 科尔沁艺术职业学院《环境资源保护法》2023-2024学年第二学期期末试卷
- 重庆应用技术职业学院《电子商务基础与应用》2023-2024学年第二学期期末试卷
- 信阳农林学院《计算机专业英语》2023-2024学年第二学期期末试卷
- 内江职业技术学院《体育健身健美运动》2023-2024学年第二学期期末试卷
- 追梦的孩子课件
- 2025年江苏南京文天水利规划设计研究院有限公司招聘笔试参考题库含答案解析
- 2025年浙江省金华智尚人才开发有限公司招聘笔试参考题库附带答案详解
- 2025年陕西省技术进步投资有限责任公司招聘笔试参考题库附带答案详解
- 妇科病患者的健康教育
- 做最勇敢的自己
- 【MOOC】学术交流英语-东南大学 中国大学慕课MOOC答案
- 工商企业管理毕业论文范文(4篇)
- 头脑特工队-Inside-Out中英文字幕对照
- 近五年重庆中考数学真题及答案2024
- 山西众辉电力服务公司历年真题
- GB/T 24218.1-2009纺织品非织造布试验方法第1部分:单位面积质量的测定
- 容重器测量结果的不确定度评定
- 试生产安全条件检查
- 小学英语自然拼读课件
- 1812年序曲 (5)
评论
0/150
提交评论