泡泡堂地图编辑器1112.docx

上传人:b****5 文档编号:5707749 上传时间:2022-12-31 格式:DOCX 页数:38 大小:567.62KB
下载 相关 举报
泡泡堂地图编辑器1112.docx_第1页
第1页 / 共38页
泡泡堂地图编辑器1112.docx_第2页
第2页 / 共38页
泡泡堂地图编辑器1112.docx_第3页
第3页 / 共38页
泡泡堂地图编辑器1112.docx_第4页
第4页 / 共38页
泡泡堂地图编辑器1112.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

泡泡堂地图编辑器1112.docx

《泡泡堂地图编辑器1112.docx》由会员分享,可在线阅读,更多相关《泡泡堂地图编辑器1112.docx(38页珍藏版)》请在冰豆网上搜索。

泡泡堂地图编辑器1112.docx

泡泡堂地图编辑器1112

目录

摘要II

AbstractIII

第一章引言1

1.1课题背景1

1.2泡泡堂地图编辑器简介2

1.3本课题的意义2

第二章开发环境以及相关技术介绍3

2.1开发环境3

2.2技术介绍3

2.2.1C++3

2.2.2Windows4

2.2.3WindowsMFC6

2.2.4WindowsGDI12

第三章需求分析16

3.1应用需求分析16

3.2运行需求分析17

3.3其他需求分析17

3.4可行性分析17

3.4.1社会可行性17

3.4.2用户可行性17

3.4.3经济可行性18

3.5模块功能设计设计18

第四章系统设计19

4.1精灵位图渲染19

4.2双缓冲技术22

4.3地图的保存23

4.4新建地图25

4.5打开地图26

4.6地图物体的增加与清除27

4.7景层选择28

第五章系统测试30

5.1物体的添加30

5.2物体的删除31

5.3前景层31

5.4背景层32

5.5全景层32

5.6保存33

5.7新建地图33

5.8打开地图34

总结35

参考文献36

致谢37

附录38

摘要

2D休闲类游戏是整个游戏行业的重要组成,随着游戏行业的快速发展,3D游戏的泛滥与质量下降与2D休闲类游戏所花费的时间和精力形成鲜明的对比,2D休闲类游戏一直深受各个年龄阶层玩家的喜欢。

网络游戏开发是一项很大的工程,需要很多综合性的知识。

这对于刚刚入门的开发者来说很难理解。

本论文从研究开发一个模仿泡泡堂地图编辑器的例子出发,讲述2D地图编辑器开发中用到的一些最基本的知识和设计思想,使大家清晰的理解游戏开发的过程。

整个设计中利用C++,WindowsMFC,WindowsGDI结合地图编辑的操作流程,对整个地图编辑器进行精心的设计和大量的测试,实现泡泡堂游戏的地图编辑功能,有上层地图了解泡泡堂地图是如何被开发出来,由于网络图片资源有限,本地图编辑器只能对小区地图进行编辑。

关键词:

2D游戏,泡泡堂地图编辑器,WindowsMFC,WindowsGDI

 

Abstract

2Dgamesofleisureistheimportantcomponentofthegameindustry,asthegamerapiddevelopmentoftheindustry,thespreadof3Dgameswiththedeclineinthequalityand2Dgamesofleisurespenttimeandenergyformbrightcontrast,theleisureclass2Dgamehasbeenbyeachageclassplayerslike.

Networkgamedevelopmentisaverybigproject,needalotofcomprehensiveknowledge.Thistojustentry-leveldeveloperishardtounderstand.ThispaperfromresearchanddevelopmentaimitatePaoPaoTangmapeditoroftheexamplesetout,about2Dmapeditorusedindevelopmentsomeofthemostbasicknowledgeanddesignideas,makeyouclearunderstandingofthegamedevelopmentprocess.

Thewholedesignusingc++.WindowsMFC,mapeditorwithWindowsGDIprocess,tothemapeditorforelaboratedesignandthenumberoftest,realizePaoPaoTanggamemapeditorfunctions,havetheupperPaoPaoTangmapishowtounderstandthemaphasbeendeveloped,becauseofnetworkresources,pictures,localmapeditorcanonlythemapeditor.

Keywords:

2Dgame,PaoPaoTangmapeditor,WindowsMFC,WindowsGD

第一章引言

1.1课题背景

