FLASH贪吃蛇毕业设计计升本.doc

上传人:仙人指路1688 文档编号:2386533 上传时间:2023-02-17 格式:DOC 页数:19 大小:90.50KB
返回 下载 相关 举报
FLASH贪吃蛇毕业设计计升本.doc_第1页
第1页 / 共19页
FLASH贪吃蛇毕业设计计升本.doc_第2页
第2页 / 共19页
FLASH贪吃蛇毕业设计计升本.doc_第3页
第3页 / 共19页
FLASH贪吃蛇毕业设计计升本.doc_第4页
第4页 / 共19页
FLASH贪吃蛇毕业设计计升本.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《FLASH贪吃蛇毕业设计计升本.doc》由会员分享,可在线阅读,更多相关《FLASH贪吃蛇毕业设计计升本.doc(19页珍藏版)》请在三一办公上搜索。

1、 FLASH贪吃蛇11计升本2班1.游戏设计背景随着科技与经济的快速发达,知识经济的快速增长,娱乐逐渐变成人与智能的交流。智能化的娱乐游戏在网络里愈来愈好,众多的游戏不胜枚举。比如益智类的小游戏、腾讯游戏、网页游戏、格斗游戏、模拟游戏等,尤其是最近网络上特别流行的Flash制作的动画越来越受关注。现在就探究下用Flash软件制作贪吃蛇的游戏的设计原理。1.1游戏设计原理游戏贪吃蛇就是在Flash软件用影片剪辑设计出蛇,食物,同时随机地给出食物。游戏者通过键盘操作控制贪吃蛇的移动,去吃食物,吃到食物后消失,然后再随机给出食物同时蛇的身体增长。设计蛇的原理就是利用人眼的视觉效应先将蛇头向前移动一格

2、,然后所有蛇身依次向前移动一格,最后再擦除蛇尾。这样看来好像蛇在向前移动。食物的给出,首先需要产生一个随机数,然后通过这个随机数计算得到食物的纵横坐标,在软件运行效果里显示出来。控制蛇的移动方向,需要扫描键盘,然后根据键值改变蛇的移动方向。1.2游戏设计的运行环境学习Flash开发,首先要建立首要的、基础的正确认知。在几乎任何应用程序开发中,都要接触到三个相互关联的方面:一个是开发环境,一个是运行环境,再一个是开发语言。1.2.1软件开发环境Flash应用程序开发也包含着三个方面,即使用Flash CS 3作为开发环境,以ActionScript 2.0作为开发语言,以Flash Player

3、 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

4、 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 avail

5、able 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.游戏设计相关知识介绍了解贪吃蛇的设计原理后,接下来就是对设

6、计游戏的一些相关理论知识基础及深入点的分层次介绍。2.1 Flash理论基础知识要点2.1.1 基础概念(1)帧频是动画播放的速度,以每秒播放的帧数为度量。帧频太慢会使动画看起来一顿一顿的,帧频太快会使动画的细节变得模糊。在 Web 上,每秒 12 帧 (fps) 的帧频通常会得到最佳的效果。QuickTime 和AVI 影片通常的帧频就是 12 fps,但是标准的运动图像速率是 24 fps。(2)将元件看作是一种模板,使用同一个模板能够创建多个实例。对元件的实例可以做各种变换操作,而这些操作不会对元件的各种属性有所更改。也可以改变元件的属性,例如颜色、形状以及边线的粗细等。当对这些属性加以

7、修改后,舞台上的所有实例的相应属性也发生了变化。(3)影片剪辑拥有自身的、独立于主影片的时间轴播放的多帧时间轴,即可以将影片剪辑看作主影片内的小影片,它可以包含交互式控件、声音、甚至其他影片剪辑实例,也可以将影片剪辑实例放置在按钮元件的时间轴内,以创建动画按钮。(4)点语法:_root:表示绝对路径,他指的是时间主轴。_parent:表示当前时间轴,可以操控当前时间轴上的对象等。变量作用域分为全局变量、本地变量和时间轴变量。2.1.2基本语法规则及简单注意事项(1)变量、函数、对象、操作符、保留关键字等语言元素,有它自己的语法规则。ActionScript拥有自己的句法和标点符号使用规则,这些

