C++课程设计拼图游戏_第1页
C++课程设计拼图游戏_第2页
C++课程设计拼图游戏_第3页
C++课程设计拼图游戏_第4页
C++课程设计拼图游戏_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1、需求分析11.课程设计目的12.程序所实现的功能12、 设计内容11. 主模块图12.1. 主程序流程图22.2 用例图22.3 主程序调用关系图32.4 函数主要调用关系图3三、设计方案论述3四、调试分析41.实际完成的情况42.程序的性能分析43.上机过程中出现的问题及其解决方案44.程序中可以改进、扩充的功能及设计实现构想4五、用户手册4六、设计总结5七、程序中主要的功能函数6八、主要参考文献6九、附录61一、需求分析1.课程设计目的(1)运用 C+语言设计拼图游戏具有极强的实践性,加强我们对 C+课程基础知识点的理解掌握和灵活运用理能力,培养实际分析问题能力,养成良好的编程习惯;了解 C+面向对象的设计方法与技巧,有效地、深刻地理解课程内容,体会理论、方法和设计原则;培养分析实际问题和解决问题的能力,具备使用面向对象程序设计开发工具设计实际系统的能力。(2)进一步领会程序设计的特点和应用,提高运用 C+ 以及面向对象知识解决实际问题的能力,初步掌握 MFC 编程的基本功能,掌握一种可视化编程的方法,学习使用 CStatic控制操作位图,加强对 C+面向对象程序设计的理解。(3)掌握用 C+ 编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识,学会利用 C+程序设计语言编写出一些短小、可靠的 Windows 实用程序,切实提高面向对象的程序设计能力,为后续的相关课程的学习打下基础。(4)锻炼实际的编程能力,提高调查资料、查阅技术文献、资料以及编写软件设计文档的能力,提高自学编程的能力。2.程序所实现的功能(1)本程序除了实现了拼图所要求的基本功能外,还添加了背景音乐、计算步数和游戏所用的时间,当游戏开始时背景音乐自动循环播放,步数随 player 操作自动增加,时间自动增加。(2)进入游戏界面后,player 可以在菜单栏中选择游戏的难度、图片风格和拼图图像,亦可以自定义图片,若选择“ 简单”,程序将图片分成 9 块,若选择“困难”,程序将图片分成 16 块.(3)单击“重置”或按 F3 菜单项会弹出一个对话框让用户确认是否重置游戏。(4)单击任意图象,图像将随机排列,并开始计时和记步,用户通过鼠标单击空格周围的图片来改变其位置,用户没单击一次,步数增加一次。(5)游戏中用户可通过单击“提示”菜单项或按 F4 来查看图像的缩略图及游戏相关信息。(6)游戏状态栏显示用户所用时间及步数,成功时状态栏给出提示信息和所花费时间、步数,用户可选择其他图像或难度进行游戏。二、设计内容1.主模块图22.1 主程序流程图 2.2 用例图 : 32.3 主程序类调用关系图用户选择背景图片 选择难度级别开始游戏是否选择原图提示不显示 显示原图拼图成功返回重新选择背景图片及难度级别42.4 CPictureDlg 类中成员函数主要调用关系图三、设计方案论述本程序有一个CPictureDlg类,它公有继承CDialog类的一些性质。CDialog类中包括位图的读入和显示,拼图游戏中的Picture都是位图资源。在游戏程序中,采用Static Text即静态文本控件来显示位图。静态文本控件的功能比较简单,可显示字符串,图标,位图。 先为对话框的“游戏”中的菜单项“容易”和“困难”添加消息响应为另外还需为CPictureDlg类添加BOOL型变量Easy来标识游戏的难度(分为9格或16格),同时添加BOOL型变量IsRnd用来标识图格是否进行了随机位置的初始化,接下来为CPictureDlg对话框添加16个Static控件(可以先设置好一个控件后,再通过复制得到其它的控件),并设置它们的属性:ID设为IDC_IMAGE0到IDC_IMAGE15,Tabstop请勾上,Type属性设为Bitmap,控件添加好了后,我们需要添加一个CStatic类型的数组m_Image16,与这16个Static控件相关联,通过这个操作这个数组的下标来控制这16个控件对图像进行分格显示。建立关联的代码应写在CPictureDlg类中系统生成的OnInitDialog()函数体内,这个函数是整个对话框程序运行的入口,相当于一个main函数,在这个函数体里,我们也需要为之前声明的变量提供初始值,即将变量初始化,变量没有初始化的后果通常会造成内存泄露,使程序在运行时出现莫名奇妙的错误。判断游戏是否完成的函数IsWin(),只要所有的Static控件都回到了相应的位置,就可以认为用户己完成了拼图,即游戏完成。 四、调试分析51.实际完成的情况(1)完成的功能:本程序除了实现了拼图所要求的基本功能外,还添加了背景音乐、计算步数和游戏所用的时间,当游戏开始时背景音乐自动循环播放,步数随 player 操作自动增加,时间自动增加。(2)支持的数据类型:BOOL 类型、控件数组类型。2.程序的性能分析本程序能够很好的运行,并且画面质量以及音质方面都很高3.上机过程中出现的问题及其解决方案1)开始导入图片时,图片不能显示,重新导入 bmp 格式的图片后解决了。2)开始建立了时间函数 OnTimer,但是游戏运行后时间并不增加,在开始游戏对应的函 数中增加 SetTimer 函数,得到想要的结果。3)初始设置的快捷键无效,查阅资料后加入 Accelerator 及相应的函数,使得快捷键有效。4.程序中可以改进、扩充的功能及设计实现构想。1)游戏的难度等级有点少,可以适当增加几个等级。2)游戏未设置根据用户花费的时间和步数判定用户的成绩并进行排名的功能,可以增设,以便用户了解自己玩的水平。5、用户手册1.打开 Picture 文件夹,双击 Ppicture.dsw 标志打开程序,然后运行。2.开始程序会出现以下欢迎界面:3.用户需要选择图片、难度和图片风格,然后单击图片开始游戏,计时器开始计时,用户通过鼠标单击空格周围的图片来改变其位置,用户每单击一次,步数增加一次。4.游戏中用户可通过单击“提示”菜单项或按 F4 来查看图像的缩略图及游戏相关信息。6图像缩略图 游戏相关信息5.用户也可以单击菜单栏中的重置或按快捷键 F3 重置图片,会出现提示信息,用户单击确定重置图片。提示框如下:6.当完成拼图后系统会自动给出成功提示,并显示用户的成绩,用户单击确定后可以选择其他图片或难度继续游戏,也可以选择单击“退出”或按 Esc 退出游戏。六、设计总结通过本次课程设计,学习并初步掌握了基于对话框的MFC程序的设计,并学会了使用CStatic控件操作位图。熟悉了在基于对话框的工程中加入菜单操作、用代码操作菜单、Windows位图文件的基本结构、Visual C+中对位图资源的操作、Visual C+中对自定义位图文件的操作、设置相关位图的概念、用Static控件显示位图以及用Status Bar显示提示信息和Visual C+随机函数。7在设计过程中,曾遇到了两个瓶颈导致程序一度无法完成,第一个是位图文件的添加,包括将图片格式转换成BMP格式、添加相关Static控件,尤其是对控件图标不熟悉的情况下,一时不知道在哪儿添加控件,后来上网查阅并请教同学才得以完成控件的添加,使得程序可以继续完成。不过在程序即将结束的时候,又遇到了一个新的问题,导致程序差点功亏一篑,问题就是图片的缩略图的添加,也就是游戏中的“提示”的应用,当然没有“提示”操作,并不会影响整个程序的运行环境,但是为了使游戏者能够顺利的完成游戏,此“提示”操作必不可少,在纠结了一段时间之后,在与同学的商讨下,终于完成了缩略图的添加,为程序的顺利完成提供了帮助。在本次设计的完成过程中,我对软件的开发有了一个初步的认识,一个小型游戏软件尚且需要不断地查阅资料、请教别人,那么完成一个大型的软件,必定需要更加复杂的过程。所以在做软件开发时首先要保持一个平静的心态,静下心来潜心去研究,同时还要熟悉的掌握、灵活的运用所学知识,方能完成设计。也对MFC程序开发也有了相应的了解,每一个函数都有其特定的用途,掌握好这其中的一些关联,对一个程序的完成不无好处,这次课程设计为我以后编程的相关学习奠定了基础,使我在不同方面得到了锻炼。七、程序中类的主要的成员函数BOOL OnInitDialog(); /初始化函数void OnRun(UINT nBitmapID,UINT nMenuID);/加载位图资源BOOL IsWin(); /判断拼图是否成功void MoveImage(int num); /移动随机小图块void Rnd(); /随机设置小图块的位置UINT MapRand(UINT nMax); /随机函数void SetImage(); /把图像拷贝到 Static 控件void SetPos() / 初始化 Staic 控件的位置CString IntToString(int number); /为游戏添加计时器void OnTimer(UINT nIDEvent); /计时函数void SetPre(); /生成略缩图void CPictureDlg:OnForHelp() /显示略缩图void ShowItem(); /显示帮助对话框八、主要参考文献1.郑莉.C+语言程序设计(第 3 版) 北京:清华大学出版社,2005.72.钱能.C+程序设计教程(第 2 版) 北京:清华大学出版社,2005.83.黄维通.Visual C+面向对象与可视化程序设计(第 2 版).北京:清华大学出版社, 2003.12 4.刘路放.Visual C+与面向对象程序设计教程(第二版).北京:高等教育出版社,2007.85. 潘爱民. COM 原理与应用.北京:清华大学出版社,1999.11九、附录BOOL CPictureDlg:OnInitDialog()/整个对话框程序运行的入口CDialog:OnInitDialog();/ Set the icon for this dialog. The framework does this automatically8/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE); / Set big iconSetIcon(m_hIcon, FALSE); / Set small iconsrand(unsigned)time(NULL);hAccel = :LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1);/ TODO: Add extra initialization hereBitmap.LoadBitmap(IDB_BITMAP6);/初始界面是图像 BITMAP6pKDC = new CDC;pMainMenu = GetMenu(); /获取菜单Style3d = TRUE;Islong = FALSE;Advan = FALSE;Easy = TRUE;TimeCon = “计时器“;IntStep = 0;Strstep = “步数“;SetWindowPos(NULL,0,0,600,700,SWP_NOMOVE); /控制窗口大小SetTimer(10,1000,NULL);/10 表示计时器的名字,1000 表示时间间隔是 1000 毫秒,NULL 表示使用onTimer 函数。m_wndStatusBar.Create(WS_CHILD|WS_VISIBLE|CCS_BOTTOM|CCS_NODIVIDER,CRect(0,0,0,0),this,102);int static strPartDim5 = 100,230, 330,400, -1;m_wndStatusBar.SetParts(4,strPartDim);/将状态显示栏分为四块m_wndStatusBar.SetText(TimeCon,1,0);m_wndStatusBar.SetText(Strstep,2,0);m_wndStatusBar.SetText(“Player“,3,0);m_Image0.SubclassDlgItem(IDC_IMAGE0,this);m_Image1.SubclassDlgItem(IDC_IMAGE1,this);m_Image2.SubclassDlgItem(IDC_IMAGE2,this);m_Image3.SubclassDlgItem(IDC_IMAGE3,this);m_Image4.SubclassDlgItem(IDC_IMAGE4,this);m_Image5.SubclassDlgItem(IDC_IMAGE5,this);m_Image6.SubclassDlgItem(IDC_IMAGE6,this);m_Image7.SubclassDlgItem(IDC_IMAGE7,this);m_Image8.SubclassDlgItem(IDC_IMAGE8,this);m_Image9.SubclassDlgItem(IDC_IMAGE9,this);m_Image10.SubclassDlgItem(IDC_IMAGE10,this);m_Image11.SubclassDlgItem(IDC_IMAGE11,this);m_Image12.SubclassDlgItem(IDC_IMAGE12,this);m_Image13.SubclassDlgItem(IDC_IMAGE13,this);m_Image14.SubclassDlgItem(IDC_IMAGE14,this);m_Image15.SubclassDlgItem(IDC_IMAGE15,this);9m_Preview.SubclassDlgItem(IDC_PREVIEW,this);OnBegin();PlaySound(“rain.wav“, NULL,SND_LOOP | SND_ASYNC);return TRUE; / return TRUE unless you set the focus to a controlvoid CPictureDlg:OnSysCommand(UINT nID, LPARAM lParam)/截获控制命令的函数if (nID dlgAbout.DoModal();/用来显示一个模态对话框,其返回值对应于用来关闭对话框的控件的 IDelseCDialog:OnSysCommand(nID, lParam);/ If you add a m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论