




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 说 明 书课程名称: 高级语言程序设计 设计题目: 石头剪刀布游戏 院 部: 计算机科学与信息工程学院 学生姓名: 学 号: 专业班级:计算机科学与技术(信息技术方向)指导教师: 2015年 6月课 程 设 计 任 务 书设计题目石头剪刀布游戏学生姓名所在院部计算机科学与信息工程学院专业、班级计算机科学与技术(信息技术方向)设计要求:完成一个猜拳游戏,具体要求如下: 1. 定义所需各类头文件 2. 设定游戏人数 3. 选择游戏模式 4. 选手进行比赛 5. 利用函数调用判断是否合法 6. 利用函数调用判断是否赢得比赛 7. 利用函数调用进行选手成绩排名 8. 退出学生应完成的工作:1. 学生应认真学习参考程序,理解每个文件、每个函数以及各个变量的作用和意义。在此基础上进一步改进程序,最后正确地运行程序。2. 对程序进行测试,设计详细的测试计划,然后根据测试计划设计测试用例,对程序进行测试。测试时应注意对各种边缘情况进行测试。3. 完成课程设计报告。参考文献:1. 梁旭等 C程序设计课程设计 电子工业出版社 20112. 谭浩强 C程序设计(第四版) 清华大学出版社2010工作计划:1. 小组审题,查阅资料,进行设计前的必要资料准备(3天)。 2. 把程序完整运行出来(4天)。 3. 增加改进程序(3天)。 4. 写课程设计报告(3天)。 5. 提交课程设计报告及答辩(1天)任务下达日期:2015 年 6 月 9 日 任务完成日期:2015 年 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)WINDOWS2000/XP系统(2)TurboC2.0编译环境4 开发工具C语言三 概要设计1 模块组成图石头剪刀布游戏进入游戏设置游戏游戏说明游戏排行榜退出游戏 功能模块图2 查询函数流程图猜拳游戏从开始到结束的操作步骤的系统流程图开始游戏输入参与游戏的人数并一次输入参有游戏的玩家名进入主页面选择游戏模式及查看排行榜选择开始游戏选择对游戏进行设置选择查看游戏说明选择查看游戏排行榜完成后重新进入主页面选择结束游戏结束游戏 函数流程图四 详细设计在程序的开头部分定义要用到的头文件,以及各种常量,设定选手及游戏模式。#include /*标准输入/输出函数库*/#include / *标准函数库*/#include#include#include#inlcudeusing namespace std;void SetColor(unsigned shortForeColor,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 PPchar name10;int score;P1000;输入函数,即为选手每一次出拳,用1、2、3分别表示石头、剪刀、布,通过输入数字来确定要出的是哪一个,每出一次进行判断是否合理(如是否是三者中的一个)并通过调用函数记录比赛的结果,则通过变量记录下获胜的次数,如果比赛完了主函数void youxi() int wan = 1; while(wan = M) Pwan - 1.score = 0; system(CLS); SetColor(14,0); printf(nnnnnnnnnttt 下面有请 ); SetColor(12,0); printf(玩家 %d,wan); SetColor(14,0); printf( 准备比赛!); SetColor(12,0); printf(nnnnnnnnnnnttttttt【按任意键开始游戏】); _sleep(2000); getchar(); getchar(); int a,i = 0; for(; i = N) Pwan-1.score = (Pwan-1.score/N)*100; else Pwan - 1.score = 0; paixu(); system(CLS); SetColor(12,0); printf(nnnnnnnnnntttt所有的对局已结束!); printf(nnnnnnnnnnttttttt【按任意键返回主页面】n); getchar(); getchar(); face();五 改进或增加功能模块说明在游戏运行过程中,没次比赛结束,此程序中都会产升新的对决界面,在屏幕上显示相对比较繁琐,因此这里用到了屏幕刷新函数system(cls);,为了让界面好看,添加了改变字体颜色的函数SetColor(7,0);代码如下。system(“CLS”);SetColor(7,0); 注意,调用此函数需要引用头文件#include/ *标准函数库*/六 程序测试1 测试游戏能否正确显示期盼界面执行程序后,显示本游戏的界面,进行模式选择图6-1模式选择界面2 测试游戏能否正确进行每一局的比赛(1) 人机对战 人机对战七 课程设计总结本课程设计的实验是对我进入大学以来学习程序设计语言的一个检验。自己动手自己发现和解决问题,学会了独立,自主的思考,发现了自己的许多不足。平时没有掌握好的知识在这次试验中彻底暴漏出来,经过不断的思考,不断的查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题灭有解决。我相信在以后的学习能够解决好他们。但是,收货还是不小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计的书写风格极其注释的格式。当我编写小游戏“猜拳游戏”时,一开始运用了大量的函数及循环来完成,但是慢慢琢磨之后,觉得这个程序可以简化,于是改变了变成思路。当然还有不少文件的读写问题,不过还是不断测试之后顺利解决了。另外一点说的就是这个程序用了很多的选择循环,因此对于循环的控制要十分小心。还有一点体会就是树上和老师教的内容是有限的,我们需要不断地靠自己去学习,向他人请教,学会利用网络和掌握更多的只是,这样我们才能变出更好的C语言程序设计。总体来说,这次C语言程序设计实验还是比较成功的,似然最终程序存在一些不足,但能去的这样的结果我还是比较高兴的八 致 谢 经过两个多星期的努力,终于把本游戏程序改写出来,在这期间要感谢各同学对我帮助和支持,同时也非常感谢冯老师对我进行细心、耐心的指导,鼓励我对程序进行合理的改进,培养了我的创新意识和创新能力。九 参考文献1 张福祥. C语言程序设计M. 辽宁大学出版社,2008.12 张福祥,王萌C语言程序设计习题解答与实验实训M沈阳:辽宁大学出版社,20083 牛莉,刘远军等计算机等级考试辅导教程M北京:中国铁道出版社,2008 十 源程序/*头文件 student.h*/#include /*标准输入/输出函数库*/#include#include#include#include#include#includeusing 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 name15; double score; P1000;void youxi() int wan = 1; while(wan = M) Pwan - 1.score = 0; system(CLS); SetColor(14,0); printf(nnnnnnnnnttt 下面有请 ); SetColor(12,0); printf(玩家 %d,wan); SetColor(14,0); printf( 准备比赛!); SetColor(12,0); printf(nnnnnnnnnnnttttttt【按任意键开始游戏】); _sleep(2000); getchar(); getchar(); int a,i = 0; for(; i = N) Pwan-1.score = (Pwan-1.score/N)*100; else Pwan - 1.score = 0; paixu(); system(CLS); SetColor(12,0); printf(nnnnnnnnnntttt所有的对局已结束!); printf(nnnnnnnnnnttttttt【按任意键返回主页面】n); getchar(); getchar(); face();void paixu() for(int i = 0; i M-1; i+) for(int j = 0; j M - 1 - i; j+) if(Pj.score Pj+1.score) struct PP t; t = Pj; Pj = Pj+1; Pj+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(&Pi,sizeof(struct PP),1,fp)!= 1) printf(file write errorn); else for(int i = 0;i 5;i+) if(fwrite(&Pi,sizeof(struct PP),1,fp)!= 1) printf(file write errorn); fclose(fp);void paihangbang() paixu(); system(CLS); SetColor(10,0); printf(nnttt*); printf(nttt*tttt*); printf(nttt* ); SetColor(7,0); SetColor(12,0); printf( 游戏排行榜 ); SetColor(7,0); SetColor(10,0); printf( *); printf(nttt*tttt*); printf(nttt*); SetColor(7,0); SetColor(10,0); printf(nntt-); SetColor(11,0); printf(ntt| 1 %12s *%5.2lf% |,P0.name,P0.score); SetColor(10,0); printf(ntt| |); SetColor(12,0); printf(ntt| 2 %12s *%5.2lf% |,P1.name,P1.score); SetColor(10,0); printf(ntt| |); SetColor(15,0); printf(ntt| 3 %12s *%5.2lf% |,P2.name,P2.score); SetColor(10,0); printf(ntt| |); SetColor(14,0); printf(ntt| 4 %12s *%5.2lf% |,P3.name,P3.score); SetColor(10,0); printf(ntt| |); SetColor(13,0); printf(ntt| 5 %12s *%5.2lf% |,P4.name,P4.score); SetColor(10,0); printf(ntt-); SetColor(12,0); printf(nnnttttttt【按任意键返回】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(nnnnnnnttt感谢你本次的使用!); SetColor(11,0); printf(nnnnntttt欢迎你下次使用); SetColor(12,0); printf(nnnnttt请稍等,正在退出); for(int j = 0; j i; j+) printf(.); _sleep(100); printf(.); system(CLS); SetColor(12,0); printf(nnnnnnnnnttt 再见!()ByeBye、nnnnnnnnnnn); SetColor(0,0);void face() paixu(); system(CLS); int X; SetColor(10,0); printf(nnttt*); printf(nttt*tttt*); printf(nttt* ); SetColor(7,0); SetColor(12,0); printf(欢迎进入猜拳游戏!); SetColor(7,0); SetColor(10,0); printf( *); printf(nttt*tttt*); printf(nttt*); SetColor(7,0); SetColor(10,0); printf(nntt-); SetColor(11,0); printf(ntt| 开始*1 |); SetColor(10,0); printf(ntt| |); SetColor(12,0); printf(ntt| 设置*2 |); SetColor(10,0); printf(ntt| |); SetColor(15,0); printf(ntt| 说明*3 |); SetColor(10,0); printf(ntt| |); SetColor(14,0); printf(ntt| 排行榜*4 |); SetColor(10,0); printf(ntt| |); SetColor(13,0); printf(ntt| 退出*0 |); SetColor(10,0); printf(ntt-); SetColor(9,0); printf(nntttttt请出入你的选择 : ); SetColor(4,0); scanf(%d,&X); SetColor(7,0); if(X = 2) shezhi(); else if(X = 3) shuoming(); else if(X = 0) tuichu(); else if(X = 4) paihangbang(); else if(X = 1) youxi(); else system(CLS); SetColor(12,0); printf(nnnnnnnnnttt你的输入有误,请重新输入!nnnnnnnnnnn); _sleep(1000); face(); void shuoming() system(CLS); SetColor(12,0); printf(nnntttt猜拳游戏的说明); printf(nnnnt猜拳游戏是由锤子、剪刀、布三部分组成。); printf(nnt 1、游戏区:玩家可以在游戏区逐次猜拳,系统会给出玩家每次猜拳); printf(nt后的提示,显示成功或者失败或者是平手。每轮初始默认为 20 次!); printf(nnt 2、排行榜:当玩家成功完成一轮猜拳游戏后,可通过和排行榜中相应); printf(nt记录的比较判断玩家是否可以进入排行榜,进入排行榜的资格为游戏成绩); printf(nt在前五名的玩家。); printf(nnt 3、设置:通过设置,玩家可以更改每轮为多少次!来设置不同每轮的nt次数!); printf(nnnnttttt【按任意键进入下一页】); SetColor(7,0); getchar(); getchar(); getchar(); system(CLS); SetColor(12,0); printf(nnntttt猜拳游戏的说明); printf(nnnt); printf(nnt 4、本游戏由锤子、剪刀、布三部分组成。锤子用1来代替,剪刀用); printf(nt2来代替,布用3来代替,每轮初始默认为 20 次!); SetColor(13,0); printf(nnnttt 锤子* 1); SetColor(9,0); printf(nnttt 剪刀* 2); SetColor(10,0); printf(nnttt 布* 3); SetColor(12,0); printf(nnnntttttt【按任意键返回】); SetColor(7,0); getchar(); face();void shezhi() system(CLS); SetColor(10,0); printf(nnnnntttt你选择对游戏设置!); SetColor(9,0); printf(nnnnntt游戏原来的每轮是 %d 次,N); printf(nnttttt你要将每轮改为几次?); printf(nntt 请输入你要更改的次数: ); SetColor(12,0); scanf(%d,&N); SetColor(9,0); system(CLS); printf(nnnnnnnttt你已将每轮改为 %d 次!,N); printf(nnnntttt 希望你在游戏中玩的开心!); SetColor(12,0); printf(nnnnnnnnttttttt【输入任意键返回】); getchar(); getchar();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数控机床智能化升级对机器人制造业的影响分析
- 一年级数学(上)计算题专项练习汇编
- 肉食品加工厂可行性研究报告
- 自考专业(计算机信息管理)常考点试卷含完整答案详解【名校卷】
- 中考数学总复习《旋转》考试历年机考真题集及完整答案详解一套
- 聚焦2025:煤炭清洁化利用技术产业技术创新与产业升级研究报告
- 主管护师(中级)真题及答案详解【考点梳理】
- 聚焦2025年农产品深加工产业园区建设项目产业链分析报告
- 农业生产三农村传统杂技保护方案
- 注册公用设备工程师复习提分资料【考试直接用】附答案详解
- 2025年公安局招聘警务辅助人员考试笔试试题(含答案)
- 中学物理教学技能课件
- 工厂车间设备维修维护管理手册
- 2025年小学体育教师招聘教材教法考试试题及答案
- 开学食品安全知识培训课件
- 小学学生课外阅读兴趣调查问卷
- 基孔肯雅热防控知识宣讲课件
- 2024年陕西华山旅游集团有限公司招聘真题
- 肥胖儿童的运动干预 4
- 2025年老司机三力测试题及答案
- 海洋浮标工职业技能鉴定经典试题含答案
评论
0/150
提交评论