明显连连看课程设计报告Word格式.docx
《明显连连看课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《明显连连看课程设计报告Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C++语言程序的基本技巧,充分理解结构化程序设计的基本方法。
C++语言程序设计的主要任务时要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C++语言程序及编写设计报告。
本次课程设计是通过设计一个较为简单的“连连看小游戏”,进一步熟悉C++中有关各种知识的运用与掌握。
了解系统开发的需求分析、模块分析、程序流程图、编码测试、模块组装与整体调试的全过程,加深对C++的理解与VisualC++环境的使用;
逐步熟悉程序设计的方法,并养成良好的编程习惯,进一步培养完善的C++编程设计思维,为以后进行软件编程、数据库管理等深入学习打下一个牢固基础
2课程设计的目标
本课程设计的目标:
1.巩固和加深学生对C++语言课程的基本知识的理解和掌握;
2.掌握C++语言编程和程序调试的基本技能;
3.掌握利用C++语言进行软件设计的方法;
4.提高书写程序设计说明文档的能力;
5.提高运用C++语言解决实际问题的能力。
3课程设计要求
基本要求:
1.题目:
设计一个连连看小游戏;
2.了解该游戏开发的相关背景;
3.参考相关书籍学习课程设计的基本知识;
4.清楚所开发系统软件的各个相关功能,以便顺利开发系统软件;
5.对系统功能模块进行分析,写出设计说明文档;
6.设计完成的软件要便于操作和使用;
7.对自己所设计的程序进行调试,并不断完善;
8.在设计过程中熟练掌握软件编程的相关知识;
9.详细体会并记录相关过程,并将心得体会写在课程设计报告中;
10.设计完成后提交课程设计报告。
第二章课程设计任务内容
1课程设计题目
明星连连看。
2功能需求
用C++实现连连看小游戏。
该系统主要有以下功能:
1、系统以菜单方式工作;
2、点击选择难度;
3、有一定的时间限制;
4、有一个积分排行榜;
5、点击点击一次图片会相应的有所改变;
6、可以提示、重列、和暂停;
7、帮助菜单显示游戏信息;
3系统流程
以下是练练看具体流程:
点击Debug文件夹里的可执行程序→进入游戏→点击游戏选择难度(可以点击帮助菜单查看帮助说明)→点击相同的图片即可消去→点击选项选择暂停、提示、重列和音效→在一定的时间内完成即会显示相应的分数→完成后自动进入排行榜→输入姓名点击确定;
第三章详细设计说明
1主函数的流程图
2用到的相应的函数
BEGIN_MESSAGE_MAP(初始化界面)
SortPicPlace(重列函数)
BackPicPlace(提示函数)
END_MESSAGE_MAP(结束界面)
OnDraw(输出图形)
InitEvent(随机计算位置)
OnMenuFirst(随机产生游戏图片)
ListPicPlace(判断无解和提示)
IsLineConnection(判断两点之间是否连通)
OnLButtonDown(判断图片是否可以消去)
CheckConnection(检查是否还能消去)
OnMenuScore(控制排行榜)
3、设计说明
此游戏利用visualc++软件开发,利用了MFC技术,用c++语言编写而成,这是为课程设计所做,限于本人的水平,程序可能会有不尽人意的地方,希望能够谅解。
如需打开源代码进行编辑,用visualc++打开zllk.dsp工作区即可进行编辑,包含了图片、头文件、资源文件和源文件。
第四章软件使用说明及运行结果
1使用说明
点击可执行程序进入游戏,进入都点击选项选择难度,可以按帮助菜单查看信息,选择难度之后显示游戏图形,点击相同的图片即可消去,点击可进行提示、重列。
上方有时间进度条,在时间结束之前完成即可获得相应分数进入排行榜,并可输入姓名记录分数。
2运行环境
电脑中需有文件MFC42XXX.DLL,如果缺少,可到相关网站下载。
下载之前先确认电脑是32位操作系统还是64位的操作系统。
下载后将该文件放入c:
\windows\system32下即可。
3运行结果
1、点击进入游戏界面
2、点击选项
3、进入游戏界面
4、点击选项进行提示、重列、暂停
5、帮助
6、关于连连看游戏的信息
7、点击帮助
8、游戏失败
9、通过游戏后显示输入姓名记入排行榜
第五章课程设计心得与体会
通过此次课程设计,我感觉我的水平还是差很多,很多问题都有一种无从下手的感觉,这次的课程设计让我知道我的基础知识很不扎实,因为有好多东西上课的时候老师都讲过,但是在做程序的时候却怎么也想不起来,而且很多概念性的东西没有彻底弄清楚,导致很多简单的一个算法编写不出来,后来把c++程序设计®
重新看了一遍,巩固了这半年以来所学的c++的知识,然后去图书馆借了一些关于数据结构和c++设计的书。
看过那些书之后,信心增加了不少,对接下来的程序编译有了很大帮助。
通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,经过我自己的努力并加上同学们的帮助终于做完了,对其中的艰辛我是深有体会,从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我感受到了各种各样的困难和挫折。
但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难,从中体会到了编程的艰难和细心程度,懂得了在进行编写一个程序之前要有明确的目标和整体的设计思想。
另外,某些具体的细节内容也是相当的重要这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。
这些经验对我以后的编程会有很大的帮助的,我要好好利用。
回忆这三周的时间,我收获很大。
虽然这次课程设计师在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。
我很欣慰自己能在程序中加入自己的想法和有关程序的内容,也就是对程序进行了一番改进,并有创新,但是我感觉自己的创新还不够典型,总之还不是很满意。
另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。
以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。
这次的课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。
我会在以后的学习中更加努力锻炼自己,提高自己,让自己编写出更好更完善的程序,为以后的编程打好基础。
附录1:
参考文献
[®
]谭浩强编著:
C++程序设计,北京:
清华大学出版社,2004
附录2:
程序清单
以下是游戏的一部分代码:
//ZLLKView.cpp:
implementationoftheCZLLKViewclass
//
/*
Madebyliyulinin
*/
#include"
stdafx.h"
ZLLK.h"
ZLLKDoc.h"
ZLLKView.h"
RecordDlg.h"
AddDlg.h"
mmsystem.h"
//声音效果
#pragmacomment(lib,"
WINMM.LIB"
)
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
#definetilex(y)y*BMP_WIDTH+DRAW_LEFT
#definetiley(x)x*BMP_HEIGHT+DRAW_TOP
externintg_userlevel;
externintg_usergate;
externintg_userscore;
DWORDoldtime=0,newtime;
//用来判断连击
/////////////////////////////////////////////////////////////////////////////
//CZLLKViewmessagehandlers
voidCZLLKView:
:
OnMenuScore()
{
//TODO:
Addyourcommandhandlercodehere
CRecordDlgrecorddlg;
recorddlg.DoModal();
}
InitMap()
inti,j;
for(i=0;
i<
VIRTUAL_ROW;
i++)
for(j=0;
j<
VIRTUAL_LINE;
j++)
{
llk_map[i][j].PicIndex=0;
llk_map[i][j].state=0;
llk_map[i][j].event=0;
}
//
15;
{pic_number[i]=0;
pic_place[i+1]=NULL;
}
InitEvent()
{inti,x=0,y=0,tempx,tempy;
intrandevent,randplace;
5;
i++)//总共5次事件
{
//随机计算位置
randplace=rand()%(ROW_NUMBER*LINE_NUMBER)+1;
tempy=randplace%LINE_NUMBER;
tempx=randplace/LINE_NUMBER;
if(tempx!
=x&
&
tempy!
=y)
{x=tempx;
y=tempy;
//随机事件
randevent=rand()%3+1;
//4为事件总数
llk_map[tempx][tempy].event=randevent;
OnMenuFirst()
{//TODO:
inttemprand;
CStringstr;
CRectrect;
//产生随机序列(但是做得随机性不好)
srand((unsigned)time(NULL));
for(i=1;
=ROW_NUMBER;
for(j=1;
=LINE_NUMBER;
{while
(1)
{temprand=rand()%15;
//产生0-14的随机数
if(pic_number[temprand]<
6)
{pic_numb