随着社会的发展进步,游戏逐步成为一种重要的休闲娱乐和教育手段。

这种被称为是第九艺术的电子游戏起源于西方,是基于电子技术发展起来的一种具有娱乐性质的产业。

随着电子技术的不断发展和扩充,游戏产业的内容也不断得到丰富,目前的游戏产业已经成为包含计算机软硬件技术、网络技术以及无线技术等最新科技和各种文化艺术的新型娱乐产业。

而其中,游戏引擎技术可谓重中之重,它是整个游戏产业的核心技术。

目前中国的游戏产业正处在一个稳定上升的发展阶段,中国将成为全球最大的游戏市场,现在我们所看到的仅仅是冰山之一角。

根据IDSA的统计结果,如图1-1可以看出喜爱游戏是人类的天性,不分年龄段[1]。

图1-1:

游戏用户年龄分布,性别分布,日常时间闲暇分配

从游戏的市场规模来看,2000年中国的网络游戏销售额仅为0.38亿元,2001年即达3.25亿元,而2002年中国网络游戏市场规模达到10.2亿元,增长率为213.8%。

根据IDC2003年12月的最新研究,2003年中国网络游戏用户数量达到1380万,比2002年增长63.8%,占同年Internet用户数的20.2%,到2007年中国网络游戏用户数将达到4180万,从2002年到2007年这5年的年复合增长率将达到37.8%,届时网络游戏用户将占到Internet用户的29.5%[2]。

1.2泡泡堂地图编辑器简介

在2004年全世界最火爆、在线人数最多的网络游戏,不是《传奇》、《奇迹》等深受欢迎的传统MMO,也不是《梦幻西游》、《剑网》、《巨商》等一大批后起之秀,而是盛大旗下的一款休闲游戏—《泡泡堂》。

泡泡堂地图编辑器按玩家喜欢的方式制作属于自己的地图,从而对泡泡堂这款游戏有个更深的认识。

1.3本课题的意义

本课题以开发该游戏地图为平台,综合运用C++,WindowsMFC,WindowsGDI,,实现程序中算法的实现,消息的传递,循环等。

通过这些技术的综合运用,更深入的了解计算机程序方面的相关知识,熟悉游戏地图编辑器开发的理念和流程,了解整个游戏地图编辑器项目开发的关注点。

该课题属于研究性的一个课题,不考虑商业上的应用。

只是对技术研究的并不是游戏本身的娱乐性。

第二章开发环境以及相关技术介绍

2.1开发环境

操作系统:

MicrosoftWindowsXP

开发语言:

C++,WindowsMFC,WindowsGDI

2.2技术介绍

2.2.1C++

C++是在C语言基础上为支持面向对象程序设计而研制的一个通用程序设计语言,它是在1980年由贝尔实验室的BjarneStroustrup博士创建的。

C++语言开发的宗旨是使面向对象程序设计技术和数据抽象成为软件开发者的一种真正的实用技术。

●C++适用的应用程序范围极广。

C++可以用于几乎所有的应用程序,从字处理应用程序到科学应用程序,从操作系统组件到计算机游戏等。

●C++从C中继承了过程编程方式的高效性,并集成了面向对象编程方式的功能。

●C++在其标准库中提供了大量的功能。

●有许多商业C++库支持数量众多的操作系统环境和专门的应用程序。

C++的变量都有这样的特点:

占用内存空间,有地址,可以取得变量的地址,也可以根据地址访问这个符号代表的变量。

在书写变量说明时,应注意以下3点:

(1)允许在类型说明符后,说明多个相同类型的变量。

各变量名之间用逗号间隔。

而类型说明符与变量名之间至少用1个空格间隔。

(2)最后一个变量名之后必须以“;”号结尾。

(3)变量说明必须放在变量使用之前。

2.2.2Windows

Windows是当今主流的操作系统,也是网络游戏主要的开发平台。

不论是网络游戏客户端开发还是服务器端开发,都有很多成功的网络游戏作品运行于Windows操作系统上。

WindowsXP是Microsoft继Windows2000和WindowsMillennium之后推出的新一代Windows操作系统。

WindowsXP将Windows2000的众多优点与Windows98完美集成在一起。

Windows操作系统的最大特色就是良好的用户交互性,这种交互性通过优秀的图形界面来实现。