8、规则规定了一些字符和关键字的含义,以及它们的书写顺序。例如,在英语中句号结束一个句子,而在ActionScript中则用分号结束一个语句。(2)动画设计过程中的简单注意事项。确保处在动画测试模式。确保不在多层中添加相互矛盾的帧动作。确保多个动作脚本元素没有使用相同的名字。确保所有的目标路径以确保他们的正确无误。2.2面向对象编程“对象” 是指属性和方法的集合,每个对象都具有其各自的名称,并且都是特定类的实例。相比较而言,对象是一个形象具体的概念,如生活中所使用的笔、纸张、书籍、计算机等,都可称之为对象。而对于每个对象来说,它们都具有一些区别于其他对象的个体属性,如大小、形状、颜色、使用方法等。

9、在面向对象编程中,类定义对象的类别,描述对象的属性(数据)和行为(方法),类是一个较为抽象的概念,可以说是对象概念的提升,利用类可表现一组相关对象中某些公共的属性和行为。如果要使用类所定义的属性和方法,必须先创建该类的实例,实例化对象其实就是指定某个特定的对象。 2.3游戏制作中常用函数的属性与方法2.3.1 Mouse类使用Mouse类的方法可隐藏和显示SWF文件中的鼠标指针(光标)。默认情况下鼠标指针是可见的,但是用户可以将其隐藏并实现用影片剪辑创建的自定义指针。方法名用法说明Mouse.showMouse.show()在SWF文件中显示鼠标指针,指针在默认情况下可见Mouse.hideM

10、ouse.hide()隐藏SWF文件中的鼠标指针Mouse.addListenerMouse.addListener(newListener)注册一个对象以接收onMouseDown、onMouseMove和onMouseUp通知。(参数:newListener为一个对象)Mouse.removeListenerMouse.RemoveListener(listener)删除用addListener方法注册的对象。(参数:listener为一个)MovieClip.onMouseDownMyMovieClip.onMouseDown当按下鼠标左键时调用MovieClip.onMouseMove

11、MyMovieClip.omMouseMove当鼠标移动时调用MovieClip.onMouseUpMyMovieClip.onMouseUp当释放鼠标左键时调用2.3.2 Key类Key类是不通过构造函数即可使用其方法和属性的顶级类。使用Key类的方法可生成用户能够通过标准键盘控制的界面,该类的属性是常量,表示控制游戏时最经常使用的键。方法名用法说明Key.addListenerKey.addListener(newListener)注册一个对象,以接收onKeyDown或onKeyUp的通知Key.getAsciiKey.getAscii()返回按下或释放的最后一个按键的ASCII码值Ke

12、y.getCodeKey.getCode()返回最后一次按键的键控代码值Key.isDownKey.isDown(keycode)判断是否按下了参数keycode中指定的键。若按下则返回True;否则将返回False。Key.isToggledKey.isToggled(keycode) 判断CapsLock键或NumLock键是否处于激活状态,若是则返回True。Key.removeListenerKey.removeListener(Ustener)删除通过addListener方法注册的对象。若删除成功,则返回True;否则返回False。Key.onKeyDownsomeListene

13、r.onKeyDown当按下某个按键时获得通知Key.onKeyUpSomeListener.onKeyUp当释放某个按键时获得通知2.3.3 Button类 按钮是Flash影片中实现交互功能最常见的对象,SWF文件中的所有按钮元件都是对象的实例,用户可在属性检查器中指定按钮实例名称,并通过动作脚本使用Button法和属性来操纵按钮。名称用法说明Button.onDragOutmyButton.onDragOut当在按钮上按下鼠标按键,并且不释放按键时,然后将鼠标指针滑出按钮时调用事件Button.onDragOvermyButton.onDragOver当用户在按钮上按下鼠标,然后在不释放

