记忆力小游戏课程设计报告.docx
《记忆力小游戏课程设计报告.docx》由会员分享,可在线阅读,更多相关《记忆力小游戏课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。

记忆力小游戏课程设计报告
计算机学院计算机科学与技术专业
《程序设计综合课程设计》报告
(2011/2012学年第一学期)
学生姓名:
学生班级:
学生学号:
指导教师:
2011年12月31日
记
忆
力
小
游
戏
2.3可行性2
第一章课程设计的目的和要求
1.1课程设计的目的
通过课程设计的训练,我们能够了解程序设计的基本开发过程,掌握编写、调试和测试C++语言程序的基本技巧,培养解决实际问题的能力和养成严谨的态度、习惯。
通过一个简单的程序设计,我们能够进一步熟悉C++中有关各种知识的运用与掌握,理论与实践相结合。
设计过程中,我们独立思考,积极动手实验,逐步熟悉程序设计的方法,进一步培养完善的C++编程设计思维,为以后的程序设计学习打下一个牢固基础。
1.2课程设计的实验环境
该程序设计的设计和实验过程需要在windows7环境下的MicrosoftVisualStudio2008的平台下进行,从而完成代码的编写、编译、调试等工作。
1.3课程设计要求
首先要参考相关书籍学习课程设计的基本知识,了解你所要做的程序的实验环境,清楚所开发程序的相关功能,并对各个功能模块进行分析,然后在平台上进行编写、编译、调试等操作。
程序设计要求自己选题,所做程序要便于操作和使用,在设计过程中熟练掌握相关知识,循软件开发过程的基本规范,运用结构化程序设计的方法,详细体会并记录相关过程,并将心得体会写在课程设计报告中,设计完成后提交课程设计报告。
第二章课程设计任务内容
2.1背景
随着知识时代的来临,记忆力与知识的掌握程度变得越来越重要,而如今的学生特别是部分大学生由于自制力不够,把时间花在玩游戏和睡觉上,没有求知欲,从而导致记忆力下降,这对以后的生活和工作是非常不利的,所以为了改变这一现象,并且有效的提高他们的能动性,设计了这一“记忆力小游戏”程序,游戏简单易上手,老少皆宜,经过一些同学验证,它确实对记忆力的提高有益。
2.2功能需求
1、程序以菜单方式工作
2、程序有录入、选择难度和退出功能
3、程序给出一句话让参与者在规定的时间内记忆,然后打乱这句话的顺序让参与者按照显示出的文字的顺序写出,进行两次,最后系统会提示让参与者写出第一次显示出的文字
4、参与者也可以选择自己输入一句话进行游戏,其他内容按照功能3
5、程序有打分功能,每次游戏结束后给参与者打分并显示分数
2.3可行性
从技术上来说,C++语言是高级编程语言,它可以编写应用程序,并且能够成功运行,在windows7系统中的MicrosoftVisualStudio2008的平台下,我已经实验成功,程序虽然有些小的不足,但是大体上还是差强人意的。
从操作上来说,在明白游戏基本规则的情况下,进行简单的键盘操作即可游戏,游戏简单易懂,在闲暇的时候,它能给您带来乐趣的同时锻炼记忆力。
第三章详细设计说明
3.1主函数的流程图
图3-1主函数流程图
3.2各个子函数的流程图
子函数voidset_game_content()的流程图:
图3-2-1voidset_game_content()函数流程图
子函数voidset_game_setup()的流程图:
图3-2-2voidset_game_setup()函数流程图
子函数voiddelay(intt)、voidend_game()、voidclear_viewprot()的流程图:
图3-2-3voiddelay(intt)函数流程图
图3-2-4voidend_game()函数流程图
图3-2-5voidclear_viewprot()函数流程图
3.3功能及使用说明
1、此程序包含八个函数:
intmain();voidset_game_content();voidbegin_game();
voidset_game_setup();voidgame_select();voiddelay(intt);voidend_game();
voidclear_viewprot()
其中:
intmain()主函数,里面包含菜单函数;
voidset_game_content()输入内容设置界面,其中参与者可更改程序初始输出内容;
voidbegin_game()游戏开始界面,输出文字并要求参与者之后输入相同的文字;
voidset_game_setup()游戏难度设置界面,可供参与者选择难度;[1]
voidgame_select()游戏菜单界面;
voiddelay(intt)延时函数;[2]
voidend_game()游戏结束界面;
voidclear_viewprot()清楚屏障功能。
2、在windows操作系统下打开该软件,根据游戏的提示,按1直接开始游戏,按2会进入输入测试内容界面,在里面参与者可设置测试内容,按3会进入难度选择界面,里面有4种难度,分别为1、2、3、4,对应简单、中等、困难和疯狂,按4会退出游戏。
每次游戏的结束,程序都会给参与者打分,游戏成功,参与者可以选择下一难度或者退出,游戏失败,假如在较高难度,参与者可以选择较低难度或者退出,如果参与者在最低难度就失败,那就会直接退出或者重新在这一难度游戏了。
第四章调试运行结果
1、初始界面,提供功能选择,输入相应数字。
图4-1程序截图一
2、选择2,输入你要设置的测试内容。
图4-2程序截图二
3、选择3,提供游戏难度选择。
图4-3程序截图三
4、选择4,退出游戏。
图4-4程序截图四
5、分别对应游戏难度1、2、3、4的测试内容。
图4-5程序截图五
6、几秒之后,对应难度1出现的界面。
图4-6程序截图六
7、输入正确后出现的界面。
图4-7程序截图七
8、输入正确后,程序会给出分数并且有难度和退出游戏的选择。
图4-8程序截图八
第五章课程设计心得与体会
在这个学期末,我们终于迎来了期盼已久的课程设计,课程设计刚开始的时候,感觉很简单,不就是做一个程序嘛,可是老师一说要求我就彻底傻眼了,200多行的代码,幸亏可以借鉴,但是要有自己的东西在里面。
还有一点比较好的地方就是老师说要我们自己选题,什么游戏啊,测试啊,都可以,我选的是一个叫记忆力小游戏的程序,刚开始的时候和其他人一样,也是一筹莫展,不知道从什么地方入手,所以不知不觉中我把它当做是一种挑战。
人就是这样,困哪像弹簧,你强它就弱,你弱它就强。
三周的时间来做这个程序对我来说已经足够,虽然有的部分还是需要学习,不过在温习过去知识和各种泡图书馆的前提下,我的信心增加了不少,并想出了实际的过程模型。
三周的时间没有白费,我不仅完成了自己的程序设计,而且在余下的时间里把另一个程序做了较大改动。
看着程序的渐渐完善,我的心里也有很大的触动,毕竟是我的第一个程序啊,虽然由于之前没有经验,缺少具体的准则,语言也很生硬,但是看着程序的从无到有,从有到精,我深深的感到自己的付出没有成为流水。
经过这次的程序设计,我的收获很大,不仅对C++语言有了更进一步的认识和了解,而且通过实践,我也发现我的好多不足之处,首先是自己编程粗心大意,经常出错,再有对C++语言的一些标准函数不太了解,还有对函数调用的正确使用不够熟悉,以及对C++语言中经常出现的错误也不了解,但是经过三周的锻炼,我在这几个方面的认识有所提高。
同时这次的课程设计也让我懂得了很多:
(1)保持良好的学习心态,第一,要有自信,自强,积极主动学习.第二,克服畏难情绪,树立学好程序设计的信心
(2)要了解概念:
C++程序设计本身并不复杂,变量,函数,条件语句,循环语句等概念较多.要真正能进行程序设计,就要深入理解这些概念.应该重视概念的学习.
(3)自己动手编写程序,亲自动手进行程序设计是培养逻辑思维的好方法.因此我们得多动手编写程序,逐渐提高写程序的能力.自己动手,编写一些程序,才会有成就感,进而对课程产生兴趣,做起来才比较从容.等你在编写大量程序之后
(4)上机调试程序应注意多问问同学,多问问老师、,把不懂的地方标出来。
(5)养成良好的编程习惯,第一,程序构思要有说明;第二,学会如何调试程序;第三,对运行结果要做正确与否的分析。
但是,如果以前上课的时候不认真的听讲的话,做这个程序设计就会有点点困难,所以,同时也在提醒我们,学习,任何时候都要认真!
对于计算机专业的大学生来说,积累实战经验是一项极其重要的内容,很可能成为将来就业的敲门砖。
而程序设计综合课程设计就是积累实战经验的一个过程,虽然程序的规模并不大,但能够让我们尽早地认识软件开发的重要性和必要性,为将来的就业打下坚实的基础。
总之,在此次的C++程序设计中,没有付出就没有收获,努力地同时要耐得住寂寞。
所以此次C++程序设计,让我做事情更加有耐心,更加细心,学习更加认真仔细。
故在此,特意感谢给予我帮助的同学和老师,谢谢你们。
附录1:
参考文献
[1]谭浩强编著:
C++程序设计,北京:
清华大学出版社,2004年6月第一版
[2]谭浩强编著:
C++程序设计教程,北京:
清华大学出版社,2007年7月
附录2:
程序清单
以下是记忆力小游戏的源代码:
#include
#include
#include
#include
#include
#include
usingnamespacestd;
charch[200]="你好啊",ch1[400]="计算机程序不好做啊",
ch2[400]="大家毕业之后是考研还是出国呢",
ch3[600]="我们不知道谁在不经意间说了再见之后就真的再也不见了";//玩家必须猜出来的字符串
staticintsetup=1;//难度
staticintpoint=10;
staticintt=100;
voidset_game_content();
voidbegin_game();
voidset_game_setup();
voidgame_select();
voiddelay(intt);
voidend_game();
voidclear_viewprot();
stringrandom_string(strings);
intmain()
{
srand(time(0));
game_select();
}
voidset_game_content()
{
clear_viewprot();//清除屏幕
cout<<"请输入你要设置的测试内容:
"<getchar();
cin.getline(ch,400);
game_select();
}
voidbegin_game()
{
stringran_str1;
stringinput_str;
stringran_str2;
strings;
inti=0;
intnum=1;//关数
stringstr;
begin:
clear_viewprot();//清除屏幕
ran_str1="";
input_str="";
ran_str2="";
s="";
cout<<"现在是第"<"<cout<<"请你把下面的字记住"<if(setup==1)
str=ch;
elseif(setup==3)
str=ch1;
elseif(setup==5)
str=ch2;
elseif(setup==7)
str=ch3;
ran_str1=random_string(str);//打乱玩家要猜的字符串
cout<cout<<"大概几秒后,上面的字自动消失!
";
delay(t);
for(i=0;i<2;i++)
{
clear_viewprot();//清楚屏幕
cout<<"下面是已经打乱的字:
"<ran_str2=random_string(str);
cout<cout<<"请输入上面的字:
";
cin>>input_str;
while(input_str!
=ran_str2)//当玩家输入的字符不等于打乱的字符,继续输入
{
clear_viewprot();//清楚屏幕
cout<<"输入错误,请重新输入"<cout<<"下面是已经打乱的字:
"<ran_str2=random_string(str);
cout<cin>>input_str;
}//while语句结束
}//for语句结束
clear_viewprot();//清除屏幕
cout<<"请输入在第一次看到的字:
"<cin>>input_str;
if(input_str==ran_str1)
{
clear_viewprot();//清楚屏幕
cout<"<cout<<"你现在的分数是"<point=point*2+strlen(ch);
cout<<"要继续游戏吗?
1->继续游戏(难度加大),2->退出游戏"<cin>>s;
if(s[0]=='2')
{
end_game();
}
else
{
num++;//关数
setup=setup+1;//游戏的难度
if(t>40)
{
t=t-5;//游戏的难度
}
gotobegin;
}
}
else
{
cout<<"*****************你输了,还想挑战吗*****************"<if(point>0)
{
point=point-10;
}
cout<<"你现在的分数是"<cout<<"要继续游戏吗?
(难度变小)1->继续游戏,2->退出游戏"<if(t<150)
{
t=t+5;
}
if(setup>0)
{
setup--;
}
cin>>s;
if(s[0]=='2')
{
end_game();
}
else
{
clear_viewprot();//清除屏幕
cout<<"现在是第"<"<gotobegin;
}
}
}
voidset_game_setup()
{
clear_viewprot();//清除屏幕
cout<<"请输入游戏的难度:
1->easy,2->medium,3->hard,4->crazy"<cin>>setup;
if(setup==1)
{
setup=1;
t=100;
}
elseif(setup==2)
{
setup=3;
t=90;
}
elseif(setup==3)
{
setup=5;
t=80;
}
elseif(setup==4)
{
setup=7;
t=80;
}
elseif(setup<=0)
{
setup=1;
t=100;
}
elseif(setup>4)
{
setup=7;
t=80;
}
game_select();
}
voidgame_select()
{
clear_viewprot();//清除屏幕
stringmenu_str="";
cout<<"1->开始游戏,2->玩家自己设置测试内容,3->挑选游戏难度,4->退出游戏"<cin>>menu_str;
switch(menu_str[0])
{
case'1':
begin_game();
break;
case'2':
set_game_content();
break;
case'3':
set_game_setup();
break;
default:
end_game();
break;
}
}
voiddelay(intt)//延时函数
{
inti;
for(i=0;i<15000000*t;i++)
{
i++;
}
}
voidend_game()
{
clear_viewprot();//清除屏幕
cout<<"Now,gameover.GoodBye!
";
getchar();
getchar();
}
voidclear_viewprot()
{
system("cls");
cout<<"***********************记忆力小游戏********************"<cout<<"设计者:
李征设计时间:
/12/24"<cout<<"*******************************************************"<}
stringrandom_string(strings)
{
stringstr1="";
charch[3],ch1[2];
inti2=0;
vectorstr;
vector:
:
iteratornum;
intn=0;
srand(time(0));
for(inti=0;i{
if(s[i]>127||s[i]<0)
{
ch[2]='\0';
ch[i2]=s[i];
if((n+1)%2==0)
{
str.push_back(ch);
ch[0]='\0';
ch[1]='\0';
ch[2]='\0';
}
n++;
i2++;
if(i2==2)
{
i2=0;
}
}
else
{
ch1[1]='\0';
ch1[0]=s[i];
str.push_back(ch1);
}
}
random_shuffle(str.begin(),str.end());
for(num=str.begin();num!
=str.end();num++)
{
str1=str1+*num;
}
returnstr1;
}