《C语言课程设计》报告题目:石头剪子布
班级:
学号:
姓名:
指导教师:
成绩:
目录:
一、选题背景...................................................................................................................... - 2 -
二、设计思路...................................................................................................................... - 2 -
三、主要问题的解决方法及关键技术.............................................................................. - 3 -
四、程序流程图.................................................................................................................. - 3 -
五、源程序清单.................................................................................................................. - 6 -
六、程序运行结果.............................................................................................................. - 8 -
七、设计总结...................................................................................................................... - 9 -
八、教师评语.................................................................................................................... - 10 -
一、选题背景
通过一个学期的C语言课程的学习,《C语言程序设计》课程已结束,根据学校课程学习的安排,要进行一周的C语言实习,自己动手编写游戏和系统。根据老师布置的设计任务书,按照学委的安排,根据个人的能力及意愿,我选择了设计一格小游戏:石头剪子布。
实验准备:做游戏前,首先,自己详细看了《C语言程序设计》(教科书),理解了相关函数的用法和作用;另外,上网查询了很多相关资料,还有找了很多相关的游戏设计的代码,都详细的看了一遍,加深了对C语言以及相关内容进一步理解。根据实际情况设计出一款比较理想的小游戏。
设计题目的要求:
①游戏要设置开始,结束操作控制
②游戏要有时间提示即相关结果的提示语
③游戏要能自动判断输赢,并显示最终比赛结果
二、设计思路
系统功能模块图:
输入:计算机随机输入选择,用户输入选择,并将数据储存。
计算:根据计算机和用户的选择,计算大小,并判断输赢,计算用户的胜负率,并储存。
输出:根据用户的输入,将用户的游戏结果显示在屏幕上。
三、主要问题的解决方法及关键技术
游戏功能需求分析:
输入数据:
计算机随机输入数据;
用户输入合法的数据
存储数据:
存储计算机的输入数据;
存储用户的合法输入数据;
判断用户的输赢:
根据用户的选择,比较用户与计算机的胜负
计算用户的胜负率:
根据计算机的记录,计算用户的胜负次数的总和及概率四、程序流程图
①获取计算机的输入
②获取用户的合法输入
③判断用户的输赢
④记录用户的数据机胜负率
五、源程序清单
#include
#include
#include
void main()
{
char r;/* 用来存放用户的选择*/
char dn; /* 用来存放电脑的选择*/
int s,q;
double p,y,n,f,z;
p=0;
y=0;
n=0;
printf("出锤子输入c\n出剪刀输入j\n出布输入b\n计算您的得分输入f\n可以一次输入许多会一次性出很多结果哦\n请输入您的选择:\n");
srand(time(0)); /* 随机数生成器,设置rand种子值,用来获取计算机的输入*/ do{
do{
s=rand()%3;
switch(s)
{
case 0 : dn='c';break;
case 1 : dn='j';break;
case 2 : dn='b';break;
}
do{
scanf("%c",&r); /* 用来获取用户的合法输入*/
}while(r!='c'&&r!='b'&&r!='j'&&r!='f');
if(r=='f')
{
z=y+n+p;
f=100/z*(p/2.0+y);
printf("一共比了%g场\n赢了%g场\n输了%g场\n平局%g场\n",z,y,n,p);
y=100/z*y;
n=100/z*n;
p=100/z*p;
printf("您的胜率为%.3g%%\n您的败率为%.3g%%\n您平局率为%.3g%%\n您的综合分数为%.3g\n对您成绩的评语:",y,n,p,f);
if(f<=20)
printf("您的运气真的差到一定无法想象的程度了~!\n\n");
if(f>20&&f<=40)
printf("您的运气差了点哦,努力,加油!\n\n");
if(f>40&&f<=60)
printf("您的运气还可以中等啦~中等啦……\n\n");
if(f>60&&f<=80)
printf("您的运气不错哟~!嘿嘿……\n\n");
if(f>80&&f<=100)
printf("哇~!~!~您的运气真的好到家了你太帅了GG 你太可爱了MM~!!~\n\n"); printf("\n随便输入几个字符按回车关闭程序\n");
scanf("%d",&q);
}
if(dn==r)
{
printf("平手,继续\n");
p++;
}
else
switch(dn)
{
case 'c' : if(r=='j')
{
printf("电脑WIN!! 锤子:剪刀\n");n++;
}
else
{
printf("人WIN! 锤子:布\n");y++;
}break;
case 'j' : if(r=='b')
{
printf("电脑WIN! 剪刀:布\n");n++;
}
else
{
printf("人WIN! 剪刀:锤子\n");y++;
}break;
case 'b' : if(r=='c')
{
printf("人WIN! 剪刀:锤子\n");y++;
}
else
{
printf("电脑WIN! 布:锤子\n");n++;
}break;
}
}while(r==dn);
}while(r=='j'||r=='b'||r=='c');
}
六、程序运行结果
测试:
①显示主菜单界面
②输入界面
③输出界面
④结果统计界面
⑤游戏结束界面
七、设计总结
此的程序实设计实验是对我进入大学以来学习程序设计语言成果的一个检
验。自己动手,自己发现和解决问题,学会了独立,自主的思考,发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。
当我选择编写小游戏“石头剪子布”这个题目时,一开始想运用大量函数及循环来完成,但是在慢慢琢磨之后,觉得这个程序可以简化,于是改变了编程思路。当然还有不少文件的读写问题,不过还是通过不断测试之后顺利解决了。另外一点要说的就是这个程序用了很多的选择循环,因此对于循环的控制要十分小心。
还有一点体会就是,书上和老师教的内容是有限的,我们需要不断地靠自己去学习,向他人请教,学会利用网络等了解知识的平台去学习和掌握更多的知识,这样我们才能编出更好的C程序。
总体来说,这次C语言程序设计实验还是比较成功的,虽然最终程序还存在一些不足,但能取得这样的成绩我还是比较高兴的。
最后,要感谢学校为我们提供这次实验机会,也要感谢老师的教导和其他同学对我的帮助与支持。
八、教师评语