贪吃蛇游戏的设计与实现Word下载.docx
- 文档编号:18640477
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:19
- 大小:44.90KB
贪吃蛇游戏的设计与实现Word下载.docx
《贪吃蛇游戏的设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《贪吃蛇游戏的设计与实现Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
现在就探究下用Flash软件制作贪吃蛇的游戏的设计原理。
1.1游戏设计原理
游戏贪吃蛇就是在Flash软件用影片剪辑设计出蛇,食物,同时随机地给出食物。
游戏者通过键盘操作控制贪吃蛇的移动,去吃食物,吃到食物后消失,然后再随机给出食物同时蛇的身体增长。
设计蛇的原理就是利用人眼的视觉效应先将蛇头向前移动一格,然后所有蛇身依次向前移动一格,最后再擦除蛇尾。
这样看来好像蛇在向前移动。
食物的给出,首先需要产生一个随机数,然后通过这个随机数计算得到食物的纵横坐标,在软件运行效果里显示出来。
控制蛇的移动方向,需要扫描键盘,然后根据键值改变蛇的移动方向。
1.2游戏设计的运行环境
学习Flash开发,首先要建立首要的、基础的正确认知。
在几乎任何应用程序开发中,都要接触到三个相互关联的方面:
一个是开发环境,一个是运行环境,再一个是开发语言。
1.2.1软件开发环境
Flash应用程序开发也包含着三个方面,即使用FlashCS3作为开发环境,以ActionScript2.0作为开发语言,以FlashPlayer9为运行环境进行Flash应用程序开发和创作的完整知识体系。
对于Flash应用程序开发,在进行Flash开发时,安装一个开发工具(也被称为开发环境、创作环境等。
目前流行的Flash开发工具基本都是Adobe公司的产品,最著名的就是FlashCS3和FLEX。
1.2.2运行环境
Windows
Macintosh
处理器
800MHzIntelPentiumIIIprocessor(orequivalent)andlater
600MHzPowerPCG3andlater
操作系统
Windows2000,WindowsXP
MacOSX10.3,10.4
内存
256MBRAM(1GBrecommendedtorunmorethanoneStudio8productsimultaneously)
256MBRAM(1GBrecommendedtorunmorethanoneStudio8productsimultaneously)
显示
1024x768,16-bitdisplay(32-bitrecommended)
1024x768,thousandsofcolorsdisplay(millionsofcolorsrecommended)
磁盘空间
710MBavailablediskspace
360MBavailablediskspace
1.2.3开发语言
用户要进行Flash开发,要接触是ActionScript(简称AS),ActionScript程序语言是用于Flash开发的交互语言。
ActionScript有三种语言编写风格,这就是AS1、AS2和AS3。
AS1遵循ECMA-262第3版所制定的规范,AS2遵循即将发布的ECMA-262第4版规范,但它们的运行环境只有一种,即FlashPlayerVM(Adobe称为AVM1,AVM是ActionScript虚拟机的简称)。
2.游戏设计相关知识介绍
了解贪吃蛇的设计原理后,接下来就是对设计游戏的一些相关理论知识基础及深入点的分层次介绍。
2.1Flash理论基础知识要点
2.1.1基础概念
(1)帧频是动画播放的速度,以每秒播放的帧数为度量。
帧频太慢会使动画看起来一顿一顿的,帧频太快会使动画的细节变得模糊。
在Web上,每秒12帧(fps)的帧频通常会得到最佳的效果。
QuickTime和
AVI影片通常的帧频就是12fps,但是标准的运动图像速率是24fps。
(2)将元件看作是一种模板,使用同一个模板能够创建多个实例。
对元件的实例可以做各种变换操作,而这些操作不会对元件的各种属性有所更改。
也可以改变元件的属性,例如颜色、形状以及边线的粗细等。
当对这些属性加以修改后,舞台上的所有实例的相应属性也发生了变化。
(3)影片剪辑拥有自身的、独立于主影片的时间轴播放的多帧时间轴,即可以将影片剪辑看作主影片内的小影片,它可以包含交互式控件、声音、甚至其他影片剪辑实例,也可以将影片剪辑实例放置在按钮元件的时间轴内,以创建动画按钮。
(4)点语法:
_root:
表示绝对路径,他指的是时间主轴。
_parent:
表示当前时间轴,可以操控当前时间轴上的对象等。
变量作用域分为全局变量、本地变量和时间轴变量。
2.1.2基本语法规则及简单注意事项
(1)变量、函数、对象、操作符、保留关键字等语言元素,有它自己的语法规则。
ActionScript拥有自己的句法和标点符号使用规则,这些规则规定了一些字符和关键字的含义,以及它们的书写顺序。
例如,在英语中句号结束一个句子,而在ActionScript中则用分号结束一个语句。
(2)动画设计过程中的简单注意事项。
确保处在动画测试模式。
确保不在多层中添加相互矛盾的帧动作。
确保多个动作脚本元素没有使用相同的名字。
确保所有的目标路径以确保他们的正确无误。
2.2面向对象编程
“对象”是指属性和方法的集合,每个对象都具有其各自的名称,并且都是特定类的实例。
相比较而言,对象是一个形象具体的概念,如生活中所使用的笔、纸张、书籍、计算机等,都可称之为对象。
而对于每个对象来说,它们都具有一些区别于其他对象的个体属性,如大小、形状、颜色、使用方法等。
在面向对象编程中,类定义对象的类别,描述对象的属性(数据)和行为(方法),类是一个较为抽象的概念,可以说是对象概念的提升,利用类可表现一组相关对象中某些公共的属性和行为。
如果要使用类所定义的属性和方法,必须先创建该类的实例,实例化对象其实就是指定某个特定的对象。
2.3游戏制作中常用函数的属性与方法
2.3.1Mouse类
使用Mouse类的方法可隐藏和显示SWF文件中的鼠标指针(光标)。
默认情况下鼠标指针是可见的,但是用户可以将其隐藏并实现用影片剪辑创建的自定义指针。
方法名
用法
说明
Mouse.show
Mouse.show()
在SWF文件中显示鼠标指针,指针在默认情况下可见
Mouse.hide
Mouse.hide()
隐藏SWF文件中的鼠标指针
Mouse.addListener
Mouse.addListener(newListener)
注册一个对象以接收onMouseDown、onMouseMove和onMouseUp通知。
(参数:
newListener为一个对象)
Mouse.removeListener
Mouse.RemoveListener(listener)
删除用addListener方法注册的对象。
listener为一个)
MovieClip.onMouseDown
MyMovieClip.onMouseDown
当按下鼠标左键时调用
MovieClip.onMouseMove
MyMovieClip.omMouseMove
当鼠标移动时调用
MovieClip.onMouseUp
MyMovieClip.onMouseUp
当释放鼠标左键时调用
2.3.2Key类
Key类是不通过构造函数即可使用其方法和属性的顶级类。
使用Key类的方法可生成用户能够通过标准键盘控制的界面,该类的属性是常量,表示控制游戏时最经常使用的键。
Key.addListener
Key.addListener(newListener)
注册一个对象,以接收onKeyDown或onKeyUp的通知
Key.getAscii
Key.getAscii()
返回按下或释放的最后一个按键的ASCII码值
Key.getCode
Key.getCode()
返回最后一次按键的键控代码值
Key.isDown
Key.isDown(keycode)
判断是否按下了参数keycode中指定的键。
若按下则返回True;
否则将返回False。
Key.isToggled
Key.isToggled(keycode)
判断CapsLock键或NumLock键是否处于激活状态,若是则返回True。
Key.removeListener
Key.removeListener(Ustener)
删除通过addListener方法注册的对象。
若删除成功,则返回True;
否则返回False。
Key.onKeyDown
someListener.onKeyDown
当按下某个按键时获得通知
Key.onKeyUp
SomeListener.onKeyUp
当释放某个按键时获得通知
2.3.3Button类
按钮是Flash影片中实现交互功能最常见的对象,SWF文件中的所有按钮元件都是对象的实例,用户可在属性检查器中指定按钮实例名称,并通过动作脚本使用Button法和属性来操纵按钮。
名称
Button.onDragOut
myButton.onDragOut
当在按钮上按下鼠标按键,并且不释放按键时,然后将鼠标指针滑出按钮时调用事件
Button.onDragOver
myButton.onDragOver
当用户在按钮上按下鼠标,然后在不释放按键的情况下将鼠标指针拖到按钮之外后,再次将鼠标指针移到按钮上方时调用事件
Button.onKeyDown
myButton.onKeyDown
当按下键盘上的某个按键时调用事件
Button.onKeyUp
myButton.onKeyUp
当释放键盘上的某个按键时调用事件
Button.onPress
myButton.onPress
当在按钮上按下鼠标按键时调用事件
Button.onRelease
myButton.onRelease
当用户释放鼠标左键时调用事件
2.3.4MovieClip类
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.onData
myMovieClip.onData
当影片剪辑元件实例通过loadVariables或loadMovie方法调用接收数据时调用事件
MovieClip.onKeyDown
myMovieClip.onKeyDown
当影片剪辑元件实例设置了输入焦点,并且有按键被按下时调用事件
MovieClip.onKeyUp
myMovieClip.onKeyUp
当键盘按键被释放时调用事件
myMovieClip.onMouseDown
当鼠标左键按下时调用事件
ovieClip.onMouseMove
myMovieClip.onMouseMove
当移动鼠标时调用事件
myMovieClip.onMouseUp
当释放鼠标时调用事件
MovieClip.onPress
myMovieClip.onPress
当用户在指定的影片剪辑元件实例上按下鼠标左键时调用事件
MovieClip.onRelease
myMovieClip.onRelease
当用户在指定的影片剪辑元件实例上释放鼠标左键时调用事件
2.3.5Sound类与Math类
Math类的方法和属性可以访问和处理数学常数和函数。
Math类的所有属性和方法都是静态的,并且必须使用语法Math.method(parameter)或Math.constant来调用。
游戏中食物的随机出现就是利用了math函数里的随机函数。
游戏里的背景音乐还有对声音图标的控制也就是通过面向对象编程里的Sound类函数来控制实现的。
Sound.attachSound
mySound.attachSound("
idName"
)
将指定标识符名称的声音文件附加到Sound对象中
Sound.start
mySound.start([secondOffset,loop])
指定声音文件的播放
Sound.stop
Sound.stop(["
])
当指定了要停止播放的声音时,将停止该声音的播放;
若未指定idName参数,则停止当前所有声音的播放
Sound.setVolume
mySound.setVolume(volume)
设置Sound对象的音量
Sound.loadSound
mySound.loadSound("
isStreaming)
将MP3声音文件加载到Sound对象的实例中
2.3.6Array类
通过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=newArray();
(2)定义mouseListener对象来侦听鼠标的onMouseDown点击事件
mouseListener=newObject();
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:
300H:
300X:
0Y:
0
(3)选择文本工具,在属性面板中设置为动态文本。
在矩形的正下方放置一个动态文本来显示所得的分数。
文本中写上"
start"
,设置字体和颜色。
实例名称为"
tScore"
。
(4)按下ctrl+F8,命名为"
piece"
,设置他的属性为影片剪辑,点击"
高级"
按钮,选择"
为ActionScript导出"
,那个标示符自动地被设置为"
(5)选择椭圆工具,在当前的舞台上画一个正圆并设置如下属性:
15H:
15X:
(6)作为蛇的身体,不想用圆形,其他图形也可,但是要保持它的高宽都是15。
方法同上,制作一个标示符为food的影片剪辑。
(7)选择椭圆工具在舞台上画一个圆形,并设置为如下属性:
0作为蛇所吃到的食物来增长身体。
也可在不修改高宽的情况下进行任意的修改。
4.2游戏的核心技术
4.2.1脚本函数
(1)在场景1(sceneOne)的第一帧添加代码:
stop();
(2)在场景2(sceneTwo)的第一帧添加代码:
varunit=15;
//正圆形大小
varuwh=20;
//穿越或者是向下运动的
varcanMove=false;
//控制在鼠标点击之前让蛇停止
vardir=2;
//蛇开始时是向下运动的,UP=0,LEFT=1,DOWN=2,RIGHT=3
varscore=0;
//所得分数
aPieceList=newArray();
//新建一个数组来保存当前的蛇的身体
//定义mouseListener对象来侦
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 游戏 设计 实现