Windows操作系统将用户对应用程序窗口的所有操作(键盘按键、鼠标点击、窗口最大最小化等等)转化为Windows消息并分发给应用程序,应用程序对这些消息进行响应,从而实现用户对操作系统以及应用程序的控制。

Windows程序设计是一种事件驱动方式的程序设计模式,主要是基于消息机制。

Windows操作系统为每一个正在运行的应用程序维护一个消息队列。

当应用程序有相关的事件发生时,操作系统将产生一条特定的标识事件发生的消息,随后消息被送入应用程序的消息队列。

应用程序的消息循环将接受和处理这些消息,从而对相关事件做出响应。

当用户完成对应用程序(窗口)的某种操作时会调用操作系统的某种支持,操作系统会将用户的操作包装成消息,并发送到一个应用程序可以访问的消息队列中,最后应用程序从消息队列中取走消息,并进行响应。

消息为应用程序和应用程序间、应用程序和操作系统间提供了信息传递的渠道。

在进行Windows程序设计时,要用到大量的系统API,而这些系统函数的调用参数和返回值中常常会用到很多系统自定义的数据类型。

大部分的Windows数据类型都是来自C语言数据类型。

数据定义的头文件为windef.h。

typedefunsignedlongDWORD;

typedefintBOOL;

typedefunsignedcharBYTE;

typedefunsignedshortWORD;

typedeffloatFLOAT;

所有Windows自定义的数据类型都是全大写的。

表示指针型的数据类型往往以P或LP作为前缀,而句柄型总是冠以H。

句柄这种特殊的数据类型,可以理解为是指针,但又不能像指针那样直接通过地址去访问数据。

Windows操作系统不是直接采用C++基本数据类型的原因:

一方面是因为C++基本数据类型是由C++标准制定的,它的数据表示范围和解释有可能在不同的软硬件平台上会有差异。

另一方面是为了更简单直观的表示某些数据类型.

消息循环机制:

Windows操作系统为每一个正在运行的应用程序维护一个消息队列。

当应用程序有相关的事件发生时,操作系统将产生一条特定的标识事件发生的消息,随后消息被送入应用程序的消息队列。

应用程序的消息循环将接受和处理这些消息,从而对相关事件做出响应。

Windows程序的关键代码,担负着获取、翻译、分发消息的任务

消息循环从GetMessage函数开始,它从消息队列中取出一个消息。

如果取得的消息是WM_QUIT消息,那么GetMessage函数将会返回FALSE,消息循环就会结束。

如果取得的消息不是WM_QUIT消息,GetMessage函数将会返回TRUE,并将获得的消息传入TranslateMessage函数。

TranslateMessage函数对消息进行必要的预处理后,消息将被送入DispatchMessage函数,DispatchMessage函数负责将消息传递给该窗口的消息处理函数进行处理。

PeekMessage函数的基本功能和GetMessage函数相同,但PeekMessage函数不对WM_QUIT消息进行判断,当消息队列有可以取得的消息时取出消息并返回TRUE,没有可以取得的消息时,函数返回FALSE。

如果希望当消息队列中有消息时,再调用PeekMessage获得消息,那么可以调用WaitMessage函数(函数在没有消息时等待,直到有消息才返回)配合PeekMessage完成消息循环

在MFC中很多代码都是封装好了的。

我们只需要进行添加API函数就行。

典型的SDK程序结构如下:

 

 

2.2.3WindowsMFC

WindowsMFC通过对WindowsAPI函数进行面向对象的封装以及提供常用Windows应用程序的开发规范,提高Windows程序的开发效率。

使用MFC技术可以快速、高效地开发多种窗口形式的应用程序.

WindowsMFC将其中的各种类结合起来组成一个应用程序框架,该框架定义了应用程序的构架和部分实现,同时保留了用户接口。

在实际的开发过程中,程序员所要做的就是将需要实现的功能代码填入MFC框架提供的用户接口中。

在MFC程序设计中,将MFC应用程序根据程序构架的不同,分为单文档窗口程序、多文档窗口程序、对话框窗口程序以及多顶级文档窗口程序4类。

WindowsMFC通过对WindowsAPI函数进行面向对象的封装以及提供常用Windows应用程序的开发规范,提高Windows程序的开发效率。

使用MFC技术可以快速、高效地开发多种窗口形式的应用程序。

在进行Windows程序设计时,要用到大量的系统API,而这些系统函数的调用参数和返回值中常常会用到很多系统自定义的数据类型。

