五子棋小游戏光电信息科学与工程c语言程序设计.doc
《五子棋小游戏光电信息科学与工程c语言程序设计.doc》由会员分享,可在线阅读,更多相关《五子棋小游戏光电信息科学与工程c语言程序设计.doc(20页珍藏版)》请在咨信网上搜索。
成 绩 评 定 表 学生姓名 郭雨佳 班级学号 1409060103 专 业 光电信息科学与工程 课程设计题目 五子棋小游戏 评 语 组长签字: 成绩 日期 20 年 月 日 课程设计任务书 学 院 理学院 专 业 光电信息科学与工程 学生姓名 郭雨佳 班级学号 1409060103 课程设计题目 五子棋小游戏 实践教学要求与任务: 要求: 1、进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。 2、针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 3、掌握C语言的编程技巧和上机调试程序的方法。 4、掌握程序设计中的常用算法。 任务: 1、联系已学过的内容,巩固所学的理论,增强独立工作能力。 2、通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 3、通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 工作计划与进度安排: 第一周:查阅资料 、算法设计 第二周: 第一、二天:算法设计 第三、四天:程序实现 第五天:答辩 指导教师: 201 年 月 日 专业负责人: 201 年 月 日 学院教学副院长: 201 年 月 日 摘要 C语言是国际上广泛流行的计算机高级语言,它适合作为系统描述语言,即可以用来编写系统软件,也可以编写应用软件。在早期的操作系统软件主要是汇编语言编写的,但汇编语言依赖于计算机硬件程序的可读性和可移植性级语言,而C语言兼具一般语言优点还能克服其他语言的缺点。 五子棋是一种两人对弈的纯策略型棋类游戏,应用C语言编写程序可以在计算机上实现二人对弈五子棋功能。二人对弈五子棋程序由图像生成、光标移动与落子、判断胜负和系统帮助等子程序构成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。程序通过棋盘和棋子图像生成、二人移子与落子和判断胜负等功能的实现,在计算机上实现二人五子棋对弈。同时也对其他系统游戏的开发设计有一定的借鉴作用。 关键词:C语言;数组;结构体;全局变量;按键处理 目录 1引言 1 1.1五子棋介绍 1 1.2程序需求分析 1 1.3编程方案 2 2五子棋游戏的设计与实现 2 2.1模块图 2 2.2流程图 3 3对应程序: 4 4运行结果截屏: 11 5总结 14 6参考文献 14 16 1引言 1.1五子棋介绍 五子棋是起源于中国古代的传统黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修生养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源远流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。他是东西文化的交流点,是古今哲理的结晶。 1.2程序需求分析 根据功能需求将程序分为图形显示、玩家控制、胜负判断三个模块,以下分析各模块的需求。 图形显示模块:游戏开始后要求棋盘生成为15*15,游戏运行中要求显示已落棋子情况。 玩家控制模块:游戏过程中玩家需移动光标选择落子。 胜负判断模块:一旦某一颜色棋子出现物资连续,终止游戏,弹出改色游戏玩家胜出。 1.3编程方案 棋子的移动与落子在键盘上按键控制,本程序选取按键为↑、→、↓、←和空挡键。分别代表上移、左移、下移、右移和落子。在光标移动过程中,光标按照玩家按键移动;在玩家按下落子键后,程序自动调用棋子显示子程序和判断胜负子程序。 2五子棋游戏的设计与实现 五子棋游戏 2.1模块图 胜负判断 图形显示 玩家控制 是否有五子 黑白棋落子 棋盘的拼成 2.2流程图 开始 画15*15界面 开始游戏 白子落子 白子落子<5? N 白子获胜? 输出白方获胜! Y Y 黑子落子 N 黑子落子 黑子获胜? 输出黑方获胜! Y N 白子落子 输出平局! 棋盘铺满? Y N 结束 3对应程序: #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <string.h> #define MAXIMUS 15 int p[MAXIMUS][MAXIMUS]; char buff[MAXIMUS*2+1][MAXIMUS*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;i<MAXIMUS;i++) { for(j=0;j<MAXIMUS;j++) { p[i][j]=0; } } Cx=Cy=MAXIMUS/2; Now=1; } char* getStyle(int i,int j) { if(p[i][j]==1) return "●"; else if(p[i][j]==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(buff[wl]+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(buff[MAXIMUS]+Offset,showText); if(l%2==1) { *(buff[MAXIMUS]+Offset+l)=0x20; } system("cls"); for(i=0;i<MAXIMUS*2+1;i++){ printf("%s",buff[i]); if(i<MAXIMUS*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(" "); } else { if(i==0||i==MAXIMUS-1) write("┃"); else if(i!=MAXIMUS) write("│"); } } if(j==MAXIMUS) { break; } ln(); write(" "); for(i=0;i<MAXIMUS;i++) { write(getStyle(i,j)); if(i!=MAXIMUS-1) { if(j==0||j==MAXIMUS-1) { write("━"); } else { write("—"); } } } ln(); } Display(); } int Put(){ if(p[Cx][Cy]==0) { p[Cx][Cy]=Now; return 1; } else { return 0; } } int Check(){ intw=1,x=1,y=1,z=1,i; for(i=1;i<5;i++)if(Cy+i<MAXIMUS&&p[Cx][Cy+i]==Now)w++;else break; for(i=1;i<5;i++)if(Cy-i>0&&p[Cx][Cy-i]==Now)w++;else break; if(w>=5)return Now; for(i=1;i<5;i++)if(Cx+i<MAXIMUS&&p[Cx+i][Cy]==Now)x++;else break; for(i=1;i<5;i++)if(Cx-i>0&&p[Cx-i][Cy]==Now)x++;else break; if(x>=5)return Now; for(i=1;i<5;i++)if(Cx+i<MAXIMUS&&Cy+i<MAXIMUS&&p[Cx+i][Cy+i]==Now)y++;else break; for(i=1;i<5;i++)if(Cx-i>0&&Cy-i>0&&p[Cx-i][Cy-i]==Now)y++;else break; if(y>=5)return Now; for(i=1;i<5;i++)if(Cx+i<MAXIMUS&&Cy-i>0&&p[Cx+i][Cy-i]==Now)z++;else break; for(i=1;i<5;i++)if(Cx-i>0&&Cy+i<MAXIMUS&&p[Cx-i][Cy+i]==Now)z++;else break; if(z>=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(Cx<0)Cx=MAXIMUS-1; if(Cy<0)Cy=MAXIMUS-1; if(Cx>MAXIMUS-1)Cx=0; if(Cy>MAXIMUS-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语言的了解,熟悉了其环境。 本次课程设计,使我对五子棋设计的基本过程的设计方法、步骤、思路,有一定的了解与认识。在课程设计过程中,我基本能按照规定的程序进行,先对五子棋的设计收集,调查有关资料,期间进行方案的几次修改,最后确定方案。设计方案确定后,再用c语言实现了可视化的五子棋算法。整个过程周密有序,对我按照高质量完成课程设计十分有利。 程序设计达到了预期的目的。程序设计完成后我觉得不仅动手能力有所提高,更重要的是激发了我对课程的兴趣,并能够运用其解决一些实际问题。 6参考文献 1谭浩强. C程序设计(第四版).清华大学出版社.2010年6月 2谭浩强.C程序设计(第四版)学习辅导.清华大学出版社.2010年七月 3百度文库目 录 第一章 总论 1 一、项目概况 1 二、项目提出的理由与过程 6 三、项目建设的必要性 8 四、项目的可行性 12 第二章 市场预测 15 一、市场分析 15 二、市场预测 16 三、产品市场竞争力分析 19 第三章 建设规模与产品方案 22 一、建设规模 22 二、产品方案 22 三、质量标准 22 第四章 项目建设地点 25 一、项目建设地点选择 25 二、项目建设地条件 25 第五章 技术方案、设备方案和工程方案 28 一、技术方案 28 二、产品特点 30 三、主要设备方案 32 四、工程方案 32 第六章 原材料与原料供应 35 一、原料来源及运输方式 35 二、燃料供应与运输方式 35 第七章 总图布置、运输、总体布局与公用辅助工程 37 一、总图布置 37 二、 运输 38 三、总体布局 38 四、公用辅助工程 39 第八章 节能、节水与安全措施 44 一、主要依据及标准 44 二、节能 44 三、节水 45 四、消防与安全 45 第九章 环境影响与评价 47 一、法规依据 47 二、项目建设对环境影响 48 三、环境保护措施 48 四、环境影响评价 49 第十章 项目组织管理与运行 50 一、项目建设期管理 50 二、项目运行期组织管理 52 第十一章 项目实施进度 55 第十二章 投资估算和资金筹措 56 一、投资估算 56 二、资金筹措 58 第十三章 财务评价与效益分析 61 一、项目财务评价 61 二、财务评价结论 65 三、社会效益 68 四、生态效益 68 第十四章 风险分析 70 一、主要风险分析识别 70 二、风险程度分析及防范风险的措施 70 第十五章 招标方案 72 一、招标范围 72 二、招标组织形式 72 三、招标方式 72 第十六章 结论与建议 74 一、可行性研究结论 74 二、建议 75 附 件 77 一、附表 77 二、附件 77 三、附图 77- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 小游戏 光电 信息科学 工程 语言程序设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文