C专业课程设计猜拳游戏.doc
《C专业课程设计猜拳游戏.doc》由会员分享,可在线阅读,更多相关《C专业课程设计猜拳游戏.doc(37页珍藏版)》请在咨信网上搜索。
课 程 设 计 说 明 书 课程名称: 高级语言程序设计 设计题目: 石头剪刀布游戏 院 部: 计算机科学和信息工程学院 学生姓名: 学 号: 专业班级:计算机科学和技术(信息技术方向) 指导老师: 6月 课 程 设 计 任 务 书 设计题目 石头剪刀布游戏 学生姓名 所在院部 计算机科学和信息工程学院 专业、班级 计算机科学和技术(信息技术方向) 设计要求: 完成一个猜拳游戏,具体要求以下: 1. 定义所需各类头文件 2. 设定游戏人数 3. 选择游戏模式 4. 选手进行比赛 5. 利用函数调用判定是否正当 6. 利用函数调用判定是否赢得比赛 7. 利用函数调用进行选手成绩排名 8. 退出 学生应完成工作: 1. 学生应认真学习参考程序,了解每个文件、每个函数和各个变量作用和意义。在此基础上深入改善程序,最终正确地运行程序。 2. 对程序进行测试,设计具体测试计划,然后依据测试计划设计测试用例,对程序进行测试。测试时应注意对多种边缘情况进行测试。 3. 完成课程设计汇报。 参考文件: 1. 梁旭等 C程序设计课程设计 电子工业出版社 2. 谭浩强 C程序设计(第四版) 清华大学出版社 工作计划: 1. 小组审题,查阅资料,进行设计前必需资料准备(3天)。 2. 把程序完整运行出来(4天)。 3. 增加改善程序(3天)。 4. 写课程设计汇报(3天)。 5. 提交课程设计汇报及答辩(1天) 任务下达日期: 年 6 月 9 日 任务完成日期: 年 6 月 22 日 指导老师(署名): 学生(署名):夏在敬 目 录 一 序言 1 二 需求分析 1 三 概要设计 1 四 具体设计 3 五 改善或增加功效模块说明 4 六 程序测试 4 七 课程设计总结 5 八 致 谢 5 九 参考文件 5 十 源程序 6 五子棋游戏 一 序言 猜拳游戏是由锤子、剪刀、布三部分组成。玩家能够在游戏区逐次猜拳,系统会给出玩家每次猜拳后提醒,显示成功或失败或是平手。 二 需求分析 1 要求 (1)用C语言实现程序设计; (2)定义各个函数分别完成不一样功效,如背景设计,判定等; (3)画出查询模块步骤图; (4)系统各个功效用函数调用形式实现; (5)界面友好(良好人机互交),程序要有注释。 2 任务 (1)定义各类头文件,变量及宏定义; (2)图形模块,设计出棋盘背景界面; (3)设定玩家操作模块和胜败判定模块; (4)画出部分模块步骤图; (5)编写代码; (6)程序分析和调试。 3 运行环境 (1)WINDOWS/XP系统 (2)TurboC2.0编译环境 4 开发工具 C语言 三 概要设计 1 模块组成图 石头剪刀布游戏 进入游戏 设置游戏 游戏说明 游戏排行榜 退出游戏 功效模块图 2 查询函数步骤图 猜拳游戏从开始到结束操作步骤系统步骤图 开始游戏 输入参与游戏人数并一次输入参有游戏玩家名 进入主页面选择游戏模式及查看排行榜 选择开始游戏 选择对游戏进行设置 选择查看游戏说明 选择查看游戏排行榜 完成后重新进入主页面 选择结束游戏 结束游戏 函数步骤图 四 具体设计 在程序开头部分定义要用到头文件,和多种常量,设定选手及游戏模式。 #include<stdio.h> /*标准输入/输出函数库*/ #include<stdlib.h> / *标准函数库*/ #include<string.h> #include<time.h> #include<windows.h> #inlcude<iostream> using namespace std; void SetColor(unsigned short ForeColor,unsigned short BackGroundColor) { HANDLE hCon = GetStdHandle (STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hCon, (ForeColor%16)|(BackgrundColor%16*16)); } void face(); void shuoming(); void shezhi(); void zuce(); void tuichu(); void paixu(); void paihangbang(); int cmp(); int N = 20,maxx = 0,M; struct PP { char name[10]; int score; }P[1000]; 输入函数,即为选手每一次出拳,用1、2、3分别表示石头、剪刀、布,经过输入数字来确定要出是哪一个,每出一次进行判定是否合理(如是否是三者中一个)并经过调用函数统计比赛结果,则经过变量统计下获胜次数,假如比赛完了主函数 void youxi() { int wan = 1; while(wan <= M) { P[wan - 1].score = 0; system("CLS"); SetColor(14,0); printf("\n\n\n\n\n\n\n\n\n\t\t\t 下面有请 "); SetColor(12,0); printf("玩家 %d",wan); SetColor(14,0); printf(" 准备比赛!"); SetColor(12,0); printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t【按任意键开始游戏】"); _sleep(); getchar(); getchar(); int a,i = 0; for(; i < N; i++) { system("CLS"); srand((unsigned)time(NULL));/*随机种子*/ int n=rand()%(3-1+1)+1;/*n为1~3之间随机数*/ SetColor(13,0); printf("\n\n\n\n\t\t\t\t每 %d 回合为一轮\n",N); SetColor(14,0); printf("\n\n\t\t\t\t\t\t\t (第 %d 回合)",i+1); SetColor(15,0); printf("\n\n\n\n\n\t请输入你要出: "); SetColor(12,0); scanf("%d",&a); //getchar(); system("CLS"); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t"); SetColor(13,0); if(a==1) { switch(n) { case 1: printf("双方全部是石头......平手\n"); break; case 2: printf("您出是石头,电脑出是剪刀,......您赢了!\n"),P[wan-1].score++; break; default: printf("您出是石头,电脑出是布......电脑赢了\n"); _sleep(1000); } } else if(a==2) { switch(n) { case 1: printf("您出是剪刀,电脑出是石头......电脑赢了\n"); break; case 2: printf("双方出全部是剪刀......平手\n"); break; default: printf("您出是剪刀,电脑出是布.....您赢了!\n"),P[wan-1].score++; _sleep(1000); } } else if(a==3) { switch(n) { case 1: printf("您出是布,电脑出是石头......您赢了!\n"),P[wan-1].score++; break; case 2: printf("您出是布,电脑出是剪刀......电脑赢了\n"); break; default: printf("双方出全部是布......平手\n"); _sleep(1000); } } else { printf("你输入有误,请重新输入!"); i--; } SetColor(13,0); printf("\n\n\t\t\t\t战斗仍未结束,同志还需努力!"); printf("\n\n\n\n\n\n\n 【按t退出目前玩家】\t 【按T退出到主页面】\t【按其它任意键继续游戏】\n"); getchar(); char c; scanf("%c",&c); if(c == 't') { break; } if(c == 'T') { face(); } } wan++; if(i >= N) { P[wan-1].score = (P[wan-1].score/N)*100; } else { P[wan - 1].score = 0; } paixu(); } system("CLS"); SetColor(12,0); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t全部对局已结束!"); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\【按任意键返回主页面】\n"); getchar(); getchar(); face(); } 五 改善或增加功效模块说明 在游戏运行过程中,没次比赛结束,此程序中全部会产升新对决界面,在屏幕上显示相对比较繁琐,所以这里用到了屏幕刷新函数system("cls");,为了让界面好看,添加了改变字体颜色函数SetColor(7,0);代码以下。 system(“CLS”); SetColor(7,0); 注意,调用此函数需要引用头文件#include<stdlib.h>/ *标准函数库*/ 六 程序测试 1 测试游戏能否正确显示期盼界面 实施程序后,显示本游戏界面,进行模式选择 图6-1模式选择界面 2 测试游戏能否正确进行每一局比赛 (1) 人机对战 人机对战 七 课程设计总结 本课程设计试验是对我进入大学以来学习程序设计语言一个检验。自己动手自己发觉和处理问题,学会了独立,自主思索,发觉了自己很多不足。平时没有掌握好知识在这次试验中根本暴漏出来,经过不停思索,不停查阅资料和上机运行,处理其中大部分问题,当然还存在部分问题灭有处理。我相信在以后学习能够处理好她们。不过,收货还是不小,我不仅对C操作有了深入掌握,还了解到了程序设计书写风格极其注释格式。 当我编写小游戏“猜拳游戏”时,一开始利用了大量函数及循环来完成,不过慢慢琢磨以后,认为这个程序能够简化,于是改变了变成思绪。当然还有不少文件读写问题,不过还是不停测试以后顺利处理了。另外一点说就是这个程序用了很多选择循环,所以对于循环控制要十分小心。 还有一点体会就是树上和老师教内容是有限,我们需要不停地靠自己去学习,向她人请教,学会利用网络和掌握更多只是,这么我们才能变出愈加好C语言程序设计。 总体来说,这次C语言程序设计试验还是比较成功,似然最终程序存在部分不足,但能去这么结果我还是比较快乐 八 致 谢 经过两个多星期努力,最终把本游戏程序改写出来,在这期间要感谢各同学对我帮助和支持,同时也很感谢冯老师对我进行细心、耐心指导,激励我对程序进行合理改善,培养了我创新意识和创新能力。 九 参考文件 [1] 张福祥. C语言程序设计[M]. 辽宁大学出版社,.1 [2] 张福祥,王萌.C语言程序设计习题解答和试验实训[M].沈阳:辽宁大学出版社,. [3] 牛莉,刘远军等.计算机等级考试教导教程[M].北京:中国铁道出版社,. 十 源程序 /*头文件 student.h*/ #include<stdio.h> /*标准输入/输出函数库*/ #include<stdlib.h> #include<string.h> #include<time.h> #include<windows.h> #include<algorithm> #include<iostream> using namespace std; void SetColor(unsigned short ForeColor,unsigned short BackGroundColor) { HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hCon,(ForeColor%16)|(BackGroundColor%16*16)); } void paixu(); void face(); void shuoming(); void shezhi(); void zhuce(); void tuichu(); void paihangbang(); void youxi(); int N = 20,M; double maxx = 0; struct PP { char name[15]; double score; } P[1000]; void youxi() { int wan = 1; while(wan <= M) { P[wan - 1].score = 0; system("CLS"); SetColor(14,0); printf("\n\n\n\n\n\n\n\n\n\t\t\t 下面有请 "); SetColor(12,0); printf("玩家 %d",wan); SetColor(14,0); printf(" 准备比赛!"); SetColor(12,0); printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t【按任意键开始游戏】"); _sleep(); getchar(); getchar(); int a,i = 0; for(; i < N; i++) { system("CLS"); srand((unsigned)time(NULL));/*随机种子*/ int n=rand()%(3-1+1)+1;/*n为1~3之间随机数*/ SetColor(13,0); printf("\n\n\n\n\t\t\t\t每 %d 回合为一轮\n",N); SetColor(14,0); printf("\n\n\t\t\t\t\t\t\t (第 %d 回合)",i+1); SetColor(15,0); printf("\n\n\n\n\n\t请输入你要出: "); SetColor(12,0); scanf("%d",&a); //getchar(); system("CLS"); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t"); SetColor(13,0); if(a==1) { switch(n) { case 1: printf("双方全部是石头......平手\n"); break; case 2: printf("您出是石头,电脑出是剪刀,......您赢了!\n"),P[wan-1].score++; break; default: printf("您出是石头,电脑出是布......电脑赢了\n"); _sleep(1000); } } else if(a==2) { switch(n) { case 1: printf("您出是剪刀,电脑出是石头......电脑赢了\n"); break; case 2: printf("双方出全部是剪刀......平手\n"); break; default: printf("您出是剪刀,电脑出是布.....您赢了!\n"),P[wan-1].score++; _sleep(1000); } } else if(a==3) { switch(n) { case 1: printf("您出是布,电脑出是石头......您赢了!\n"),P[wan-1].score++; break; case 2: printf("您出是布,电脑出是剪刀......电脑赢了\n"); break; default: printf("双方出全部是布......平手\n"); _sleep(1000); } } else { printf("你输入有误,请重新输入!"); i--; } SetColor(13,0); printf("\n\n\t\t\t\t战斗仍未结束,同志还需努力!"); printf("\n\n\n\n\n\n\n 【按t退出目前玩家】\t 【按T退出到主页面】\t【按其它任意键继续游戏】\n"); getchar(); char c; scanf("%c",&c); if(c == 't') { break; } if(c == 'T') { face(); } } wan++; if(i >= N) { P[wan-1].score = (P[wan-1].score/N)*100; } else { P[wan - 1].score = 0; } paixu(); } system("CLS"); SetColor(12,0); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t全部对局已结束!"); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\【按任意键返回主页面】\n"); getchar(); getchar(); face(); } void paixu() { for(int i = 0; i < M-1; i++) { for(int j = 0; j < M - 1 - i; j++) { if(P[j].score < P[j+1].score) { struct PP t; t = P[j]; P[j] = P[j+1]; P[j+1]= t; } } } FILE *fp; if((fp = fopen("file.txt","w")) == NULL) { printf("can not open!\n"); exit(0); } if(M < 5) for(int i = 0;i < M;i++) { if(fwrite(&P[i],sizeof(struct PP),1,fp)!= 1) printf("file write error\n"); } else for(int i = 0;i < 5;i++) { if(fwrite(&P[i],sizeof(struct PP),1,fp)!= 1) printf("file write error\n"); } fclose(fp); } void paihangbang() { paixu(); system("CLS"); SetColor(10,0); printf("\n\n\t\t\t*********************************"); printf("\n\t\t\t*\t\t\t\t*"); printf("\n\t\t\t* "); SetColor(7,0); SetColor(12,0); printf(" 游戏排行榜 "); SetColor(7,0); SetColor(10,0); printf(" *"); printf("\n\t\t\t*\t\t\t\t*"); printf("\n\t\t\t*********************************"); SetColor(7,0); SetColor(10,0); printf("\n\n\t\t-----------------------------------------------"); SetColor(11,0); printf("\n\t\t| 1 %12s ******************%5.2lf%% |",P[0].name,P[0].score); SetColor(10,0); printf("\n\t\t| |"); SetColor(12,0); printf("\n\t\t| 2 %12s ******************%5.2lf%% |",P[1].name,P[1].score); SetColor(10,0); printf("\n\t\t| |"); SetColor(15,0); printf("\n\t\t| 3 %12s ******************%5.2lf%% |",P[2].name,P[2].score); SetColor(10,0); printf("\n\t\t| |"); SetColor(14,0); printf("\n\t\t| 4 %12s ******************%5.2lf%% |",P[3].name,P[3].score); SetColor(10,0); printf("\n\t\t| |"); SetColor(13,0); printf("\n\t\t| 5 %12s ******************%5.2lf%% |",P[4].name,P[4].score); SetColor(10,0); printf("\n\t\t-----------------------------------------------"); SetColor(12,0); printf("\n\n\n\t\t\t\t\t\t\t\【按任意键返回】\n"); getchar(); getchar(); face(); } void tuichu() { system("CLS"); for(int k = 0; k < 5; k++) { for(int i = 0; i < 6; i++) { system("CLS"); SetColor(10,0); printf("\n\n\n\n\n\n\n\t\t\t感谢你此次使用!"); SetColor(11,0); printf("\n\n\n\n\n\t\t\t\t\欢迎你下次使用"); SetColor(12,0); printf("\n\n\n\n\t\t\t请稍等,正在退出"); for(int j = 0; j < i; j++) { printf("."); } _sleep(100); printf("."); } } system("CLS"); SetColor(12,0); printf("\n\n\n\n\n\n\n\n\n\t\t\t 再见!ヾ( ̄▽ ̄)Bye~Bye~、\n\n\n\n\n\n\n\n\n\n\n"); SetColor(0,0); } void face() { paixu(); system("CLS"); int X; SetColor(10,0); printf("\n\n\t\t\t*********************************"); printf("\n\t\t\t*\t\t\t\t*"); printf("\n\t\t\t* "); SetColor(7,0); SetColor(12,0); printf("欢迎进入猜拳游戏!"); SetColor(7,0); SetColor(10,0); printf(" *"); printf("\n\t\t\t*\t\t\t\t*"); printf("\n\t\t\t*********************************"); SetColor(7,0); SetColor(10,0); printf("\n\n\t\t-----------------------------------------------"); SetColor(11,0); printf("\n\t\t| 开始********************************1 |"); SetColor(10,0); printf("\n\t\t| |"); SetColo- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业课程 设计 猜拳 游戏
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文