14、按键的情况下将鼠标指针拖到按钮之外后,再次将鼠标指针移到按钮上方时调用事件Button.onKeyDownmyButton.onKeyDown当按下键盘上的某个按键时调用事件Button.onKeyUpmyButton.onKeyUp当释放键盘上的某个按键时调用事件Button.onPressmyButton.onPress当在按钮上按下鼠标按键时调用事件Button.onReleasemyButton.onRelease当用户释放鼠标左键时调用事件2.3.4 MovieClip类MovieClip中类的方法提供的功能与定位影片剪辑的动作所提供的功能相同,无需使用构造函数方法即可调用Movie

15、Clip类的方法,用户只需在语法中按名称引用影片剪辑实例即可。方法名与用法myMovieClip.attachMovie(idName,newName,depth,initObject)从【库】面板中取出一个元件,并将其附加到舞台上由MovieClip指定的影片中。myMovieClip.creatEmptyMovieClip(instanceName,depth)为现有的影片剪辑元件实例创建子级的空影片剪辑元件实例。新创建的空影片剪辑的注册点为左上角。myMovieClip.createTextField(instanceName,depth,x,y,width,height)创建现有影片剪

16、辑元件实例的子级空文本字段。myMovieClip.duplicateMovieClip(newname,depth,initObject) 在影片播放时,复制指定影片剪辑元件的实例。myMovieClip.gotoAndPlay(frame) 跳转到指定帧并开始播放影片。myMovieClip.gotoAndStop(frame) 将播放头跳转到指定的帧,并停止影片的播放。myMovieClip.hitTest(x,y,shapeFlag) MovieClip.hitTest(target)判断指定的实例是否与标识的点击区域或target重叠或交叉。myMovieClip.loadMovie

17、(url,variables)在播放原始SWF影片时,将外部SWF或JPEG文件加载到FlashPlayer中的影片剪辑中。myMovieClip.removeMovieClip()删除使用duplicateMovieclip动作或MovieClip对duplicateMovieclip或attachMovie方法创建的影片剪辑元件实例。myMovieClip.unloadMovie() 删除使用loadMovie或attachMovie方法加载的影片剪辑元件实例。MovieClip类的事件处理函数的八种状态名称用法说明MovieClip.onDatamyMovieClip.onData当影片

18、剪辑元件实例通过loadVariables或loadMovie方法调用接收数据时调用事件MovieClip.onKeyDownmyMovieClip.onKeyDown当影片剪辑元件实例设置了输入焦点,并且有按键被按下时调用事件MovieClip.onKeyUpmyMovieClip.onKeyUp当键盘按键被释放时调用事件MovieClip.onMouseDownmyMovieClip.onMouseDown当鼠标左键按下时调用事件ovieClip.onMouseMovemyMovieClip.onMouseMove当移动鼠标时调用事件MovieClip.onMouseUpmyMovieCl

19、ip.onMouseUp当释放鼠标时调用事件MovieClip.onPressmyMovieClip.onPress当用户在指定的影片剪辑元件实例上按下鼠标左键时调用事件MovieClip.onReleasemyMovieClip.onRelease当用户在指定的影片剪辑元件实例上释放鼠标左键时调用事件2.3.5 Sound类与Math类Math类的方法和属性可以访问和处理数学常数和函数。Math类的所有属性和方法都是静态的,并且必须使用语法Math.method(parameter)或Math.constant来调用。游戏中食物的随机出现就是利用了math函数里的随机函数。游戏里的背景音乐还

20、有对声音图标的控制也就是通过面向对象编程里的Sound类函数来控制实现的。名称用法说明Sound.attachSoundmySound.attachSound(idName)将指定标识符名称的声音文件附加到Sound对象中Sound.startmySound.start(secondOffset,loop)指定声音文件的播放Sound.stopSound.stop(idName)当指定了要停止播放的声音时,将停止该声音的播放;若未指定idName参数,则停止当前所有声音的播放Sound.setVolumemySound.setVolume(volume)设置Sound对象的音量Sound.lo

21、adSoundmySound.loadSound(url,isStreaming)将MP3声音文件加载到Sound对象的实例中2.3.6 Array类通过Array 类用户可以访问和操纵数组。数组是一个对象,其属性由表示该属性在数组中位置的数字来标识。此数字称为“索引”。所有数组都从零开始,这意味着数组中的第一个元素为 0,第二个元素为 1,依此类推。方法说明Array.concat()连接参数,并将其作为新数组返回Array.join()将数组内的所有元素联接为一个字符串Array.pop()删除数组中最后一个元素,并返回该元素的值Array.push()将一个或多个元素添加到数组的结尾,并

