收藏 分享(赏)

Flash游戏开发实例系列65851new.doc

上传人:dzzj200808 文档编号:2240848 上传时间:2018-09-07 格式:DOC 页数:17 大小:336KB
下载 相关 举报
Flash游戏开发实例系列65851new.doc_第1页
第1页 / 共17页
Flash游戏开发实例系列65851new.doc_第2页
第2页 / 共17页
Flash游戏开发实例系列65851new.doc_第3页
第3页 / 共17页
Flash游戏开发实例系列65851new.doc_第4页
第4页 / 共17页
Flash游戏开发实例系列65851new.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、Flash 游戏开发实例系列:打小狗在 Flash 游戏中,打小狗(老鼠等)游戏是比较基础的游戏了。如果对 Flash 游戏设计有兴趣的朋友,想学习如何用Flash 来制作游戏的朋友,可要好好学习这个游戏的制作哦。因为该游戏中使用的都是一些比较基础的、基本的和常用的 ActionScript 脚本语言。另外,我们也可以从中学到 Flash 游戏策划、设计到制作完成的一些概念、方法和技巧等知识。游戏原理:首先,游戏通过 startdrag()、Mouse.hide()来改变隐藏原来的鼠标,把原先的鼠标换成菜刀,这样砍起来才过瘾嘛:)。使用 Math.ramdon()并配合遮罩技术使小狗能随机得出

2、现在洞口。最后的总分会在一个输入文本框中显示出来,见图 1 所示。游戏玩法:游戏的玩法很简单,相信大部分读者都应该知道。就是先移动鼠标到小狗的头上,然后安下鼠标左键,击中小狗就得分,否则得分为 0。玩这个游戏的意义就在于,看谁能在一定的时间限制内,得到最多的分数,以测验谁头脑反应的最块,谁操作鼠标最灵活。游戏定义:在设计游戏前,总需要考虑这样几个问题,游戏环境的形成、规则的创建以及如何编写游戏的代码。但幸运的的是,这个打小狗(老鼠等)的游戏定义起来并不复杂。1游戏环境。首先要考虑的是游戏在怎样的一个环境中进行。这是实现一个简单的顺序游戏最关键的部分。该游戏中,通过随机的方法来让小狗出现,这一点

3、确保了游戏的可玩性。对游戏而言,可玩性是很重要的,没有可玩性的游戏是不会有玩家去玩第二次的。2控制方法。玩家如何控制游戏中的角色,操作是否方便有决定了游戏的可玩性。我们可以设定许多行为方法来控制游戏主角的运动。在该游戏中,主要是让玩家能够自由的控制鼠标。3游戏结束。游戏中最困难的事情之一就是判定游戏是否结束。当游戏运行一段时间后,游戏将会停止,并在动态文本中显示出玩家的最后得分。游戏制作:打开 Flash MX,设置场景大小为 400px360px,背景色为#006699,帧频为 15fps。在游戏制作之前,为了让大家有一个整体的感觉,并在以后的设计中做到心中有数,所以笔者在游戏设计制作前先让

4、大家看看游戏主场景中层与帧的结构关系。如图 2 所示。图 2设计元件。1设计小狗。按快捷键 Ctrl+F8 打开“创建新元件”面板新建一个名为“ 小狗”的影片剪辑元件。然后可以手绘或者导入一个小狗头的图像,如图 3 所示。图 3,图 42设计黑洞。同上方法新建一个名为“洞”的影片剪辑元件。然后在其场景中使用“ 椭圆”工具绘制一个黑色的椭圆(不要边线),如图 4 所示。3设计菜刀。新建一个名为“菜刀”的影片剪辑元件。在“菜刀” 元件把“ 图层 1”改名为“菜刀”层,见图 5(菜刀读者可以自行导入)。点选第 1 帧,按 F9,在弹出的“动作”面板中输入如下代码:stop();Mouse.hide(

5、);图 5 点选第 2 帧,按 F6 键插入关键帧,然后按快捷键 Ctrl+T 打开“ 变形”面板使菜刀发生 20 度旋转,见图 6。图 64设计小狗运动。1按快捷键 Ctrl+F8 新建一个名为“小狗运动”的影片剪辑元件,然后从库中“ 小狗”元件到“小狗运动” 元件的场景中。2在元件“小狗运动”的场景中点选“图层 1”的第 5、10、20 、25 帧分别插入关键帧,然后选中第 10 帧,将此帧上“小狗” 对象的位置向上移动大约 50px,鼠标右键点选第 5 到 10 帧间任一帧,选择“创建补间动画” 命令,建立运动渐变动画,如图 7 所示。在第 20 到 25 帧也建立一个运动渐变动画,见图

