拼图游戏 课程报告.doc_第1页
拼图游戏 课程报告.doc_第2页
拼图游戏 课程报告.doc_第3页
拼图游戏 课程报告.doc_第4页
拼图游戏 课程报告.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

游戏设计课程设计报告设计题目:精美拼图游戏专 业 数字媒体技术班 级 姓 名 学 号 指导教师 完成时间 2012 年 秋季 学期游戏设计课程设计一、课程设计目的游戏设计课程设计是数字媒体技术专业必修的实践环节。本次课程设计是本学期游戏设计课程实践环节的深化和延续。旨在通过此次实践环节的训练,使我们能够更加全面地掌握游戏设计的整体策划以及系统地掌握游戏设计的体系结构。通过对我们所做游戏进行的类型确定、前期分析、整体策划以及设计制作过程中所涉及的相关技术的学习和掌握,提高了我们的实践能力以及团队协作能力,为我们在计算机技术的应用上拓宽了道路,对进入游戏设计这一领域的深入研究做了准备。、二、课程设计内容本课程设计按照其要求通过分组来进行,本组3人。:新游戏、自动拼图、帮助功能:flash欢迎界面,参数设置,图片预览:分数存储及排行榜、图片切换、鼠标提示 在制作游戏的前期准备工作中,通过翻阅资料和上网查找,确定以VC+语言环境下MFC为开发平台,制作一款益智休闲小游戏。通过协商我们小组一致同意,最终确定制作拼图游戏,并在此基础上相应添加一些功能菜单,使游戏更易操控、更人性化、更加完善,形成一个可玩性较强的小游戏。游戏的故事摘要 由于是小游戏的开发,故事情节比较简单。在开场添加一段FLASH动画来表明故事的背景:圣诞节到了,一个小女孩收到了很多礼物,但是她不小心打碎了,希望有人能帮她重新拼好。 这样也就为拼图游戏的制作奠定了一个较为合理的故事前提。游戏的类型拼图游戏属于益智类小游戏,在我们的游戏中添加了一些其他菜单控件,达到增加游戏的可控性的目的,让玩家根据自己的喜好调整游戏参数,并且可以通过载入音乐使游戏变得更加有乐趣。制作工具软件运行环境为Microsoft Windows 7,硬件平台限为PC,制作工具为Visual studio 2010编程软件及Flash软件。技术设计路线拼图游戏属于益智类游戏,图形界面确定为MFC的对话框Dialogue的形式框架,即微软基础类库。这套类库以C+类的形式封闭了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC的主要优点是可以用面向对象的方法来调用Windows API,MFC将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图以及活动文档这样的便于自定义的应用程序框架。为此,我们选用MFC来开发一个单文档的拼图游戏使得技术实现上变得相对容易。游戏玩法拼图游戏属于益智类游戏,5岁以上各个年龄段都可以进行游戏。操作简单,游戏目的清晰。菜单栏中开始新游戏,则窗口中整幅图片被分割为若干块,且各图块位置会随机分布;玩家开始游戏则只需移动黑块周围的图块,想办法将图片还原为原始完整的图像。在文件选项中可以打开鼠标提示功能,查看各个图块的原始位置;可任意选择原始图片,添加背景音乐;还可以选择系统自动拼图;游戏完成可以记录玩家信息,生成排行榜。运用流程图 新游戏开始用鼠标移动黑块周围图块鼠标提示,即显示该图块在原图位置帮助、提示类功能菜单参数设置类功能菜单系统自动拼图所拼图片原图查看自主选择拼图的图案拼图分割参数设置可添加游戏背景音乐完成拼图,记录玩家姓名,存入排行榜,可查看已存的玩家分数排行退出游戏FLASH界面故事情节提要 功能制作步骤 类关系图及类成员:其中CPtGameDlg.cpp 为拼图游戏的主对话框类,这个应用程序里包含了所有功能的实现。我主要制作的三个功能如下:1、 拼图原图切换 选择图片功能是在对话框的菜单栏添加功能按钮图片,并给该下拉菜单添加位图选项及自定义选项。在CPtGameDlg.cpp 主对话框类中添加句柄及对每个图片设置消息映射机制函数:CPtGameDlg:OnPic1()、CPtGameDlg:OnPic2(). CPtGameDlg:OnPic6()分别实现调用不同图片操作,具体实现代码如下: CPtGameDlg:OnPic1() / TODO: Add your command handler code heregamepicture=IDB_BITMAP1;AfxGetApp()-WriteProfileInt(_T(游戏参数),_T(gamepicture),IDB_BITMAP1);bitmap.Detach();bitmap.LoadBitmap(IDB_BITMAP1);CPtGameDlg:OnNewgame();CPtGameDlg:OnUserpic()用于自定义BMP图片的选择功能的实现,其中可以自己将图片切割为适合游戏使用的大小并进行加载。 拼图原始图片切换 此函数通过窗口的句柄根据窗口大小来设置图片在窗口的位置: void CPtGameDlg:paintblack()RECT rc;rc.left =(blacksite.x-1)*cellwidth;rc.top =(blacksite.y -1)*cellheight;rc.right=rc.left +cellwidth;rc.bottom =rc.top +cellheight;CDC *pDC=GetDC();pDC-FillSolidRect(&rc,RGB(0,0,0);pDC-DeleteDC();return;每换完一次图片都需要刷新一次窗口,将改变的参数传递给新游戏函数的参数,最终调用CPtGameDlg:nitialgame()函数进行初始化游戏。void CPtGameDlg:OnNewgame() tracksteps=0; 初始话步数为零cellwidth=clientwidth/hnums;/计算每张小图的宽度cellheight=clientheight/vnums;/计算每张小图的高度initialsiteinfo();/初始化位置信息blacksite.x =hnums; /空缺块的宽度blacksite.y =vnums;/ 空缺块的高度度Invalidate(FALSE);initialgame();/初始化游戏2、玩家分数存储、排行榜 玩家分数记录并生成排行榜主要运用了数据库链接与MFC的窗口控制两项。建立paihangDlg类用于显示排行榜并显示存储玩家信息的对话框。此处在CPtGameDlg类中建立OnFilePaihangbang()函数,在其中调用paihang类中的函数进行与paihangbang.mdb数据库进行交互。 void CPtGameDlg:OnFilePaihangbang() paihang paihangdlg;paihangdlg.DoModal();此处在paihang类中的函数的实现:BOOL paihang:OnInitDialog()CDialogEx:OnInitDialog();DWORD dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE ; list.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS); list.SetExtendedStyle(dwExStyle);/ 设置列名 list.InsertColumn(0,玩家);list.InsertColumn(1,得分);list.InsertColumn(2,排名);list.InsertColumn(3,日期); RECT rectList;list.GetWindowRect(&rectList);int width = ( rectList.right - rectList.left) / 5; / 设置列宽.m_ADOConn.ExitConnect();return TRUE; / return TRUE unless you set the focus to a control/ 异常: OCX 属性页应返回 FALSE 排行榜图示 3、 鼠标提示 为了玩家的操作的简便性,在游戏窗口的下面状态栏内添加了图块提示功能,即在CPtGameDlg类中建立OnMousetell()菜单相应函数,使其能够调用OnMouseMove(UINT nFlags, CPoint point) 函数,进行在状态栏显示当前鼠标所指图块位于原图的位置参数,提高了游戏的准确性。void CPtGameDlg:OnMouseMove(UINT nFlags, CPoint point) defaultstruct site mousesite;mousesite.x = point.x/cellwidth+1;mousesite.y = point.y/cellheight+1;if(m_bMouseTell=TRUE)CString str;char buffer5;str=该图块在原始图片中的位置: ( 第 ;_itoa(siteinfomousesite.xmousesite.y.y,buffer,10);str+=buffer; str+= 行, 第 ;.CDialog:OnMouseMove(nFlags, point);未开鼠标提示功能:打开鼠标提示功能:4、 精美拼图游戏的其他功能如下图示:开始动画: 游戏的开场是一个flash动画,通过动画的语言引出拼图游戏,增加了游戏的故事性和趣味性。游戏的主界面:游戏操作进行的主要窗口,功能集中在在菜单栏。文件菜单:一些功能集中在下拉菜单。 设置窗口:在设置菜单中进入设置窗口,在该对话框中可以设置图片切割的行数,列数以及音效。版权说明窗口: 图片预览框:当玩家想要查看拼图的原始图片时,可以点击预览,5s后将自动关闭,但是对于玩家是会扣相应分数的。三、总结制作中出现的问题及解决方案1、 选择图片后没有实时切换解决:由于在建立了图片选择切换功能的函数时没有加OnNewgame()函数,即改变后的图片参数没有传递到本次的窗口显示函数中,还是用的是以前的图片的数据,窗口没有实时刷新。2、 鼠标提示不能对应 解决:设计鼠标提示的函数时,定义的数组作为缓冲池,但是由于设置的字节数不够,导致变量随机取数不能控制,出现错误的位置提示。3、 数据库读取排行榜失败 解决:由于建立数据库和对话框对应时要设置记录对象指针,并且要设置对象的记录序号,但是由于未给对象序号赋值,当指针读取时发生错误。课设还可改进的方面 由于使用了MFC平台的利用大大降低了开发难度,但是同时MFC框架很难做出精美的游戏外观,也较难实现3D的游戏控制,没有实现三维人物的设计,所以游戏是二维的小游戏,这一点还是需继续改进的,如在开场动画中添加3D人物,或是在游戏界面建立人物作为虚拟玩家。在功能方面基本达到各种游戏功能的实现,但是其实还可以增加一下如关卡设置,使游戏更加具有挑战性;多人游戏,可以增加游戏的竞技性。收获及感悟 1、通过本次实验,我们对于游戏开发的基本流程以及各个步骤的重要性得到了切身的体会,并巩固了基于对话框的MFC程序的设计。具体了解并掌握了如下库函数的操作: pMainMenu = GetMenu(); /得到对话框主菜单的指针 CMenu* GetSubMenu(int nPos); /得到菜单项的指针 BOOL LoadBitmap(LPCTSTR lpszResourceName); /载入新的位图对象 BOOL SetWindowsPos() /设置控件的位置 BOOL GetWindowPlacement(.) /取得控件所处的位置 以及创建状态栏控件等函数。 经过在项目中不断的调试程序,寻找错误,丰富了我们的编程经验,提升了编写MFC程序的能力。 2、在游戏制作方面,在程序设计之初,需要一步一步探索游戏的功能设计,并且要使得游戏更为完整、美观,增强了我们的思维逻辑性。从功能上讲完成了拼图游戏所有的功能,并且添加了许多的新功能,如排行榜,玩家通过排行榜可以查看自

温馨提示

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

评论

0/150

提交评论