22、返回该数组的新长度Array.reverse()倒转数组的方向Array.shift()删除数组中第一个元素,并返回该元素的值属性说明Array.length指定数组中元素数量的非从零开始的整数3. 制作贪吃蛇游戏的整体规划贪吃蛇游戏设计整体结构图3.1贪吃蛇游戏的大致结构图游戏封面背景与主题游戏运行界面核心代码风格与设计影片剪辑函数脚本3.2游戏设计整体构思首先场景规划,主要有两个:一个是游戏封面,一个是游戏运行界面。其次是电影影片剪辑,主要有蛇,食物,背景设计等,按钮及文字属性都有自己的实例名,便于脚本控制。最后对整体的进行核心代码编写与控制。在软件环境里运行并调试,发现问题,分析并解决。

23、最后发布游戏。3.3透视游戏设计的核心重点算法贪吃蛇的核心算法是如何实现移动和吃掉食物。没有碰到食物的时候,贪吃蛇继续移动,吃到食物的时候,蛇身增长。咬住蛇身或蛇尾的时候,能够暂停和开始。让游戏继续下去,食物随机出现,贪吃蛇继续游动,并记录游戏所得分数。4. 游戏详细设计与核心技术snakenum:int=7;/蛇初始时只有7个节点var dir:int=39;/蛇初始运动方向是向右var i:int;var j:int;var yc:int=200;/蛇的初始坐标var xc:int=220;/蛇的初始坐标var snake:Array=new Array(200);var grid:Arr

24、ay=new Array(56);/遍历舞台数组,用来确定何处有蛇,何处可以生成食物var panduan:Boolean=true;/true表示有食物出现var count:int=0;/得分defen.text=String(0);/得分文本框for(i=0;i56;i+)待添加的隐藏文字内容2gridi=new Array(41);for(j=0;j41;j+)gridij=0;/0表示什么都没有,1表示蛇,2表示食物for(i=0;isnakesnakenum-1.y)/向下运动mc.x=snakesnakenum-1.x;mc.y=snakesnakenum-1.y-10;else

25、 if(snakesnakenum-2.ysnakesnakenum-1.x)/向左运动mc.x=snakesnakenum-1.x+10;mc.y=snakesnakenum-1.y;else if(snakesnakenum-2.xsnakesnakenum-1.x)/向右运动mc.x=snakesnakenum-1.x-10;mc.y=snakesnakenum-1.y;snakenum+=1;snakesnakenum-1=mc;function go(event:Event)move(dir);for(i=0;i56;i+)/gridi=new Array(41);for(j=0;j

26、=0 & snake0.x=0 & snake0.y=400)for(i=0;isnakenum-1;i+)xc=snakei.x/10;yc=snakei.y/10;gridxcyc=1;if(panduan=true)xc=Math.round(Math.random()*54);yc=Math.round(Math.random()*39);if(gridxcyc=0)food.x=xc*10;food.y=yc*10;gridxcyc=2;panduan=false;if(snake0.x=food.x & snake0.y=food.y)/吃到食物zengjia();addChild

27、(snakesnakenum-1);food.x=-11;food.y=-11;panduan=true;count+=1;defen.text=String(count);for(var w:int=4;w0;i-)/蛇身后一节点移动到前一节点的位置snakei.x=snakei-1.x;snakei.y=snakei-1.y;switch(dire)/第一个节点由鼠标控制移动位置case 39:snake0.x+=10;if(snake0.x=550)/触碰边界则取消移动var mc:Mc=new Mc();if(snakesnakenum-2.x=snakesnakenum-1.x)if