WindowsMFC类库是C++类库,这些类封装了Win32应用程序编程接口、应用程序的概念、OLE特性、ODBC和DAO数据访问的功能等内容。

封装大体分成如下4类:

(1)对Win32应用程序编程接口的封装

类CWnd是MFC中常用的一个类,该类将Windows窗口和Windows有关的API函数封装到其成员函数内,CWnd类中的成员变量m_hWnd就是WindowsAPI程序设计中的窗口句柄。

(2)对应用程序概念的封装

使用SDK编写Windows应用程序时,总要定义窗口消息处理函数,注册WindowsClass,创建窗口等等。

MFC把许多类似的处理封装起来,替程序员完成这些工作。

MFC提出了以文档,视图为中心的编程模式,MFC类库封装了对它的支持。

文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。

(3)对COM/OLE特性的封装

OLE建立在通用对象模型(COM)之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),因而相当繁琐。

MFC的OLE类封装了OLEAPI大量的复杂工作,这些类提供了实现OLE的更高级接口。

(4)对ODBC功能的封装

以少量的能提供与ODBC之间更高级接口的C++类,封装了ODBCAPI大量的复杂工作,提供了一种数据库编程模式。

MFC几个重要的类:

(1)对话框类

对话框类由CDialog派生,用于提供一个访问对话框的可编程界面。

CDialog类中提供了大量与对话框编程密切相关的函数。

CDialog类是从CWnd类派生出来的,它首先具有一个窗口类所具有的所有特征和功能,同时它又有自已的特色。

从CDialog类派生的新类中,开发者需要实现和处理的对话框功能接口包括:

1)对话框的创建和初始化。

2)对话框数据交换(DialogDataExchange,DDE)与对话框数据检查(DialogDataValidation,DDV)。

3)事件响应函数。

按照运行机制来划分,对话框可分为模式对话框和无模式对话框两种类型。

模式对话框。

一旦模式对话框弹出,用户就必须在对话框中做出适当的操作,退出对话框,应用程序才能继续进行。

无模式对话框。

无模式对话框在弹出后一直出现在屏幕上,用户可以在应用程序中继续执行其他的操作或者启动其他的应用程序,当需要使用对话框时,只需要向激活一般窗口一样激活它就可以了。

按照创建方式来划分,对话框可以分为自定义对话框、通用对话框、消息对话框3种类型。

自定义对话框是设计者按照应用程序的功能,分别设计对话模板和定义对话框类,然后在应用程序中使用。

在Windows中,很多程序都需要频繁的使用一些对话框来完成特定的功能。

因此Windows系统直接提供了这类对话框,使得获取一个颜色,文字或字体变的非常简单。

消息对话框是通过全局函数或者窗口类的成员函数创建并显示的,对话框中的内容在调用时由参数确定。

(2)控件类

控件是一些实现了特殊功能的子窗口,它们充当了窗口中的交互元素,每个控件都有特定的风格为用户提供反馈信息。

MFC的控件都派生自CWnd类,所有的控件都可以看作是它们所在窗口的子窗口。

CWnd类中实现了大多数窗口和控件常用的方法。

程序调用的CWnd派生类的成员函数经常不是由派生类自身提供的,而是在类CWnd中定义的。

CWnd类中还包含一些On开头的函数,这类函数用于处理窗口消息。

几个重要的控件:

(1)按钮

MFC中下压式按钮、单选按钮、复选框控件使用同一个CButton类。

一个CButton对象可以是它们中的一种,这由它的按钮风格和成员函数Create的初始化决定。

既可以从对话框模板中创建一个按钮控件,也可以直接在代码中创建。

无论哪种情况,都要先调用CButton类的构造函数构造一个CButton对象,然后调用成员函数Create创建Windows按钮控件并应用到CButton对象上。

(2)标签

CStatic类提供了一个Windows静态控件的性能。

静态控件用来显示文本字符串、框、矩形、图标、光标、位图以及增强的图元文件,分别以7种形态存在。

一个静态控件一般不接收输入,也不提供输出,但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父窗口有关单击的消息。

(3)编辑框

编辑控件是用来接受并显示用户输入的控件,MFC中封装编辑框的类为CEdit。

编辑控件是一种子窗口矩形,可以通过对话框模板或直接从代码中创建一个编辑控件。