6、 7,只是小狗运动是向下的。图 73新建一个名为“点击”的按钮元件。在元件的“点击”帧上按 F6 创键关键帧,然后用“矩形” 工具绘制一个矩形,作为隐形按钮的控制区,如图 8 所示。图 84在“小狗运动 ”元件的场景中新建一个“图层 2”。在“图层 2”的第 5 帧插入关键帧,从库中拖动“ 点击”按钮元件到“ 图层 2”上,删除该层中第 21 到 25 帧之间的所有帧,如图 9 所示。图 95再新建一个“图层 3”,在该层的第 1、5 、20 帧分别建立空白的关键帧。点选第 1 帧,按 F9 打开“动作” 面板输入代码“stop();”。点选第 5 帧,在“属性”面板中将该帧的标签名设置为 u

7、p,如图 10 所示。同样将第 20 帧的标签名设为 down。图 10设计场景 1。1回场景 1,将“图层 1”改名为“背景”。接着从库面板中把元件 “洞拖放到场景 1 中的第 1 层,然后分别复制 9个相同的对象,按快捷键 Ctrl+K 打开“对齐”面板,把 9 个“洞”排好,如图 11 所示。接着用“ 文本”工具在场景的右下方输入“得分” 两个字(静态文本)。图 112新建一个“小狗”层,接着从库中将“小狗运动”元件拖到该层中,然后再复制出 9 个,位置如图 12 所示。图 123新建一个“遮罩”层,在元件“洞”的上方绘制一个矩形。注意,矩形应该比 “小狗运动”元件大点。同样复制 9 个

8、。鼠标右键单击该层,在弹出的菜单中选择“遮罩层”命令。如图 13 所示。图 134点选“ 小狗 ”层上的第一个(左上角的) “小狗运动”元件,在“ 属性”面板中将其实例名改为“dog0”,然后同样将其它的“小狗运动”对象命名为 dog1、dog2dog8。5新建一个“脚本”层,点选第 1 帧,打开“动作”面板,输入代码“stop();”。在第 5 帧插入关键帧,输入如下代码:/ random(9)是从 0-9 中任取一数/ gotoAndPlay(“up“)是让游戏跳转到 up 帧运行,实现小狗的随机出现_root“pig“ add random(9).gotoAndPlay(“up“);6把

9、“菜刀”元件拖到背景层中,在“属性”面板中起实例名为 knife,在“脚本” 层的第 4 帧插入关键帧,输入一下代码:/ mouse.hide()把默认的鼠标隐藏起来。mouse.hide();startDrag (“knife“, true); 设计记分系统。1在场景 1“脚本” 层的第 1 帧输入如下代码:ROUND = 0;SCORE = 0;TATAL = 0;stop();2点选“标签”层的第 5 帧,在“属性”面板上定义该帧的标签名为 again,然后在“ 脚本”层的第 22 帧输入代码:ROUND+;if ( ROUND 0) /table 数组用来检查棋盘是否为空,为空,相应的

10、值为 1,否则为 0for (k=0; k= 0) and (y+_root.dirk1 = 0) x = x + _root.dirk0;y = y + _root.dirk1;score = score * 2;if (_root.tablex+_root.dirk0y+_root.dirk1 = color_bad) and (x+_root.dirk0 = 0) and (y+_root.dirk1 = 0) score = score / 2;x = i;y = j;while (_root.tablex+_root.dirk+40y+_root.dirk+41 = color) a

11、nd (x+_root.dirk+40 = 0) and (y+_root.dirk+41 = 0) x = x + _root.dirk+40;y = y + _root.dirk+41;score = score * 2;if (score 30) score = score * 2;if (_root.tablex+_root.dirk+40y+_root.dirk+41 = color_bad) and (x+_root.dirk+40 = 0) and (y+_root.dirk+41 = 0) score = score / 2;if (maker =“white“) _puter

