1、知识不仅是指课本的内容,还包括社会经验、文明文化、时代精神等整体要素,才有竞争力,知识是新时代的资本,五六十年代人靠勤劳可以成事;今天的香港要抢知识,要以知识取胜游戏毕业设计论文 1.游戏设计背景随着科技与经济的快速发达知识经济的快速增长娱乐逐渐变成人与智能的交流智能化的娱乐游戏在网络里愈来愈好众多的游戏不胜枚举比如益智类的小游戏、腾讯游戏、网页游戏、格斗游戏、模拟游戏等尤其是最近网络上特别流行的 Flash 制作的动画越来越受关注现在就探究下用 Flash 软件制作贪吃蛇的游戏的设计原理1.1 游戏设计原理游戏贪吃蛇就是在 Flash 软件用影片剪辑设计出蛇食物同时随机地给出食物游戏者通过键
2、盘操作控制贪吃蛇的移动去吃食物吃到食物后消失然后再随机给出食物同时蛇的身体增长设计蛇的原理就是利用人眼的视觉效应先将蛇头向前移动一格然后所有蛇身依次向前移动一格最后再擦除蛇尾这样看来好像蛇在向前移动食物的给出首先需要产生一个随机数然后通过这个随机数计算得到食物的纵横坐标在软件运行效果里显示出来控制蛇的移动方向需要扫描键盘然后根据键值改变蛇的移动方向1.2 游戏设计的运行环境学习 Flash 开发首先要建立首要的、基础的正确认知在几乎任何应用程序开发中都要接触到三个相互关联的方面:一个是开发环境一个是运行环境再一个是开发语言1.2.1 软件开发环境Flash 应用程序开发也包含着三个方面即使用
3、Flash CS3 作为开发环境以 ActionScript 2.0 作为开发语言以 Flash Player 9 为运行环境进行 Flash 应用程序开发和创作的完整知识体系对于 Flash 应用程序开发在进行 Flash 开发时安装一个开发工具(也被称为开发环境、创作环境等目前流行的 Flash 开发工具基本都是 Adobe 公司的产品最著名的就是 Flash CS3 和 FLEX1.2.2 运行环境WindowsMacintosh处理器800 MHz Intel Pentium III processor (or equivalent) and later600 MHz PowerPC
4、G3 and later操作系统Windows 2000Windows XPMac OS X 10.310.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 76816-bit display (32-bit recommended)1024 x 768thousands of colors d
5、isplay (millions of colors recommended) 磁盘空间710 MB available disk space360 MB available disk space1.2.3 开发语言用户要进行 Flash 开发要接触是 ActionScript(简称 AS)ActionScript 程序语言是用于 Flash 开发的交互语言ActionScript 有三种语言编写风格这就是 AS1、AS2 和 AS3AS1 遵循 ECMA-262 第 3 版所制定的规范AS2 遵循即将发布的 ECMA-262 第 4 版规范但它们的运行环境只有一种即 Flash Player
6、 VM(Adobe 称为 AVM1AVM 是 ActionScript 虚拟机的简称)2.游戏设计相关知识介绍了解贪吃蛇的设计原理后接下来就是对设计游戏的一些相关理论知识基础及深入点的分层次介绍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)变量、函数、对象、操作符、保留关
8、键字等语言元素有它自己的语法规则ActionScript 拥有自己的句法和标点符号使用规则这些规则规定了一些字符和关键字的含义以及它们的书写顺序例如在英语中句号结束一个句子而在 ActionScript 中则用分号结束一个语句(2)动画设计过程中的简单注意事项1 确保处在动画测试模式2 确保不在多层中添加相互矛盾的帧动作3 确保多个动作脚本元素没有使用相同的名字4 确保所有的目标路径以确保他们的正确无误2.2 面向对象编程“对象“ 是指属性和方法的集合每个对象都具有其各自的名称并且都是特定类的实例相比较而言对象是一个形象具体的概念如生活中所使用的笔、纸张、书籍、计算机等都可称之为对象而对于每个
9、对象来说它们都具有一些区别于其他对象的个体属性如大小、形状、颜色、使用方法等在面向对象编程中类定义对象的类别描述对象的属性(数据)和行为(方法)类是一个较为抽象的概念可以说是对象概念的提升利用类可表现一组相关对象中某些公共的属性和行为如果要使用类所定义的属性和方法必须先创建该类的实例实例化对象其实就是指定某个特定的对象2.3 游戏制作中常用函数的属性与方法2.3.1 Mouse 类使用 Mouse 类的方法可隐藏和显示 SWF 文件中的鼠标指针(光标)默认情况下鼠标指针是可见的但是用户可以将其隐藏并实现用影片剪辑创建的自定义指针方法名用法说明Mouse.showMouse.show()在 SW
10、F 文件中显示鼠标指针指针在默认情况下可见Mouse.hideMouse.hide()隐藏 SWF 文件中的鼠标指针Mouse.addListenerMouse.addListener(newListener)注册一个对象以接收 onMouseDown、onMouseMove 和 onMouseUp 通知(参数:newListener 为一个对象)Mouse.removeListenerMouse.RemoveListener(listener)删除用 addListener 方法注册的对象(参数:listener 为一个)MovieClip.onMouseDownMyMovieClip.on
11、MouseDown当按下鼠标左键时调用MovieClip.onMouseMoveMyMovieClip.omMouseMove当鼠标移动时调用MovieClip.onMouseUpMyMovieClip.onMouseUp当释放鼠标左键时调用2.3.2 Key 类Key 类是不通过构造函数即可使用其方法和属性的顶级类使用 Key 类的方法可生成用户能够通过标准键盘控制的界面该类的属性是常量表示控制游戏时最经常使用的键方法名用法说明Key.addListenerKey.addListener(newListener)注册一个对象以接收 onKeyDown 或 onKeyUp 的通知Key.get
12、AsciiKey.getAscii()返回按下或释放的最后一个按键的 ASCII 码值Key.getCodeKey.getCode()返回最后一次按键的键控代码值Key.isDownKey.isDown(keycode)判断是否按下了参数 keycode 中指定的键若按下则返回 True;否则将返回 FalseKey.isToggledKey.isToggled(keycode) 判断 CapsLock 键或 NumLock 键是否处于激活状态若是则返回 TrueKey.removeListenerKey.removeListener(Ustener)删除通过 addListener 方法注册
13、的对象若删除成功则返回 True;否则返回 FalseKey.onKeyDownsomeListener.onKeyDown当按下某个按键时获得通知Key.onKeyUpSomeListener.onKeyUp当释放某个按键时获得通知2.3.3 Button 类按钮是 Flash 影片中实现交互功能最常见的对象SWF 文件中的所有按钮元件都是对象的实例用户可在属性检查器中指定按钮实例名称并通过动作脚本使用 Button 法和属性来操纵按钮名称用法说明Button.onDragOutmyButton.onDragOut当在按钮上按下鼠标按键并且不释放按键时然后将鼠标指针滑出按钮时调用事件Butt
14、on.onDragOvermyButton.onDragOver当用户在按钮上按下鼠标然后在不释放按键的情况下将鼠标指针拖到按钮之外后再次将鼠标指针移到按钮上方时调用事件Button.onKeyDownmyButton.onKeyDown当按下键盘上的某个按键时调用事件Button.onKeyUpmyButton.onKeyUp当释放键盘上的某个按键时调用事件Button.onPressmyButton.onPress当在按钮上按下鼠标按键时调用事件Button.onReleasemyButton.onRelease当用户释放鼠标左键时调用事件2.3.4 MovieClip 类MovieCli
15、p 中类的方法提供的功能与定位影片剪辑的动作所提供的功能相同无需使用构造函数方法即可调用 MovieClip 类的方法用户只需在语法中按名称引用影片剪辑实例即可方法名与用法myMovieClip.attachMovie(idNamenewNamedepthinitObject)从【库】面板中取出一个元件并将其附加到舞台上由 MovieClip 指定的影片中myMovieClip.creatEmptyMovieClip(instanceNamedepth)为现有的影片剪辑元件实例创建子级的空影片剪辑元件实例新创建的空影片剪辑的注册点为左上角myMovieClip.createTextField(
16、instanceNamedepthxywidthheight)创建现有影片剪辑元件实例的子级空文本字段myMovieClip.duplicateMovieClip(newnamedepthinitObject) 在影片播放时复制指定影片剪辑元件的实例myMovieClip.gotoAndPlay(frame) 跳转到指定帧并开始播放影片myMovieClip.gotoAndStop(frame) 将播放头跳转到指定的帧并停止影片的播放myMovieClip.hitTest(xyshapeFlag) MovieClip.hitTest(target)判断指定的实例是否与标识的点击区域或 targ
17、et 重叠或交叉myMovieClip.loadMovie(“url“variables)在播放原始 SWF 影片时将外部 SWF 或 JPEG 文件加载到 FlashPlayer 中的影片剪辑中myMovieClip.removeMovieClip()删除使用 duplicateMovieclip 动作或 MovieClip 对 duplicateMovieclip 或 attachMovie 方法创建的影片剪辑元件实例myMovieClip.unloadMovie() 删除使用 loadMovie 或 attachMovie 方法加载的影片剪辑元件实例MovieClip 类的事件处理函数的
18、八种状态名称用法说明MovieClip.onDatamyMovieClip.onData当影片剪辑元件实例通过 loadVariables 或 loadMovie 方法调用接收数据时调用事件MovieClip.onKeyDownmyMovieClip.onKeyDown当影片剪辑元件实例设置了输入焦点并且有按键被按下时调用事件MovieClip.onKeyUpmyMovieClip.onKeyUp当键盘按键被释放时调用事件MovieClip.onMouseDownmyMovieClip.onMouseDown当鼠标左键按下时调用事件ovieClip.onMouseMovemyMovieClip
19、.onMouseMove当移动鼠标时调用事件MovieClip.onMouseUpmyMovieClip.onMouseUp当释放鼠标时调用事件MovieClip.onPressmyMovieClip.onPress当用户在指定的影片剪辑元件实例上按下鼠标左键时调用事件MovieClip.onReleasemyMovieClip.onRelease当用户在指定的影片剪辑元件实例上释放鼠标左键时调用事件2.3.5 Sound 类与 Math 类Math 类的方法和属性可以访问和处理数学常数和函数Math 类的所有属性和方法都是静态的并且必须使用语法 Math.method(parameter)或
20、 Math.constant 来调用游戏中食物的随机出现就是利用了 math 函数里的随机函数游戏里的背景音乐还有对声音图标的控制也就是通过面向对象编程里的 Sound 类函数来控制实现的名称用法说明Sound.attachSoundmySound.attachSound(“idName“)将指定标识符名称的声音文件附加到 Sound 对象中Sound.startmySound.start(secondOffsetloop)指定声音文件的播放Sound.stopSound.stop(“idName“)当指定了要停止播放的声音时将停止该声音的播放;若未指定 idName 参数则停止当前所有声音的
21、播放Sound.setVolumemySound.setVolume(volume)设置 Sound 对象的音量Sound.loadSoundmySound.loadSound(“url“isStreaming)将 MP3 声音文件加载到 Sound 对象的实例中2.3.6 Array 类通过 Array 类用户可以访问和操纵数组数组是一个对象其属性由表示该属性在数组中位置的数字来标识此数字称为“索引“所有数组都从零开始这意味着数组中的第一个元素为 0第二个元素为 1依此类推方法说明Array.concat()连接参数并将其作为新数组返回Array.join()将数组内的所有元素联接为一个字符
22、串Array.pop()删除数组中最后一个元素并返回该元素的值Array.push()将一个或多个元素添加到数组的结尾并返回该数组的新长度Array.reverse()倒转数组的方向Array.shift()删除数组中第一个元素并返回该元素的值属性说明Array.length指定数组中元素数量的非从零开始的整数3. 制作贪吃蛇游戏的整体规划3.1 贪吃蛇游戏的大致结构图3.2 游戏设计整体构思首先场景规划主要有两个:一个是游戏封面一个是游戏运行界面其次是电影影片剪辑主要有蛇食物背景设计等按钮及文字属性都有自己的实例名便于脚本控制最后对整体的进行核心代码编写与控制在软件环境里运行并调试发现问题分析并解决最后发布游戏