超级玛丽奥游戏设计.docx
- 文档编号:24604905
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:57
- 大小:518.51KB
超级玛丽奥游戏设计.docx
《超级玛丽奥游戏设计.docx》由会员分享,可在线阅读,更多相关《超级玛丽奥游戏设计.docx(57页珍藏版)》请在冰豆网上搜索。
超级玛丽奥游戏设计
1绪论
随着中国经济实力的不断提高,游戏开发商也不断的涌现出来。
在众多类型的游戏中,尤属网络游戏的势头最猛,已经成为了上班族日常休闲娱乐不可缺少的一部分。
据报告指出,网络游戏市场已经成为中国游戏产业中最有活力的部分,互联网和宽带的进一步普及,也加快了网络游戏产品的开发速度和商业化进程,网络游戏用户呈现两位数的增长速度。
专家认为,在2012年前,网游业每年的增长率将保持在20%以上,到2012年,网游产业的收入将达到686亿元。
当前中国网络游戏出版产业正面临着难得的发展机遇。
网络游戏出版已经被纳入了国家文化建设的总体规划当中,网络游戏发展的宏观环境也在不断改善,这些都将为中国游戏产业注入新的活力。
更令人欣喜的是中国网络游戏企业的原创能力迅速增强。
根据资料显示,中国民族网络游戏产业已经连续三年占国内网络游戏60%以上的份额,呈现出强有力的竞争优势,从根本上扭转了国外网络游戏在中国市场一统天下的局面。
而盛大、网易等12家游戏领军企业带领中国网游产品“冲向世界”,迄今已将20多款中国网络游戏销往全球的20多个国家和地区,增长幅度达到175%。
网络游戏产业逆市飘红:
在全球金融危机的冲击下,不少企业被迫降薪,甚至裁员,以求缩减开支、勉强过冬。
而我国网游行业的发展势头依旧强劲、全线飘红,据悉,在实体产业出口普遍吃紧的情势下,去年一年中国共有15家网络游戏公司的33款自主研发的网络游戏进入北美、欧洲、日韩、东南亚等40多个国家,年销售收入超过1亿元。
《梦幻西游》《征途》《天龙八部》《诛仙》《传奇世界》……在网民选出的排名前十位最受欢迎网络游戏中,自主研发的网游占了6席,中国网络游戏原创力量正在稳步发展。
数据显示,2008年我国网络游戏研发公司达131家,自主研发网络游戏总数达286款,实际销售收入达110亿元人民币,占中国网络游戏市场总收入的近六成,主导地位和市场价值日益凸现。
中国网络游戏增势不减、市场巨大:
在中国,每年新增网民超过5000万,市场巨大。
专家认为,网络游戏定位于大众化娱乐,收费低廉,内容丰富,有利于缓解人们因工作学习紧张或经济不景气造成的心理压力。
另外,我国主要网络游戏企业多是上市公司或拟上市公司,现金流充足,从财务报表和服务器端数来看,全国主要网络游戏企业增长态势未减。
艾瑞咨询也认为,未来几年,网游行业仍将保持良好的发展势头,在2012年前,网游业每年的增长率将保持在20%以上,到2012年,网游产业的收入将达到686亿元。
大批公司成功上市:
受国内网络游戏产业市场发展前景看好的影响,网络游戏产业资本显得格外活跃。
随着中国网络游戏行业的市场不断壮大,一大批公司成功上市,资本投资已经通过各种方式涌入网游行业。
继盛大、九城上市之后,在2007年又有完美时空、金山、巨人、网龙等以自主研发为特点的企业在不同的地区完成了IPO,通过资本市场融得了企业发展所需的资金,也使网络游戏行业资本积累迅速增加。
在网游行业内部,盛大、腾讯等行业领先者不断投入巨额资金,扶植行业中的中小企业,大规模开发网络游戏新产品。
这方面典型的案例就是盛大收购锦天科技、腾讯控股深圳网域。
国内的厂商还通过加强与国际开发商的合作进行游戏开发,共享双方的技术和经验,并参与全球分成。
典型的案例如:
盛大收购韩国Actoz,盛大投资NCsoft中国子公司,EA参股九城等资本层面的合作,这意味着中国游戏产业已经对世界网络游戏格局产生了不可忽视的影响。
中国游戏市场潜力巨大,在未来几年内,中国将从资金投入、创造产业环境、保护知识产权以及加强对企业引导等方面对国内的游戏企业加以扶持。
亚洲将是未来全球网络游戏的重要市场,而中国和日本将成为地区最大的两个在线游戏市场。
2超级玛丽奥的游戏概述
2.1游戏简介
马里奥的出道可以追溯到1981年的街机游戏《大金刚》,那时还没有马里奥这个名字,只是单纯地将他设定为一个意大利人角色。
当时对马里奥有“Mr.电子游戏”、“跳跃人”等非正式的称呼。
关于正式命名还有一段典故。
当游戏《大金刚》被拿到美国任天堂分部的时候,公司员工发现在有一个在仓库中工作的工人Mario,相貌和动作酷似游戏中的“跳跃人”,于是“马里奥”也就成了这个明星角色的正式名字。
1953年有一部法国电影《恐怖的报酬》,主人公名叫马里奥,搭档名叫路易基。
帽子加背带工作服、大鼻子和胡子等特征,离英雄的形象相差甚远。
再加上少许肥胖的身材,稍不留神可能就会把我们的英雄马里奥当成在便利店打工的中年大叔。
但是形象上所带来的个性和亲切感,却在玩家的心中根深蒂固。
马里奥的诞生之父宫本茂的设计理念就是“像记号一般让人一目了然的外貌,容易表现动作的配色”。
当时限于硬件的机能,无法表现精密的画面。
为了清楚表现人物的动作,就把马里奥的服装设计成了背带工作服,这样可以很好地表现出手臂的动作。
关于脸部的设计,当时的考虑是,就算设计得很仔细,在电视上也无法表现出来。
有特点、容易辨认,才是设计的重点。
所以就有了大鼻子、留胡子、戴帽子的设计。
说到服装颜色的组合,也不只局限于一种。
在《马里奥兄弟》中是蓝色工作服加红色衬衫。
而在《大金刚》中却是红色工作服加蓝色衬衫的相反组合。
在《超级马里奥兄弟》中,由于分辨率太低,马里奥没有戴手套。
初次登场开始两年后,还默默无闻的马里奥又出现在《大金刚Jr.》中。
游戏中马里奥反串了绑架大金刚的绑匪,是一个使用鞭子操纵着怪物的角色。
之后在《网球》和《PUNCHOUT》游戏中还客串过裁判。
马里奥的名字第一次出现在游戏标题中是《马里奥兄弟》这款游戏,而且他的弟弟路易基也初次登场。
渐渐地,马里奥的个性也开始显现出来。
而且也是在这个时候,他开始作为游戏的主人公,并开始独当一面了。
到了1985年,把马里奥捧成明星的决定之作《超级马里奥兄弟》登场。
保留了用头顶、用脚踩等基本动作系统的同时,更是加入了身体变大、发射火炮等多彩的系统。
因此,马里奥也就成了真正的动作英雄。
特别是吃到蘑菇后,身体变大的系统,给人强烈的震撼。
一时间本作成为广大玩家的宠儿,马里奥也终于坐上了明星的宝座。
从此马里奥的动作英雄传说,便一发而不可收。
续篇2代、3代,也是一经推出,便马上热销。
之后,更是进入了马里奥的颠峰时代。
不只是动作游戏,作为医生的《马里奥医生》和高尔夫球手《马里奥高尔夫》,已经完全确立了马里奥在当时整个日本游戏界的地位。
随着《超级马里奥USA》等国际版本的推出,马里奥的人气在全世界开始爆发。
1990年在美国进行的调查显示,美国人对马里奥的认知度甚至超过了美国本土的明星米老鼠。
一个游戏角色能达到如此出名的地步,就连宫本茂也没有想到。
很多第三方的软件公司也开始制作关于马里奥的游戏。
如NAMCO的棒球游戏《超级马里奥体育馆》,KONAMI的音乐游戏《D.D.R.with马里奥》等。
马里奥在这些本不属于自己风格的游戏中,也表现得非常成功。
也许是大明星才能具备这样的才能吧。
马里奥的活跃并不只局限在游戏界,他的影响已经渗透到了电影界。
1986年日本制作的卡通电影《超级马里奥·碧奇公主救出大作战》,在日本也取得了不错的票房。
1993年好莱坞制作了真人版的电影《超级马里奥·魔界帝国的女神》,并大规模在各地上映。
任天堂一旦推出新主机,势必会首先推出标题中带有“马里奥”字眼的游戏,这种倾向至今仍在继续。
从诞生到现在,马里奥虽然已走过了很长的历史,但从外型来看几乎没有任何变化。
即使变成了3D,无论穿上什么样的服装,外貌始终是传统的马里奥。
从某种意义上说,这种“长寿”的表现,也是对FANS的一种忠诚。
注:
根据牛津英汉高阶词典(第六版),Mario的确是应该译为“马里奥”,而不是“马力欧”,更不是所谓“玛丽”。
2.2游戏功能描述
最原始的超级马里奥游戏由玩家控制一个人物角色,在一个充满山川,河流的美丽的场景中。
通过跳跃,火球等攻击手法,通过层层障碍,最终到达目的地游戏。
当玩家碰到小怪或者掉入河流中,则挑战失败,需要重新开始。
当玩家挑战当前关卡成功,将进入下一个场景,进行下一关的挑战,直至挑战完所有关卡。
在闯关的过程中,玩家还可以通过水管进入到当前关卡的副本,在里面可以得到相当多的金币奖励。
3开发工具说明
3.1VC++的优点
vc++是由Microsoft公司制作,基于WINDOW环境的一款编程软件。
由于WINDOWS操作系统比起MS_DOS操作系统优越了很多,作为与之相搭配的编程软件自然也是功能非常强大,其最大的特点也就是可视化。
不过在提供可视化的编程方式的同时,它采用了面向对象的程序设计方法,同传统的结果化程序设计方法相比,缩短了软件开发的周期,提高了软件的开发效率,使程序员可以更好地理解和管理庞大且复杂的程序。
VC中还集成了大量的最新技术,如ActrveX,COM,Ado等技术合适开发大型工程,这是相对于VB的一个优势,它的兼容性较好,还为用户提供了极为丰富的文档和范例。
关于VC的参考资资料也非常多,程序开发人员可以紧紧地把握住软件开发技术发展的方向,开发出功能强大的应用程序。
3.2WINDOWS编程机制
WINDOWS是一个多进程的图形窗口操作系统,WINDOWS,应用程序与DOS应用程序有很大的区别,DOS应用程序采用顺序执行过程,而WINDOWS是一个基于事件的消息(Message)驱动系统。
消息驱动是WINDOWS应用程序的核心,消息不仅可由WINDOWS发出,它也可由应用程序本身或其他程序产生。
所有的外部响应(如改变窗口大小或移动,单机鼠标等),该动作就会触发一个响应的”事件”而被Windows先拦截,转化成消息后在发送到指定应用程序的消息队列,从而使程序可以处理该事件,处理完以后,在等待下一个事件的发生。
3.3面向对象软件开发过程及思想
面向对象方法是一种把面向对象的理念应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学,对象是由书记和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相识性质的一组对象。
而继承性是对具有层次关系的类的属性和操作进行共享的一种方式。
所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建响应的软件系统。
面向对象方法的具体实施步骤如下:
第一:
面向对象分析:
从问题陈述入手,分析和构造所关心的显示世界问题域的模型,并用相应的符号系统表示。
模式必须是简洁,明确地抽象目标系统必须做的事,而不是如何做,分析步骤为:
a.确定问题域,包括定义论域,选择论域,根据需要细化和增加论域;b.区分类和对象,包括定义对象,定义类,命名;c.区分整体对象以及组成部分,确定类的关系以及结构;d定义属性,包括确定属性,安排属性;e定义服务,包括确定对象状态,确定所需服务,确定消息连结;f确定附加的系统约束。
第二:
面向对象设计:
面向对象的设计与传统的以功能分解为主的设计有所不同,集团设计步骤为:
a应用面向对象分析,对用其他方法得到的系统分析的结果进行改进和完善;b设计交互过程和用户接口;c设计任务管理,根据前一步骤确定是否需要多重任务,确定并发性,确定以何种方式驱动任务,设计子系统以及任务之间的协调与通信方式,确定优先级;d设计全局资源,确定边界条件,确定任务或子系统的软,硬件分配;e对象设计
第三:
面向对象的实现:
使用面向对象语言实现面向对象的设计相对比较容易,如果用非面向对象语言实现面向对象的设计时,特别需要注意和规定保留程序的面向对象结构。
传统的面向功能的方法学中,强调的是确定和分解系统功能,这种做法虽然是目标的最直接的实现方式,但是由于功能是软件系统中最不稳定,最容易变化的方面,因而是系统难以维护和扩展。
面向对象设计首先强调来自域的对象,然后围绕对象设置属性和操作,用面向对象设计,其结构源于客观世界稳定的对象结构,因而与传统软件设计方法相比,明显提高了软件的生成率,可靠性,易重用性,易维护性等方面的效果。
4游戏具体实现
4.1游戏的总体设计
本游戏的界面比较的简单,使人看上去直观,明了。
主界面上有两个选择项(START,EXPLAIN)。
选择STRAT可以进入到游戏界面,在进入游戏界面之前要停留在黑屏界面中大约2秒,可以看到当前的生命数值和关卡。
选择EXPLAIN可以进入到说明界面,里面有操作,制作,邮箱等信息。
游戏的操作主要由键盘来操作,键盘上的左右键来控制游戏角色的移动,Z键发射子弹,X键弹跳,W默认窗口大小。
进入到游戏界面,游戏区有16列,12行,左上角显示当前的金币值。
游戏中所用到的类如下图4-1所示。
图4-1游戏中的类
从框架窗口中可以看到实现此游戏需要的类,在超级马里奥游戏中具体使用到的类和结构体详情可以参见图4-2。
图4-2游戏中类和结构关系图
表4-1用于存储数据的全局变量说明
变量名
数据类型
说明
pPreText
Char*
所有菜单文字
mapani
Int[2][10]
所有动态元素图片的宽高
mapsolid
Int[2][13]
所有地图物品图片的宽高
mapanibk
Int[2][4]
所有背景物品图片的宽高
mapanimagic
Int[2][1]
旋风的宽高
allmapinfo
StructMAPINFO
所有地图信息
Gl_enemy_normal
StructROLE
普通蘑菇兵模板
fi
FILEREPORT
跟踪打印
C1
MYCLOCK
计时器
gamemap
GAMEMAP
游戏全部逻辑
bmPre
MYBITMAP
菜单背景(如通关,GAMEOVER)
bmSky
MYBKSKY
天空背景
bmMap
MYANIOBJ
地图物品
bmMapBkObj
MYANIOBJ
地图背景物品
bmAniObj
MYANIOBJ
所有动态元素
rmain
MYROLE
玩家角色
bmMagic
MYANIMAGIC
旋风
myfont
MYFONT
字体
hwindow
HDC
窗口DC
hscreen
HDC
地图DC
hmem
HDC
临时DC
Hmem2
HDC
临时DC2
hmapnull
HBITMAP
空位图
wwin
int
显示器屏幕宽
hwin
Int
显示器屏幕高
wwingame
Int
当前窗口宽
hwingame
Int
当前窗口高
hWndMain
HWND
窗口句柄
图4-3游戏架构
玩家
选择攻击方式
进行攻击
移动角色
过关进入下一关
进入副本
游戏失败
重新开始
开始游戏
4.2建立工程框架
在VC++中建立超级马里奥游戏的基本框架,步骤如下:
(1)启动VC++6.0程序,单击菜单:
File->New,打开”New”对话框,单击”Project”选项卡,选择“Win32Application”,输入工程名,并设置路径,如图4-4所示。
图4-4“New”对话框
(2)单击“OK”按钮,弹出“Win32Application”对话框,如图4-5所示。
图4-5“Win32Application”对话框
(3)选择“AsimpleWin32application”选项,单击“Finish”按钮,弹出“NewProjectInformatin”对话框,在单击“OK”,新建工程成功,如图4-6所示。
图4-6“NewProjectInformation”对话框
4.3游戏中的位图图片
4.3.1位图图片的说明
游戏中的图像可以分成2种,矩形图片和不规则图片。
其中:
矩形图片有:
地面,砖块,水管,血条,血条背景。
不规则图片有:
蘑菇(分为玩家控制的角色,敌人1和敌人2),子弹,旋风,爆炸效果,撞击金币后的得分,攻击武器切换,火圈1,火圈2,箭头(用于开始菜单的选择),树木,河流,WIN标志,背景图片(游戏背景和菜单背景)
图片说明:
所有图片都分成几个位图BMP文件存储,一个文件中,每个图片,都是纵向排列的。
每个图片都可能有很多帧(帧为横向的),比如,金币需要4帧图像,才能构成一个旋转的动画效果。
图像层的结构就这么简单,逻辑层只需要确定,”哪张图片,哪一帧”,这两个参数,就能在屏幕上绘制出所有图片。
4.3.2位图图片的加载
所有的位图图片都保存在工程文件夹下的PIC文件夹中,要使用该文件夹下的图片,需要对图片进行加载。
加载方法如下:
(1)单击菜单:
Insert->Resource,打开”InsertResource”对话框,如图4-7所示。
图4-7“InsertResource”对话框
(2)单击”Import”按钮,打开“ImportResource”对话框,在查找范围组合框中找到要加载的位图,如图4-8所示。
图4-8“ImportResource”对话框
(3)单击“Import按钮”,在“保存在”组合框中找到当前工程的工程目录,将该位图保存在当前工程目录下,并修改文件名为“mario01”,如图4-9所示。
图4-9“保存为”对话框
(4)单击“保存按钮”,这样就会在当前工程的工程目录下生成两个文件(mario01.rc和resource.h),在菜单栏中选择,“Project->AddToProject->Files”,打开“InsertFileIntoProject”对话框,选中这两个文件,如图4-10所示。
图4-10“InsertFilesintoProject”
(5)单击“OK”按钮这两个文件就被导入到了当前项目中,如图4-11所示。
图4-11导入到当前项目中
(6)最后在mario01.cpp文件中加上”resource.h”头文件,该BITMAP文件就可以正常使用了。
其他位图与资源的导入于此类似。
4.4超级马里奥游戏中类的说明
4.4.1图像层中的类
图像层中的类主要包括:
基类MYBITMAP,图片显示类MYANIOBJ,游戏背景类MYBKSKY,魔法攻击类MYANIMAGIC。
4.4.1.1图片基类MYBITMAP
MYBITMAP是一个基类,它所描述的图片是一个m行n列构成的m*n个图片,每个图片大小一致,都是矩形。
很明显,由图片的分类可以知道,图片有矩形图片和不规则图片,要想满足上面的设计要求,还是不行的。
要解决这个问题,需要提供更多的功能。
那么矩形图片的显示,不规则图片的显示,图片组织排列信息,这些功能就由后面的派生类MYANIOBJ来解决。
MYBITMAP只是用来封装足够的物理层信息,像绘图设备句柄HDC,和位图句柄HBITMAP。
由于这个类只能处理几个大小均等的图片,所以只有满足图片大小一致,并且都是矩形这个条件,才由该类处理。
如游戏开始时的菜单背景,操作信息的背景,每一关开始前的2秒黑屏,通关和游戏结束时显示的图片,将这5个图片,放在一个位图文件中统一进行处理。
表4-2MYBITMAP类中主要的成员函数说明
成员函数
参数
功能
voidInit(HINSTANCEhInstance,intiResource,introw,intcol);
应用程序实例句柄,资源ID,横向位图个数,纵向位图个数
根据一个位图文件,初始化图像
voidSetDevice(HDChdest,HDChsrc,intwwin,inthwin)
目的DC(要绘制图像的DC),临时DC,要绘制区域的宽和高
设置环境信息
voidSetPos(intistyle,intx,inty)
设置方法,横纵坐标
设置图片的位置
voidDraw(DWORDdwRop)
图片显示方式
图片显示
voidStretch(intx,inty)
横纵方向缩放比例
图片缩放显示
voidStretch(intx,inty,intid)
横纵方向缩放比例,缩放图像ID(纵向第几个)
图片缩放显示
voidShow(intx,inty)
横纵坐标
在指定的位置显示图片
voidShowCenter(inty)
纵坐标
横向居中显示图片
voidShowLoop(intleft,inttop,intright,intbottom,intiframe)
左上右下边界的坐标图片ID(横向第几个)
将某个图片平铺在一个区域内
voidShowNoBack(intx,inty,intiFrame)
横纵坐标,图片ID(横向第几个)
不规则图片显示
voidShowNoBackLoop(intx,inty,intiFrame,intiNum)
横纵坐标,图片ID(横向第几个),平铺个数
不规则图片横向平铺
voidSetAni(intx,inty)
横纵坐标
设置动画坐标
表4-3MYBITMAP类中主要的成员变量说明
成员变量名
数据类型
说明
f
FILEREPORT
跟踪打印类
hBm
HBITMAP
图像句柄
inum
int
按照行平均分成几个
jnum
int
按照列平均分成几个
width
int
按行列分割后,每个图片的宽
height
int
按行列分割后,每个图片的高
screenwidth
int
屏幕宽
screenheight
int
屏幕高
hdcdest
HDC
要绘制图片的DC
hdcsrc
HDC
用来选择图片的临时DC
xpos
int
当前位置横坐标
ypos
int
当前位置纵坐标
在该类中几点重要的说明:
由于基类只是封装了物理层的信息(DC和句柄),具体的实现还是在派生类MYANIOBJ中。
(1)图片的初始化:
根据程序实例句柄,位图文件的资源ID,导入该位图,得到位图的句柄,具体方法如下:
hBm=LoadBitMap(hInstance,MAKEINTRESOURCE(iResource))
接下来,获取该位图文件的相关信息,方法如下:
GetObject(hBm,sizeof(BITMAP),&bm)
最后,根据横纵方向的图片个数,计算出每个图片的宽高,相关的具体实现的方法如下:
Width=bm.bmWidth/inum,height=bm.bmHeight/jnum;
(2)图片显示:
每个图片的显示函数,基本相同,都要先将图片选入一个临时绘图设备句柄当中,然后通过函数bitblt到绘图的设备句柄上,进而绘制到屏幕上。
其中,矩形图片的绘制比较简单,可以直接用SRCCOPY的方式绘制,对应那些不规则的图片,需要先用黑白图与目的区域相“与”,再用“或”的方式,即SRCPAINT,显示图像,这是一种简单的“去背”方法,具体实现是通过调用该类中的ShowNoBack函数来实现的。
(3)图像的缩放:
该功能是通过StretchBlt的方法来实现的,具体实现过程被封装在Strech函数中。
(4)菜单背景,操作信息的背景,每关开始的黑屏,通关和结束5个图片的显示的图片由该基类来处理,具体活动过程如图:
4.4.1.2图片显示类MYANIOBJ
该类的主要功能是负责游戏中的图片的显示。
除大小一致的静态图片,如菜单背景,通关等由基类处理,游戏背景由MYBKSKY类处理之外,剩余的图片都由该类进行处理。
该类显示图片的方法与类MYBITMAP一样。
初始化时,是将图片的高度进行累加,即得到各图片的纵坐标。
表4-4MYANIOBJ类主要成员函数说明(非继承而来的和重载的)
成员函数
参数
功能
voidInitAniList(int*pw,int*ph,int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超级 玛丽 游戏 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)