12、i*15+jk = score; else _root.playeri*15+jk = score;/初始化棋盘,根据上一步落子的不同,来计算一下一步的落子B:再新建一个 Movie clip 组件,命名为 blk2,进入组件编辑状态后,在第一关键桢添加 as:stop();在第六桢插入一个关键桢,并添加如下 AS:if (_root.playnow = “computer“) / 如果先落子的为电脑,则初始化棋盘_root.func.makelist(“white“);_root.func.makelist(“black“);/分别调用前面定义的自定义函数,且传递不同的参数max_compu

13、ter = 0;max_player = 0;k = 0;/定义三个变量for (j=0; j 50) max_computer = _puterj*15+ik ;xc = i;yc = j;if (_puterj*15+ik max_computer) max_computer = _puterj*15+ik ;xc = i;yc = j;if (_root.playerj*15+ik max_player) max_player = _root.playerj*15+ik ;xp = i;yp = j;if (max_computer max_player) x = xc;y = yc;

14、else x = xp;y = yp;/ 绘制棋子num = y * 15 + x;removeMovieClip(_root.b add num);duplicateMovieClip(_root.white, “white“ add num, num + 300);setProperty(_root.white add num, _x, 34.7 + x * 20);setProperty(_root.white add num, _y, 34.7 + y * 20);_root.tableyx = 2;/ 显示棋子_root.display = “Xpos : “ + (x + 1);t

15、emp = chr ( y + 65);_root.display1 = “Ypos : “ + temp;_root.playnow = “player“;/判断是否获胜xx = x;yy = y;for (k=0; k 6) _root.a_result = 0;x = xx;y = yy;while (_root.tableyx = 2) and (y+_root.dirk1 = -1) and (x+_root.dirk0 = -1) x = x + _root.dirk0;y = y + _root.dirk1;/ “_root.table“+y+“+x+“=“+_root.tabl

16、eyx_root.a_result = _root.a_result+1;x = xx;y = yy;while (_root.tableyx = 2) and (y+_root.dirk+41 = -1) and (x+_root.dirk+40 = -1) x = x + _root.dirk+40;y = y + _root.dirk+41;_root.a_result = _root.a_result+1;if (_root.a_result = 6) _root.playnow = “nobody“;if (_root.playnow =“nobody“) C:新建一个 Movie

17、clip 组件,并命名为 bb,此组件用来计算电脑如何走棋,进入组件编辑状态后,在图层 layer1 绘制一个有填充色的矩形,然后在第 5 桢插入一个关键桢,在同样位置绘制一个大小相同填充色不同的矩形。新建一个图层,在矩形里输入提示文字:电脑走棋,然后再新建一个图层 Action,在第一桢添加 AS: stop();,在第 8 桢插入一个关键桢,在此桢添加如下 AS:if (_root.playnow = “computer“) /初始化棋盘_root.func.makelist(“white“);_root.func.makelist(“black“);/调用自定义函数max_compute

18、r = 0;max_player = 0;k = 0;/定义三变量for (j=0; j 50) max_computer = _puterj*15+ik ;xc = i;yc = j;if (_puterj*15+ik max_computer) max_computer = _puterj*15+ik ;xc = i;yc = j;if (_root.playerj*15+ik max_player) max_player = _root.playerj*15+ik ;xp = i;yp = j;if (max_computer max_player) x = xc;y = yc; els

19、e x = xp;y = yp;/ 绘制棋子num = y * 15 + x;removeMovieClip(_root.b add num);duplicateMovieClip(_root.white, “white“ add num, num + 300);setProperty(_root.white add num, _x, 34.7 + x * 20);setProperty(_root.white add num, _y, 34.7 + y * 20);_root.tableyx = 2;/ 显示棋子_root.display = “Xpos : “ + (x + 1);temp

20、 = chr ( y + 65);_root.display1 = “Ypos : “ + temp;_root.playnow = “player“;/ 判断是否获胜xx = x;yy = y;for (k=0; k 6) _root.a_result = 0;x = xx;y = yy;while (_root.tableyx = 2) and (y+_root.dirk1 = -1) and (x+_root.dirk0 = -1) x = x + _root.dirk0;y = y + _root.dirk1;/ “_root.table“+y+“+x+“=“+_root.tabley

