猜数字游戏C语言课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
,2014— 2015学年第 2 学期,
题 目: 猜数字游戏
学 院: 机械工程学院
班 级: 机械1310班
学 号: 1303090190 姓 名: 杨晨 指导教师: 罗涛华 时 间:起 2015年5月25日止2015年5月31日
一、 课程设计基本信息
课程代码:05190124
课程名称:计算机基础课程设计
课程英文名称: Computer-based Course Design
课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群
课程面向专业:食品科学与工程学院、机械工程学院、电气与电子工程学院、土建学院、动物科学与营养工程学院、化学与环境工程学院、工商管理类、国际经济与贸易、旅游管理、金融学、行政管理、汉语言文学、英语、护理学、康复治疗专业、生物科学类、制药工程、制药工程(生物制药)、药物制剂、物流管理
课程类型:必修课
先修课程:大学计算机基础通识选修课程、程序设计课程
学分:1 总学时:1周
二、 课程设计目标
掌握所学语言程序设计的方法,熟悉 所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能:
1(培养查阅参考
资料
新概念英语资料下载李居明饿命改运学pdf成本会计期末资料社会工作导论资料工程结算所需资料清单
、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。
2(通过对所选题目方案分析比较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。
3(系统设计编程简练,可用,功能全面,并有一定的容错能力。用户界面良好,有较好的输出功能。在完成课题基本要求后,具有创新型设计,具有一定的实用价值。
4(根据个人的设计调试过程,撰写设计报告。
三、 课程设计内容
熟练掌握所学语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
四、 课程设计要求
1. 要求每个同学都要认真对待,积极参与。
2. 课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同时填写并完
成《课程设计报告册》。
3. 不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计中完全未参
与的将作不及格处理。
?1?
五、 考核方式
指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,百分制计算,具体考核
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
主要包含以下几个部分:
1. 程序运行情况20分
2. 程序功能的完善程度10分
3. 程序结构的合理性10分
4. 对问题的答辩情况20分
5. 创新情况10分
6. 学生的工作态度与独立工作能力10分
7. 设计报告内容的
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
性20分
备注:
1. 按
规定
关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定
时间填写各阶段文档,学习态度加5分
2. 设计报告内容雷同扣40分,无调试过程问题分析扣10分,无参考文献扣10分
3. 源程序无注释则在程序结构合理性扣10分
六、 课程设计主要参考资料
1. 谭浩强著. C程序设计(第3版). 北京:清华大学出版社,2005.7
2. 刘光蓉、汪靖、陆登波主编. C程序设计实验与实践教程. 北京:清华大学出版社,2011.2
3. 游洪跃主编. C语言程序设计实验与课程设计教程. 北京:清华大学出版社,2011.5
Van Der Linden著,徐波 译. C 专家编程(C编程语言经典之作) . 北4. (美) Perter
京:人民邮电出版社,2008.2
5. 凯尼格 著,高巍 译. C陷阱与缺陷. 北京:人民邮电出版社,2008.2
6. Mark de Berg等著,邓俊辉译,《计算几何-算法与应用(第3版)》,清华大学出版社,2009年8月
7. 杨克昌编著,《计算机程序设计典型例题精解》,国防科技大学大学出版社,1999年3月
七、 课程设计计划安排
时 间 任 务
选择课程设计题目,分析课题的要求,确定设计方案,完成报告册中课程设计前一周 “课程设计概述”
课程设计第1天 按功能模块编写详细设计说明,完成报告册中“总体设计” 课程设计第2天 编写程序、调试程序
课程设计第3天 编写程序、调试程序,完成报告册中“详细设计” 课程设计第4天 调试程序,完成报告册中“调试分析过程”
完成报告册中“总结”、“参考文献”、“课程设计评审表”部分内课程设计第5天 容,提交课程设计报告、源程序、面试或答辩
?2?
一、课程设计概述
课计算机随机生成一个各位数字不重复的四位数,系统根程据玩家输入的数字给出提示信息: A--表示位置与数字设均正确的个数; B--表示数字正确但位置不正确的个计数。玩家根据提示调整输入,如果玩家输入超过八次仍问不成功,游戏自动结束。
题
描
述
设1. 主函数实现正整数的随机产生,主菜单的显示(图计18.1)
要2. 编写一函数实现帮助信息的输出(图18.2) 求 3. 编写一函数控制比较的次数和信息的输出。当玩家输
入次数不超过8时,每次将玩家输入的数字和随机数
依次进行比较,如果匹配,则输出“You Win ~”,
否则输出提示信息。
设掌握结构化程序设计的主体思想,以自顶向下逐步求精计的方法编制程序解决一些实际的问题,为将来编写软件目积累一些典型的案例处理经验。
的
?3?
开操作系统:Windows7
发软件环境:Microsoft Visual C++ 6.0 环
境
二、总体设计(1)
?4?
猜数字游戏软件的总体目标是按照特定游戏规则为用
户提供一个方便友好的游戏界面,同时给用户提供排行
榜的功能使用户能够按照特定的目标提高自己的成绩,
并且提供相应的帮助功能。游戏规则如下。
?游戏软件随机产生4个数字,但不显示,给用户提
供输入提示符,让用户猜4个数字的值和位置顺序。如
果数字值和位置顺序均正确,则猜数字成功。
?玩家有8次猜数字的机会,如果在8次之内仍末猜
出正确的数字值和数字位置顺序,则提示用户游戏失系败。
?一旦玩家在8次的次数限制内猜出正确的数字值和统
位置顺序,则赢得游戏。
功
能 本游戏软件需要实现以下一些基本功能。
?游戏区:玩家可以在游戏区逐次猜数字,系统给需
出玩家每次猜数字后的提示,包括数值、位置均正确的求
数字个数和数值正确但位置不正确的数字个数。 分 ?帮助:玩家通过帮助功能了解游戏规则。
?退出:玩家想结束并退出游戏系统。 析
二、总体设计(2)
?5?
系
统
总
体
设
计
框
架
三、详细设计(1)
?6?
C编译器提供了基于ANSI标准的伪随机数发生器
函数rand()和srand(),用来生成随机数。这二个函数
的工作过程如下: srand()提供一个种子,它是一个
unsigned int类型,其取值范围从0~65535; 然后调
用srand(),它会根据提供给srand()的种子值返回一主
个随机数(在0到32767之间); 根据需要多次调用要
srand(),从而不间断地得到新的随机数; 无论什么时功
候,都可以给srand()提供一个新的种子,从而进一步能
“随机化”srand()的输出结果。 模
块
的
算
法
设
计
三、详细设计(1)
?7?
#include
#include
#include
void main( void )
{
void help(); //函数声明
void compare(int a[]); //函数声明
int i,k = 0,a[4],b;
srand( (unsigned)time( NULL ) );
while (1)
{
主 for(i=0;i<4;i++)
要 {
a[i]=rand()%10; 功 }
能 if(a[0] != 0)
模
块 break;
} 源
程
序
?8?
三、详细设计(2)
1. 输出游戏菜单
2. 输出游戏规则
3. 比较用户输入数据与系统随机数,并产生提示信息
4. 玩家从键盘输入数据
5. 比较对应位置上的数 主6. 输出游戏结果
要
功
能
模
块
的
算
法
设
计
?9?
三、详细设计(2) printf("猜数字游戏:\n");
printf("***************************\n");
printf(" 1.新游戏\n");
printf(" 2.帮助\n");
printf(" 3.退出\n");
printf("***************************\n");
printf("\n请输入选择:\n");
scanf("%d",&b);
while(b!=3)
{
switch(b)
{
case 1:compare(a);break; 主 case 2:help();break;
default:printf("error!"); 要 }
scanf("%d",&b); 功 }
} 能
void help()//游戏规则说明函数 模{
printf("该游戏由程序随机生成四个0到9的数字\n游戏者有八块 次机会来根据系统提示猜测数字\n");
printf("\nA--表示位置与数字均正确的个数\nB--表示数字正确源但位置不正确的个数\n");
} 程
序
void compare(int a[])//比较用户输入数据与系统随机数,并产生提
示信息
{
int b[4],i,j,k=1,A=0,B=0,N=8,x;
printf("请输入猜测的四位数:\n");
while(A!=4&&k<=N)
{
A=0;B=0;
scanf("%d",&x);//玩家从键盘输入的数据
while(x<999||x>10000)
{
printf("输入不合法~\n");
?10?
scanf("%d",&x);
}
for(i=3;i>=0;i--)
{
b[i]=x%10;
x=x/10;
}
for(i=0;i<4;i++)//比较对应位置上的数
if(a[i]==b[i]) A++;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(a[i]==b[j]&&i!=j) B++;
printf("%dA%dB\n",A,B);
if(A==4) printf("You Win!\n");
k++;
}
if(A!=4&&k>8) printf("游戏失败!\n"); }
四、调试分析过程(1)
?11?
刚开始执行输入函数,按数字顺序输入,输完后执行
显示功能,数字、字母的位置显示不对,试着在其中增
加一些语句,希望能把所需结果按正常顺序显示,但暂
时没有成功,最后在老师的帮助下,所需结果能按正常
顺序输出了。
在前面对猜数字游 戏进行需求分析的过程调
中,已经初步明确了系统的主要功能模块和用试户需求,下面将在总体设计的过程中,给出猜
数字游戏的模块结构、流程描述以及界面布局,过
并使得系统的总体设计符合软件工程中总体设程
计的基本原则。
出开发与设计的总体思想:
猜数字游戏是一种大众娱乐游戏,开发与设现
计的重点在于游戏供玩家进行猜数字游戏的原的始数字的产生和用户每次进行猜数字操作之后
的游戏提示,这两方面的规则设计往往决定了问
软件运行的正确性和质量。同时,要谨记调试题
失败的原因,以免下次犯同类错误。 及
解
决
方
法
四、调试分析过程(2)
?12?
游戏初始画面
测
试
数
进入系统选择1进行游戏,随机输入4个不同的数字
据
及
测
试
结
果
输入3个不同的数则会提示输入有误
?13?
选择2系统帮助界面
五、总结
?14?
C编译器提供了基于ANSI标准的伪随机数发生器函数设
rand()和srand(),用来生成随机数。这二个函数的工计
作过程如下:srand()提供一个种子,它是一个unsigned 用
int类型,其取值范围从0~65535; 然后调用rand(),到
它会根据提供给srand()的种子值返回一个随机数(在0的
到32767之间); 根据需要多次调用rand(),从而不间知
断地得到新的随机数; 无论什么时候,都可以给识
srand()提供一个新的种子,从而进一步“随机点
化”rand()的输出结果。
在进行课程设计之前几天,不知从何入手,一脸茫
然。为什么呢,因为我们想自己自己做出来而不参考任
何资料,以为这样才可体现我们的智慧和能力,其实这
是大错特错的。当然也不是一味强调自己动脑自己做出收来不好,从开发方面角度来说是可以的,有些东西也并获不是一味的照搬照抄。抱着这样的态度迷茫了三四天只与想出了一丁点大至结构。最后决定上网找资料,不查不体知道,一查大吃一惊,不但自己的想法网上比比皆是,会 比自己的想法更完美更合理的多得看都看不完。此时真
是自愧不如,如早从网上借鉴,集大家之所成,加上自
己的修改完善,早已做出了更好的系统结结构和想法了。
现在才知道,一个人的智慧敌不过千万人智慧的集成,
能借鉴的尽量借鉴,然后再修改完善,增加自己所需的
?15?
功能,做出自己的特色。伟大的物理学家牛顿不也说过
他之所以成功是站在伟人的肩上吗,
完成设计后,我觉得收获不少,首先是自己首次应
用所学知识做出了这个游戏系统,以前从未做过这样大
(这是对我而言,在专业人仕看来是小菜一碟)的程序,
多少心里有点甜美的感觉;而收获更大的是让我学到了
怎样和他人合作完成一件任务,以及在完成的过程中如
何沟通。
不完成设计是在一定时间内完成的,在完成这个设计足时,我们做得显然有一些紧迫,我想是没合理安排好时与间和开始态度不正确所致,做守完后我觉得合理安排时努间是非常重要的否则可能时间已到而还无法完成或完成力得仓促,应合理安排时间给各个环节。
方
向
六、参考文献
?16?
《C语言程序设计实验指导与习题解答》 蒋清明
人民邮电出版社
《C语言程序设计案例教程》 张基温 清华
大学出版社
《课程设计与系统开发案例》 伍俊良 清华大参
学出版社
考
《C程序设计 (第三版)》 谭浩强 清华大学书
出版社
籍
及 《C语言程序设计》 蒋清明 人民邮电出版社
参
考
论
文
与
网
址
?17?
课程设计成绩评审表
姓名 学号 1303090190 班级 机械1310班 杨晨
设计题目 猜数字游戏
计算机随机生成一个各位数字不重复的四位数,系统根据玩家输入的数字给出提示作品信息: A--表示位置与数字均正确的个数; B--表示数字正确但位置不正确的个数。描述 玩家根据提示调整输入,如果玩家输入超过八次仍不成功,游戏自动结束。
指导
教师
评语
评 分(上限) 得 分
观测内容 分值 A B C D E 程序运行情况 20 20 15 10 5 3 程序功能的完善程度 10 10 8 6 4 2 程序结构的合理性 10 10 8 6 4 2 对问题的答辩情况 20 20 15 10 5 3 创新情况 10 10 8 6 4 2 工作态度与独立工作能力 10 10 8 6 4 2 设计报告内容的规范性 20 20 15 10 5 3
指导教师评定成绩
指导教师(签名)
2015年 5月 29日
?18?