28、(snakesnakenum-2.ysnakesnakenum-1.y)/向下运动mc.x=snakesnakenum-1.x;mc.y=snakesnakenum-1.y-10;else if(snakesnakenum-2.ysnakesnakenum-1.x)/向左运动mc.x=snakesnakenum-1.x-10;mc.y=snakesnakenum-1.y;else if(snakesnakenum-2.xsnakesnakenum-1.x)/向右运动mc.x=snakesnakenum-1.x+10;mc.y=snakesnakenum-1.y;snakenum+=1;snak

29、esnakenum-1=mc;addChild(snakesnakenum-1);removeChild(snake0);removeEventListener(Event.ENTER_FRAME,go);stage.removeEventListener(KeyboardEvent.KEY_DOWN,keydown);break;case 37:snake0.x-=10;if(snake0.xsnakesnakenum-1.y)/向下运动mc1.x=snakesnakenum-1.x;mc1.y=snakesnakenum-1.y-10;else if(snakesnakenum-2.ysn

30、akesnakenum-1.x)/向左运动mc1.x=snakesnakenum-1.x-10;mc1.y=snakesnakenum-1.y;else if(snakesnakenum-2.xsnakesnakenum-1.x)/向右运动mc1.x=snakesnakenum-1.x+10;mc1.y=snakesnakenum-1.y;snakenum+=1;snakesnakenum-1=mc1;addChild(snakesnakenum-1);removeChild(snake0);removeEventListener(Event.ENTER_FRAME,go);stage.rem

31、oveEventListener(KeyboardEvent.KEY_DOWN,keydown);break;case 38:snake0.y-=10;if(snake0.ysnakesnakenum-1.y)/向下mc2.x=snakesnakenum-1.x;mc2.y=snakesnakenum-1.y-10;else if(snakesnakenum-2.ysnakesnakenum-1.x)/向左mc2.x=snakesnakenum-1.x-10;mc2.y=snakesnakenum-1.y;else if(snakesnakenum-2.x391)var mc3:Mc=new

32、Mc();if(snakesnakenum-2.x=snakesnakenum-1.x)if(snakesnakenum-2.ysnakesnakenum-1.y)/向下运动mc3.x=snakesnakenum-1.x;mc3.y=snakesnakenum-1.y-10;else if(snakesnakenum-2.ysnakesnakenum-1.x)/向左运动mc3.x=snakesnakenum-1.x-10;mc3.y=snakesnakenum-1.y;else if(snakesnakenum-2.xsnakesnakenum-1.x)/向右运动mc3.x=snakesnak

33、enum-1.x+10;mc3.y=snakesnakenum-1.y;snakenum+=1;snakesnakenum-1=mc3;addChild(snakesnakenum-1);removeChild(snake0);removeEventListener(Event.ENTER_FRAME,go);stage.removeEventListener(KeyboardEvent.KEY_DOWN,keydown);break;var bianjie:Bianjie=new Bianjie();bianjie.x=1;bianjie.y=1;addChild(bianjie);在制作游

34、戏的时候,最先考虑的问题之一就是如何是游戏中的动画画面智能化,要做到这一点,最终的目标是要使Flash文本友好,容易编辑和扩展。在制作项目设计时,主要是素材搜集及理论知识的巩固与升华。首先,一旦确定目标,就尽量思考项目的设计原理与背景。其次要详细规划,分工明细原则,弄懂该如何利用理论基础知识要点去实现看似简单的制作。最后,在综合的实验过程中,努力提高综合素质及分析问题解决问题的能力。从而对软件应用方面会有更深刻的认知与开拓,尽量提升专业素质修养。透过现象看本质,找到一些规律,让自己的学识由量到质变的过程,综合能力的提高进而为进入社会做了更好的准备工作。简单的贪吃蛇游戏由蛇头、蛇身、蛇尾、食物为主角。游戏控制中,食物一旦吃到,蛇身就增加一段,而后食物随机出现,蛇又运动,循环往复,直至蛇头咬住自己的身体某一部位,游戏终止。可见控制中增加了对软件高级语言编程的应用。比如随机函数,数组,自定义函数,影片剪辑事件等,最后综合在一起应用,除了考虑核心函数和局部函数的主次分配,还要预先初定义一些变量,便于控制整个游戏,最后对软件的熟练操作,实现最终游戏的实现。

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号