ImageVerifierCode 换一换
格式:DOCX , 页数:62 ,大小:363.09KB ,
资源ID:25509771      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25509771.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(连连看游戏的设计与实现.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

连连看游戏的设计与实现.docx

1、连连看游戏的设计与实现苏州高博软件技术职业学院学生毕业设计(论文)报告 系 别 计算机科学技术 专 业 计算机应用 班 级 1310计应YZ 姓 名 支峰 学 号 013321018 设计(论文)题目连连看游戏的设计与实现指导教师 贺 雪 梅 起迄日期 2015年10月16日-2016年4月25日 连连看游戏的设计与实现摘 要 本文用VisualC+来设计与实现简单的连连看游戏的基本功能,玩家可以在游戏区域中通过键盘控制来选取相同的两个物件,采用特定的消除规则对它们进行消除的操作,当游戏区域中的所有方块对都被消除后玩家即可胜利.本次课程设计对该游戏的算法以及游戏图案的绘制进行详细的介绍.运用连

2、线相消的方法完成了连连看游戏。关键词:VisualC+6。0;连连看;游戏; 3D绘图1 引 言1.1连连看游戏介绍游戏“连连看”顾名思义就是找出相关联的东西,它来源于街机游戏四川麻将和中国龙,是给一堆图案中的相同图案进行配对的简单游戏,在2003年,一个叫做朱俊的网友将这种形式搬到了PC上,立刻成为办公一族的新宠,并迅速传遍了世界各地。饱受工作压力的人们没有太多的时间进行复杂的游戏,而对于这种动动鼠标就能过关的游戏情有独钟.之后村子的连连看风靡版,阿达的连连看奥运版,连连看反恐版,还有敏敏连连看,水晶连连看等遍地开花,造就了一个连连看的新世界。连连看游戏有多种地图样式和道具系统、大大加强了游

3、戏的可玩性,是一款老少皆宜的休闲佳品.1。2课程设计的目的网络小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,通过游戏还可以认识更多的朋友,也可以到达跨省、跨市,甚至跨国间人们互相娱乐的目的。 另外也想通过本次课程设计将三年来所学的专业知识和其他方面的知识融入到实际应用中。 1.3主要问题 开始制作游戏时,主要要解决的问题有以下几个方面:如何设置整个游戏的界面;如何控制连连看游戏中随机图片的生成且每种图片必须为偶数个;游戏开始后,判断鼠标两次点击的图片能否消去,即图片是否相同且图片之间路径的判断.1.4课题实现技术

4、的简要说明Visual C+是一个功能强大的可视化软件开发工具,Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE).Visual C+6。0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Visual C+一直被认为是目前最好的软件开发工具之一,其在界面开发、执行速度、代码的移植性方面都有很强的优势.所以,实现本系统,VC+

5、是一个相对较好的选择。2 系统需求分析整个游戏程序包括了进入记录,图片消去和过关结果三个阶段,在处理鼠标响应事件中伴随着3D绘图.程序通过调试运行,实现了设计目标,能够满足连连看游戏玩家的需要。2。1 可行性分析 (1)技术可行性分析技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。连连看系统的工作主要是在开发者和玩家之间架起一座桥梁,能相互沟通信息和处理信息。这一特点非常适合计算机特点,通过网络Internet技术,发挥计算机的信息传输速度快、准确度高的优势。计算机硬件和软件技术的飞速发展,为系统的建设提供了技术

6、条件。(2)社会可行性分析社会可行性有时也称为操作可行性,主要论证新系统在玩家在游戏过程中的感受与反馈信息。在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新使得游戏更加的易掌握。2.2 功能需求分析关于连连看的功能描述如下:运行游戏并进行初始化工作,将整个游戏区域分成纵向和横向扩展的若干个小方块,并且这些小方块是由多种动物图案成对地分布于游戏区域的不同位置。玩家可以通过选取相同的两个物件来对它们进行消除的操作,直到将游戏区域中的所有方块对都被消除后为胜利.2.3 性能需求分析 (1)硬件环境处理器:Inter CR300或是更高。内存:128MB(建议196MB).硬盘空间:20M

