用Flash软件制作贪吃蛇的游戏的设计原理.doc_第1页
用Flash软件制作贪吃蛇的游戏的设计原理.doc_第2页
用Flash软件制作贪吃蛇的游戏的设计原理.doc_第3页
用Flash软件制作贪吃蛇的游戏的设计原理.doc_第4页
用Flash软件制作贪吃蛇的游戏的设计原理.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

游戏毕业设计论文 1.游戏设计背景随着科技与经济的快速发达,知识经济的快速增长,娱乐逐渐变成人与智能的交流。智能化的娱乐游戏在网络里愈来愈好,众多的游戏不胜枚举。比如益智类的小游戏、腾讯游戏、网页游戏、格斗游戏、模拟游戏等,尤其是最近网络上特别流行的flash制作的动画越来越受关注。现在就探究下用flash软件制作贪吃蛇的游戏的设计原理。1.1游戏设计原理游戏贪吃蛇就是在flash软件用影片剪辑设计出蛇,食物,同时随机地给出食物。游戏者通过键盘操作控制贪吃蛇的移动,去吃食物,吃到食物后消失,然后再随机给出食物同时蛇的身体增长。设计蛇的原理就是利用人眼的视觉效应先将蛇头向前移动一格,然后所有蛇身依次向前移动一格,最后再擦除蛇尾。这样看来好像蛇在向前移动。食物的给出,首先需要产生一个随机数,然后通过这个随机数计算得到食物的纵横坐标,在软件运行效果里显示出来。控制蛇的移动方向,需要扫描键盘,然后根据键值改变蛇的移动方向。1.2游戏设计的运行环境学习flash开发,首先要建立首要的、基础的正确认知。在几乎任何应用程序开发中,都要接触到三个相互关联的方面:一个是开发环境,一个是运行环境,再一个是开发语言。1.2.1软件开发环境flash应用程序开发也包含着三个方面,即使用flash cs3作为开发环境,以actionscript 2.0作为开发语言,以flash player 9为运行环境进行flash应用程序开发和创作的完整知识体系。对于flash应用程序开发,在进行flash开发时,安装一个开发工具(也被称为开发环境、创作环境等。目前流行的flash开发工具基本都是adobe公司的产品,最著名的就是flash cs3和flex。1.2.2运行环境windowsmacintosh处理器800 mhz intel pentium iii processor (or equivalent) and later600 mhz powerpc g3 and later操作系统windows 2000, windows xpmac os x 10.3, 10.4内存256 mb ram (1 gb recommended to run more than one studio 8 product simultaneously)256 mb ram (1 gb recommended to run more than one studio 8 product simultaneously) 显示1024 x 768, 16-bit display (32-bit recommended)1024 x 768, thousands of colors display (millions of colors recommended) 磁盘空间710 mb available disk space360 mb available disk space1.2.3开发语言用户要进行flash开发,要接触是actionscript(简称as),actionscript程序语言是用于flash开发的交互语言。actionscript有三种语言编写风格,这就是as1、as2和as3。as1遵循ecma-262第3版所制定的规范,as2遵循即将发布的ecma-262第4版规范,但它们的运行环境只有一种,即flash player vm(adobe称为avm1,avm是actionscript虚拟机的简称)。2.游戏设计相关知识介绍了解贪吃蛇的设计原理后,接下来就是对设计游戏的一些相关理论知识基础及深入点的分层次介绍。2.1 flash理论基础知识要点2.1.1 基础概念(1)帧频是动画播放的速度,以每秒播放的帧数为度量。帧频太慢会使动画看起来一顿一顿的,帧频太快会使动画的细节变得模糊。在 web 上,每秒 12 帧 (fps) 的帧频通常会得到最佳的效果。quicktime 和avi 影片通常的帧频就是 12 fps,但是标准的运动图像速率是 24 fps。(2)将元件看作是一种模板,使用同一个模板能够创建多个实例。对元件的实例可以做各种变换操作,而这些操作不会对元件的各种属性有所更改。也可以改变元件的属性,例如颜色、形状以及边线的粗细等。当对这些属性加以修改后,舞台上的所有实例的相应属性也发生了变化。(3)影片剪辑拥有自身的、独立于主影片的时间轴播放的多帧时间轴,即可以将影片剪辑看作主影片内的小影片,它可以包含交互式控件、声音、甚至其他影片剪辑实例,也可以将影片剪辑实例放置在按钮元件的时间轴内,以创建动画按钮。(4)点语法:_root:表示绝对路径,他指的是时间主轴。_parent:表示当前时间轴,可以操控当前时间轴上的对象等。变量作用域分为全局变量、本地变量和时间轴变量。2.1.2基本语法规则及简单注意事项(1)变量、函数、对象、操作符、保留关键字等语言元素,有它自己的语法规则。actionscript拥有自己的句法和标点符号使用规则,这些规则规定了一些字符和关键字的含义,以及它们的书写顺序。例如,在英语中句号结束一个句子,而在actionscript中则用分号结束一个语句。(2)动画设计过程中的简单注意事项。确保处在动画测试模式。确保不在多层中添加相互矛盾的帧动作。确保多个动作脚本元素没有使用相同的名字。确保所有的目标路径以确保他们的正确无误。2.2面向对象编程“对象” 是指属性和方法的集合,每个对象都具有其各自的名称,并且都是特定类的实例。相比较而言,对象是一个形象具体的概念,如生活中所使用的笔、纸张、书籍、计算机等,都可称之为对象。而对于每个对象来说,它们都具有一些区别于其他对象的个体属性,如大小、形状、颜色、使用方法等。在面向对象编程中,类定义对象的类别,描述对象的属性(数据)和行为(方法),类是一个较为抽象的概念,可以说是对象概念的提升,利用类可表现一组相关对象中某些公共的属性和行为。如果要使用类所定义的属性和方法,必须先创建该类的实例,实例化对象其实就是指定某个特定的对象。 2.3游戏制作中常用函数的属性与方法2.3.1 mouse类使用mouse类的方法可隐藏和显示swf文件中的鼠标指针(光标)。默认情况下鼠标指针是可见的,但是用户可以将其隐藏并实现用影片剪辑创建的自定义指针。方法名用法说明mouse.showmouse.show()在swf文件中显示鼠标指针,指针在默认情况下可见mouse.hidemouse.hide()隐藏swf文件中的鼠标指针mouse.addlistenermouse.addlistener(newlistener)注册一个对象以接收onmousedown、onmousemove和onmouseup通知。(参数:newlistener为一个对象)mouse.removelistenermouse.removelistener(listener)删除用addlistener方法注册的对象。(参数:listener为一个)movieclip.onmousedownmymovieclip.onmousedown当按下鼠标左键时调用movieclip.onmousemovemymovieclip.ommousemove当鼠标移动时调用movieclip.onmouseupmymovieclip.onmouseup当释放鼠标左键时调用2.3.2 key类key类是不通过构造函数即可使用其方法和属性的顶级类。使用key类的方法可生成用户能够通过标准键盘控制的界面,该类的属性是常量,表示控制游戏时最经常使用的键。方法名用法说明key.addlistenerkey.addlistener(newlistener)注册一个对象,以接收onkeydown或onkeyup的通知key.getasciikey.getascii()返回按下或释放的最后一个按键的ascii码值key.getcodekey.getcode()返回最后一次按键的键控代码值key.isdownkey.isdown(keycode)判断是否按下了参数keycode中指定的键。若按下则返回true;否则将返回false。key.istoggledkey.istoggled(keycode) 判断capslock键或numlock键是否处于激活状态,若是则返回true。key.removelistenerkey.removelistener(ustener)删除通过addlistener方法注册的对象。若删除成功,则返回true;否则返回false。key.onkeydownsomelistener.onkeydown当按下某个按键时获得通知key.onkeyupsomelistener.onkeyup当释放某个按键时获得通知2.3.3 button类 按钮是flash影片中实现交互功能最常见的对象,swf文件中的所有按钮元件都是对象的实例,用户可在属性检查器中指定按钮实例名称,并通过动作脚本使用button法和属性来操纵按钮。名称用法说明button.ondragoutmybutton.ondragout当在按钮上按下鼠标按键,并且不释放按键时,然后将鼠标指针滑出按钮时调用事件button.ondragovermybutton.ondragover当用户在按钮上按下鼠标,然后在不释放按键的情况下将鼠标指针拖到按钮之外后,再次将鼠标指针移到按钮上方时调用事件button.onkeydownmybutton.onkeydown当按下键盘上的某个按键时调用事件button.onkeyupmybutton.onkeyup当释放键盘上的某个按键时调用事件button.onpressmybutton.onpress当在按钮上按下鼠标按键时调用事件button.onreleasemybutton.onrelease当用户释放鼠标左键时调用事件2.3.4 movieclip类movieclip中类的方法提供的功能与定位影片剪辑的动作所提供的功能相同,无需使用构造函数方法即可调用movieclip类的方法,用户只需在语法中按名称引用影片剪辑实例即可。方法名与用法mymovieclip.attachmovie(idname,newname,depth,initobject)从【库】面板中取出一个元件,并将其附加到舞台上由movieclip指定的影片中。mymovieclip.createmptymovieclip(instancename,depth)为现有的影片剪辑元件实例创建子级的空影片剪辑元件实例。新创建的空影片剪辑的注册点为左上角。mymovieclip.createtextfield(instancename,depth,x,y,width,height)创建现有影片剪辑元件实例的子级空文本字段。mymovieclip.duplicatemovieclip(newname,depth,initobject) 在影片播放时,复制指定影片剪辑元件的实例。mymovieclip.gotoandplay(frame) 跳转到指定帧并开始播放影片。mymovieclip.gotoandstop(frame) 将播放头跳转到指定的帧,并停止影片的播放。mymovieclip.hittest(x,y,shapeflag) movieclip.hittest(target)判断指定的实例是否与标识的点击区域或target重叠或交叉。mymovieclip.loadmovie(url,variables)在播放原始swf影片时,将外部swf或jpeg文件加载到flashplayer中的影片剪辑中。mymovieclip.removemovieclip()删除使用duplicatemovieclip动作或movieclip对duplicatemovieclip或attachmovie方法创建的影片剪辑元件实例。mymovieclip.unloadmovie() 删除使用loadmovie或attachmovie方法加载的影片剪辑元件实例。movieclip类的事件处理函数的八种状态名称用法说明movieclip.ondatamymovieclip.ondata当影片剪辑元件实例通过loadvariables或loadmovie方法调用接收数据时调用事件movieclip.onkeydownmymovieclip.onkeydown当影片剪辑元件实例设置了输入焦点,并且有按键被按下时调用事件movieclip.onkeyupmymovieclip.onkeyup当键盘按键被释放时调用事件movieclip.onmousedownmymovieclip.onmousedown当鼠标左键按下时调用事件ovieclip.onmousemovemymovieclip.onmousemove当移动鼠标时调用事件movieclip.onmouseupmymovieclip.onmouseup当释放鼠标时调用事件movieclip.onpressmymovieclip.onpress当用户在指定的影片剪辑元件实例上按下鼠标左键时调用事件movieclip.onreleasemymovieclip.onrelease当用户在指定的影片剪辑元件实例上释放鼠标左键时调用事件2.3.5 sound类与math类math类的方法和属性可以访问和处理数学常数和函数。math类的所有属性和方法都是静态的,并且必须使用语法math.method(parameter)或math.constant来调用。游戏中食物的随机出现就是利用了math函数里的随机函数。游戏里的背景音乐还有对声音图标的控制也就是通过面向对象编程里的sound类函数来控制实现的。名称用法说明sound.attachsoundmysound.attachsound(idname)将指定标识符名称的声音文件附加到sound对象中sound.startmysound.start(secondoffset,loop)指定声音文件的播放sound.stopsound.stop(idname)当指定了要停止播放的声音时,将停止该声音的播放;若未指定idname参数,则停止当前所有声音的播放sound.setvolumemysound.setvolume(volume)设置sound对象的音量sound.loadsoundmysound.loadsound(url,isstreaming)将mp3声音文件加载到sound对象的实例中2.3.6 array类通过array 类用户可以访问和操纵数组。数组是一个对象,其属性由表示该属性在数组中位置的数字来标识。此数字称为“索引”。所有数组都从零开始,这意味着数组中的第一个元素为 0,第二个元素为 1,依此类推。方法说明array.concat()连接参数,并将其作为新数组返回array.join()将数组内的所有元素联接为一个字符串array.pop()删除数组中最后一个元素,并返回该元素的值array.push()将一个或多个元素添加到数组的结尾,并返回该数组的新长度array.reverse()倒转数组的方向array.shift()删除数组中第一个元素,并返回该元素的值属性说明array.length指定数组中元素数量的非从零开始的整数3. 制作贪吃蛇游戏的整体规划贪吃蛇游戏设计整体结构图3.1贪吃蛇游戏的大致结构图游戏封面背景与主题游戏运行界面核心代码风格与设计影片剪辑函数脚本3.2游戏设计整体构思首先场景规划,主要有两个:一个是游戏封面,一个是游戏运行界面。其次是电影影片剪辑,主要有蛇,食物,背景设计等,按钮及文字属性都有自己的实例名,便于脚本控制。最后对整体的进行核心代码编写与控制。在软件环境里运行并调试,发现问题,分析并解决。最后发布游戏。3.3透视游戏设计的核心重点算法贪吃蛇的核心算法是如何实现移动和吃掉食物。没有碰到食物的时候,贪吃蛇继续移动,吃到食物的时候,蛇身增长。咬住蛇身或蛇尾的时候,能够暂停和开始。让游戏继续下去,食物随机出现,贪吃蛇继续游动,并记录游戏所得分数。3.4游戏设计核心重点函数控制(1)新建一个数组来保存当前的蛇的身体apiecelist = new array();(2)定义mouselistener对象来侦听鼠标的onmousedown点击事件mouselistener = new object();mouselistener.onmousedown = function()函数体;(3)addpiece函数的作用是调用一段身体来增长蛇身。(4)movefood函数的作用是当碰撞到食物的时候移动食物的位置。(5)startgame是脚本中重要的一部分。包括蛇的移动,碰撞和增加蛇身。4. 游戏详细设计与核心技术4.1游戏的详细设计实现游戏,主要的目的就是场景的布局及影片剪辑的在舞台中的动画实现。重点脚本代码的实现后台控制角色的运动。主要的设计内容就是如下步骤所示:4.1.1 游戏的设计的内容 (1) 新建一个300*500的文档;(2)设置文档属性中的帧频为12(设置的更高游戏的速度更快);(3)新建两个场景,分别命名为:sceneone、scenetwo;(4)分别对两个场景设置背景效果,是风格独具一格,注重色彩的搭配;(5)设置主题文字效果,并为每个场景创建影片剪辑与按钮;(6)为帧和按钮添加事件,脚本代码;(7)测试影片,保存并发布。 4.1.2游戏影片剪辑的设计场景1(sceneone):(1)封面背景(2)设计封面主题文字与游戏规则(3)添加“游戏进入“按钮,并为该按钮添加:on(release)gotoandplay(scenetwo,1);场景2(scenetwo):(1)游戏运行背景,风格是手机类状的墨绿背景。(2)新建一层“屏幕”,在舞台上画个无边框的矩形,渐变填充色,具体属性如下:w:300 h:300 x:0 y:0 (3)选择文本工具,在属性面板中设置为动态文本。在矩形的正下方放置一个动态文本来显示所得的分数。文本中写上start,设置字体和颜色。实例名称为tsc

温馨提示

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

评论

0/150

提交评论