21、x_root.a_result = _root.a_result+1;x = xx;y = yy;while (_root.tableyx = 2) and (y+_root.dirk+41 = -1) and (x+_root.dirk+40 = -1) x = x + _root.dirk+40;y = y + _root.dirk+41;_root.a_result = _root.a_result+1;if (_root.a_result = 6) _root.playnow = “nobody“;/ 游戏结束if (_root.playnow =“nobody“) 最后的时间线如图

22、6 所示:图 6D:再新建一个 movie clip 组件,命名为 buttonclip,此组件用来控制双方的落子,进入组件编辑状态后,将前面做好的隐形按钮拖放到编辑区中,然后给第一桢添加 AS:stop();.E:最后再制作一个 movie clip,命名为 gameover,此组件用来判断游戏是否结束,也就是判断是缶有一方已经连好了五颗棋子。进入组件编辑状态后,连续建立四个图层,分别为 layer1,layer2,layer3 和 action,在 layer1,layer2,layer3 的第一桢插入空白,然后在第 2 桢绘制电脑获胜的提示信息,并将 Replay 按钮拖到编辑区中,给按

23、钮添加 As:on (release) 如图 7 所示:图 7在 layer1,layer2,layer3 的第三桢按照同样的方法设置您胜利的提示信息,如图 8 所示:图 8然后回到图层 action,接下来就要添加具体的控制 Action 了,在此图层的前三个关键桢分别添加 as: stop();,在第四关键桢添加如下 AS:for (i=0; i=225; i+) removeMovieClip(_root.black add i);removeMovieClip(_root.white add i);removeMovieClip(_root.b add i);/清除棋盘上的棋子_roo

24、t.gotoAndPlay(“run“);/跳转到游戏的开始最后的时间线如图 9 所示:图 9布置主场景:游戏的主要工作完成后,接下来需要布置主场景了。首先使用绘图工具绘制出游戏中的棋盘,棋盘大小为 15*15 的矩阵,然后给棋盘标上横向和纵向的标识,如图 10 所示:图 10分别将组件 white,black,buttonclip,blk,bb 和 gameover 拖到舞台的合适位置,如图 11 所示:图 11组件 white 的实例名为:black组件 black 的实例名为:white组件 buttonclip 的实例名为:b组件 blk 的实例名为:func组件 bb 的实例名为:c

25、omputerrun组件 gameover 的实例名为:gameoverman然后在棋盘上绘制两个 Dynamic text 动态文本框,用来显示上一步落子的位置,分别设置变量名为 display 和 display1。最后,给第一关键祯添加 as:stop();urls = “边城浪子- 闪客帝国“;num = 0;table = new Array();computer = new Array();player = new Array();a_result = 0;/ Table arrayfor (i=0; i15; i+) tablei = new Array(0,0,0,0,0,0,

26、0,0,0,0,0,0,0,0,0);/ Computer and player table listfor (j=0; j15; j+) for (i=0; i15; i+) computerj*15+i = new Array(0,0,0,0);playerj*15+i = new Array(0,0,0,0);/ Make buttonscount = 0;for (j=0; j15; j+) for (i=0; i15; i+) duplicateMovieClip(_root.b, “b“add count, count + 30);setProperty(“b“add count,

27、 _x, 34.7 + i * 20);setProperty(“b“ add count, _y, 34.7 + j * 20 );count+;/ Eight directionsvar dir = new Array();dir0 = new Array(1,0);dir1 = new Array(1,1);dir2 = new Array(0,1);dir3 = new Array(-1,1);dir4 = new Array(-1,0);dir5 = new Array(-1,-1);dir6 = new Array(0,-1);dir7 = new Array(1,-1);play

28、now = “player“;removeMovieClip(_root.b112);duplicateMovieClip(_root.white, “white112“, 142);setProperty(“white112“, _x, 174.7);setProperty(“white112“, _y, 174.7);/ The first black pointtable77 = 2;到此为止,五子连珠这个游戏就制作完成了,本游戏属于较高级的游戏制作,需要有一定的 Action 编程基础,不过如果您对Action 不太了解,相信学完本实例后,可以在一定程度上提高您的 Action 水平。

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报