7、B。(2)软件环境操作系统:Windows 98 或是Windows 2000/Windows NT Server 4.0。 3 系统设计3.1系统功能设计 连连看系统的设计流程图如图3。1所示。图3.1 连连看游戏的设计流程图3.2系统功能模块总设计这个游戏的主要类是游戏模式类,类名为CLinkToLinkDlg。这个类主要对包括图案方块的销毁判断,游戏胜利判断以及整个游戏用户交换功能的实现。它的图如图3。2所示。CLinkToLinkDlgm_mem3DBkDC :CDCm_mem3DBkBmp :Cbitmap m_memAnimalDC :CDC m_memAnimalBmp :Cbi

8、tmap m_MemDC :CDC m_memBitmap : Cbitmapm_map : intm_nRow : int m_nCol : int m_nX1 : int m_nY1 : int GameDraw(CDC * pDC) : voidStartNewGame() : voidIsLink(int x1,int y1,int x2,int y2) : BOOLIsWin(void) : BOOLX1_Link_X2(int x,int y1,int y2) : BOOLY1_Link_Y2(int x1,int x2,int y) : BOOLOneCornerLink(int

9、 x1,int y1,int x2,int y2) : BOOLTwoCornerLink(int x1,int y1,int x2,int y2) : BOOLYthrough(int x,int y,BOOL bAdd) : BOOLXthrough(int x,int y,BOOL bAdd) : BOOLLineX(int x,int y1,int y2) : BOOLLineY(int x1,int x2,int y) : BOOL图3。2 游戏模式类图 4 系统详细设计与实现 4.1游戏地图设计对于整个游戏区域,可以把它看作一个是由若干个小方块构成的地图,而且每一个小方块放置着不同

10、的动物图案,可将其称之为图案小方块。这些图案小方块零散地分布在地图的不同位置区域,并且每一个图案小方块都有与其对应的完全一样的另外一个小方块,如图4。1所示。 图4。1 游戏地图设计图如图4。1所示,整个游戏游戏区域被抽象成一个有坐标位置属性的平面,平面上零散地分布着若干个小方块,并且这些小方块的物种起码是成对出现的。经过前面的描述和分析后,可以把游戏区域地图用一个数组m_map来表示.m_map是把地图设计成一个动态分配的int整形一维数组,对地图中的行列数的表达,用一个转换法则即可.可以在LinkToLinkDlg类对象定义中添加地图核心数据的成员变量,具体如下: /地图位置相关属性组 i

11、nt* m_map; /动态地图数据头指针(一维数组) int m_nRow; /地图的行数(虚拟) int m_nCol; /地图的列数(虚拟)上面的成员变量中定义了一个整形指针标量m_map,用于记录动态分配出来的一维数组地图空间的首地址。对于地图区域中的某个小方块的类型,可以用一个整形的ID来进行识别。这里为标识地图的行列位置分别添加m_nRow和m_nCol变量.现在,地图的数据结构已经设计好。下面对游戏进行初始化。由于方块需要成对地出现,因此在做地图的初始化时,不仅仅是对动物种类做简单的随机取数,然后将该随机选取出来的物件放到地图区域中去就了事,而是需要成对地对物种进行成对选取,就是

12、说地图中的小方块必须是偶数个。前面提到过,把地图数组设置成动态分配方式,目的是让其数据空间可以根据行列数的需求动态地获取,而对于实际不同大小比例的地图可以预先定义几组关于行列数的宏来实现。当需要创建时,根据宏值的不同分配不同大小的地图空间即可。接下来在LinkToLinkDlg类的构造函数对地图数据进行相关的初始化:define ROWCOUNT 8 /行数#define COLCOUNT 12 /列数CLinkToLinkDlg:CLinkToLinkDlg(CWnd* pParent /=NULL*/) : CDialog(CLinkToLinkDlg:IDD, pParent) /初始化