CEdit从CWnd继承了很多重要功能,还实现了很多多行文本编辑的功能。

设置文本用SetWindowText,取得文本用GetWindowText,不管是多行文本还是单行文本,都可以用这种方法。

(4)列表框

列表框控件通常用来列出一系列可供用户从中进行选择的项,这些项可以用字符串的形式给出,也可以采用图形等。

可以设置允许用户在列表框中选择一个或多个控件。

当选择了某项时,列表框向父窗口发送一条通知消息。

MFC类CListBox封装了Windows标准列表框控件,其成员函数提供了对标准列表框的绝大多数操作。

(5)组合框

组合框(ComboBox)可以看作是一个编辑框或静态文本框与一个列表框的组合。

组合框有以下3种风格:

(1)CBS_SIMPLE风格,列表框总是可见,组合框上半部分为编辑框。

(2)CBS_DROPDOWN风格,当用户单击下拉箭头时列表框弹出,组合框上半部分为编辑框。

(3)CBS_DROPDOWNLIST风格,当用户单击下拉箭头时列表框弹出,组合框上半部分为静态控件。

(3)CView类

在MFC文档视图架构中,CView类是所有视图类的基类,它提供了用户自定义视图类的公共接口。

在文档视图架构中,文档负责管理和维护数据,而视图类则负责以下3项工作:

(1)从文档类中将文档中的数据取出后显示给用户。

(2)接受用户对文档中数据的编辑和修改。

(3)将修改的结果反馈给文档类,由文档类将修改后的内容保存到磁盘文件中。

CView是一个抽象类。

这个函数必须被重载,通常执行如下操作:

(1)以GetDocument()函数获得视图对应文档的指针。

(2)读取对应文档中的数据。

(3)显示这些数据。

MFC体系框架在分工时把对显示器的显示输出和对打印机的显示输出全部都交给了视图类。

CView派生类包括以下9种:

(1)CScrollView:

提供滚动支持,包括上下滚动和左右滚动。

(2)CCtrlView:

支持tree、list和richedit控件,也就是说在这个视图中可以操作这些控件来进行特定格式的显示。

(3)CDaoRecordView:

在dialog-box控件中显示数据库记录。

(4)CEditView:

提供了一个简单的多行文本编辑器。

(5)CFormView:

包含dialog-box控件,可滚动,基于对话框模板资源。

(6)CListView:

支持list控件。

(7)CRecordView:

在dialog-box控件中显示数据库记录。

(8)CRichEditView:

支持richedit控件。

(9)CTreeView:

支持tree控件。

(4)CDOcument类

在使用CDocument存储数据时,程序必须把数据以一定的顺序保存到文件中,同样以这个顺序再读取出来。

存储的数据就像是排列好的一样,这种特性称为数据的串行化。

这种把对象内容存入一个文件或从一个文件中读取对象内容的过程称为序列化。

在MFC中,要使从CObject派生的类具有串行化数据的功能,需要做如下工作:

(1)定义该类时,在类说明中使用DECLARE_SERIAL(CLASSNMAE)宏。

(2)定义一个不带参数的构造函数(默认构造函数)。

(3)在类的实现文件中使用IMPLEMENT_SERIAL(CLASSNAME,BASECLASS)宏。

(4)覆盖Serialize成员函数(如果直接调用Serialize函数进行序列化读写,可以省略前面3步)。

(5)CFrameWnd类

在MFC中,文档是真正的数据载体,视图是文档的显示界面,对应同一个文档,可能存在多个视图界面,同时需要另外一种事物来将这些界面管理起来,这种事物就是框架。

MFC提供两种类型的框架窗口:

单文档窗口SDI和多文档窗口MDI。

单文档窗口一次只能打开一个文档框架窗口,而多文档窗口应用程序中可以打开多个文档框架窗口,即子窗口。

2.2.4WindowsGDI

GDI是GraphicsDeviceInterface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。

 

 在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。

GDI的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。

  GDI具有如下特点:

1.不允许程序直接访问物理显示硬件,通过称为“设备环境”的抽象接口间接访问显示硬件;  2.程序需要与显示硬件(显示器、打印机等)进行通讯时,必须首先获得与特定窗口相关联的设备环境;  3.用户无需关心具体的物理设备类型;  4.Windows参考设备环境的数据结构

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

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

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