13、行列数 m_nRow=ROWCOUNT; m_nCol=COLCOUNT; /根据行列数动态分配内核数据数组空间 m_map=new intm_nRowm_nCol;CLinkToLinkDlg:CLinkToLinkDlg() /释放动态数组空间 delete m_map;在LinkToLinkDlg类对象的实现中,定义了一些关于地图行列数的宏,如ROWCOUNT和COLCOUNT,并且在LinkToLinkDlg类对象的构造函数中,进行了行列的真实确认赋值,并根据当前行列数的大小对地图数据空间进行动态创建.因为地图数据是用new在堆栈动态创建的,所以在销毁该对象时要将这些内存空间释放,如代

14、码所示在LinkToLinkDlg类对象的析构函数中调用delete将m_map指向的所有空间都释放掉。4。2初始化工作接下来,再分配好的空间中放上适当的图案方块物件,对数据进行初始化.即需要对地图空间内的数据进行成对性的随机布局,因此可以将该功能的实现封装在StartNewGame( )函数里面,其代码如下:void CLinkToLinkDlg:StartNewGame() /初始化地图,将地图中所有方块区域位置置为空方块状态 for(int iNum=0;iNum(m_nCol*m_nRow);iNum+) m_mapiNum = BLANK_STATE; /部下随机种子 srand(t

15、ime(NULL); /生成随机地图 /将所有匹配成对的动物物种放进一个临时的地图中 CDWordArray tmpMap; for(int i=0;i(m_nCol*m_nRow)/6;i+) for(int j=0;j6;j+) tmpMap.Add(i); /每次从上面的临时地图中取走(获取后并在临时地图删除) /一个动物放到地图的空方块上 for(i=0;iy2) int y=y1; y1=y2; y2=y; for(int y=y1;yx2) int x=x1; x1=x2; x2=x; for(int x=x1;x=x2;x+) if(m_mapy*m_nCol+x!=BLANK_

16、STATE) return FALSE; if(x=x2) return TRUE; return FALSE;/ 直角接口连通BOOL CLinkToLinkDlg::OneCornerLink(int x1, int y1,int x2, int y2) if(x1x2) int n=x1; x1=x2; x2=n; n=y1; y1=y2; y2=n; if(y2y1) if(LineY(x1+1,x2,y1)&LineX(x2,y1,y2+1) return TRUE; if(LineY(x2-1,x1,y2)LineX(x1,y2,y1-1)) return TRUE; return

17、 FALSE; else if(LineY(x1+1,x2,y1)&LineX(x2,y1,y2-1) return TRUE; if(LineY(x21,x1,y2)&LineX(x1,y2,y1+1)) return TRUE; return FALSE; return FALSE;/ 直角接口连通BOOL CLinkToLinkDlg:TwoCornerLink(int x1, int y1, int x2, int y2) if(x1x2) int n=x1; x1=x2; x2=n; n=y1; y1=y2; y2=n; /右通 if(XThrough(x1+1,y1,TRUE)&X

18、Through(x2+1,y2,TRUE)) return TRUE; /左通 if(XThrough(x1-1,y1,FALSE)XThrough(x21,y2,FALSE)) return TRUE; /上通 if(YThrough(x1,y1-1,FALSE)&YThrough(x2,y2-1,FALSE) return TRUE; /下通 if(YThrough(x1,y1+1,TRUE)&YThrough(x2,y2+1,TRUE)) return TRUE; /右 for(int x=x1+1;xm_nCol;x+) if(m_mapy1*m_nCol+x-1) break; if

19、(OneCornerLink(x,y1,x2,y2) return TRUE; /左 for(x=x1-1;x-1;x-) if(m_mapy1*m_nCol+x!=BLANK_STATE) break; if(OneCornerLink(x,y1,x2,y2) return TRUE; /上 for(int y=y1-1;y-1;y-) if(m_mapy*m_nCol+x1!=BLANK_STATE) break; if(OneCornerLink(x1,y,x2,y2) return TRUE; /下 for(y=y1+1;ym_nRow;y+) if(m_mapym_nCol+x1!=BLANK_STATE) break; if(OneCornerLink(x1,y,x2,y2)) return TRUE; return FALSE;BOOL CLinkToLinkDlg::XThrough(int x, int y, BOOL bAdd)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1