本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2006-07-08 · 原址 http://bbs.flash8.net/forums/1818451/ShowPost.aspx ← Flash 保存计划
欢迎光临 闪吧论坛 登录 | 注册 | FAQ | 搜索
Print Search
帖子排序:    
帖子发起人:闷闷芳芳   发起时间:2006-03-20 16:37 下午   回复:46
闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

等级:Flash 3

等级:FLASH 3
注册:2003-08-18
发贴:811
积分:9
2006-03-20, 16:37 下午   IP 地址:已记录  报告  收藏  楼主
贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 这是我写的第一个游戏。。功能还没完善。。只有最基本的功能。。先把大致的拿上来让大家看看先。。如果大家有兴趣的。上传源文件+详细解说。。。


    附件:
    序号 附件名称 类型 文件大小 上传时间 下载次数
    1 贪吃蛇3.swf Flash动画 15Kb 2006-03-20 306
    2 贪吃蛇3.19.fla 未知格式 86Kb 2006-03-20 263

    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-03-20, 17:37 下午   IP 地址:已记录  报告  收藏  第2楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 其实整个游戏一共要解决几个问题。 1。如何让蛇根据键盘的方向移动? 2。如何让食物随机分布? 3。如何让蛇碰到食物的时候食物消失蛇身加长? 4。如何移动框外或者碰到蛇身就就GAME OVER。 先说第一个问题。1。如何让蛇根据键盘的方向移动?先将复杂的问题简单化。就一个MC而言。我们如何通过键盘移动呢?新建MC。。并将起命名成 snakehead(蛇头)然后在新建一层。命名成AS层。。。在帧上写上 function onEnterFrame(){//以帧的频率调动以下代码 if (Key.isDown(65)) {//如果键盘按下去的时候 让snakehead命名的MCx轴坐标减10 snakehead._x-=10; } if (Key.isDown(68)) { snakehead._x+=10; } if (Key.isDown(87)) { snakehead._y-=10; } if(Key.isDown(83)) { snakehead._y+=10; } }
    附件:
    序号 附件名称 类型 文件大小 上传时间 下载次数
    1 2.swf Flash动画 0Kb 2006-03-20 150

    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-03-20, 17:38 下午   IP 地址:已记录  报告  收藏  第3楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 附上源文件。。。
    附件:
    序号 附件名称 类型 文件大小 上传时间 下载次数
    1 2.fla 未知格式 24Kb 2006-03-20 126

    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-03-20, 17:43 下午   IP 地址:已记录  报告  收藏  第4楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 下面来讲将一些主要的知识点:function onEnterFrame(){这是什么意思?他的意思就是FLASH一秒种走过多少帧他一秒就执行多少吃里面的代码。。我们用他来随时检测键盘上的按钮是不是被按下。。。
    key.isDown(68)有是什么意思?他的意思就是说Key就代表键盘的意思。isDown就是说。键盘上的键被按下。。(68)就是指什么键了。。这里的68是 ASCII 键控代码值不清楚的朋友可以查一下FLASH的帮助。。。
    通过以上的讲应该可以明白了用键盘怎么控制影片裁剪的移动了吧。。后面的明天再讲好了

    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-03-20, 17:44 下午   IP 地址:已记录  报告  收藏  第5楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 没人回复。。口水都流光拉-*-是不是太简单了。。??有什么问题大家可以在回复中提。。这个区人气不是很旺呀

    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-03-21, 09:59 上午   IP 地址:已记录  报告  收藏  第6楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 看来是没人看的估计太简单了。。。有个源文件有兴趣的人就下下来看一下吧。。。

    少做梦多做事
    hippo1 离线,最后访问时间:2006-5-28 10:43:07 hippo1

    等级:Flash1

    等级:FLASH1
    注册:2003-09-29
    发贴:67
    积分:0
    2006-03-21, 17:49 下午   IP 地址:已记录  报告  收藏  第7楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 怎么会没人看呢,简单不是问题啦,问题只是看的人还没到而已,这不是来了嘛,哈哈,正在研究楼主的原程序中呢。非常感谢楼主,我是菜鸟N号。

    分这东西,他加随他加,清风拂山冈
    hippo1 离线,最后访问时间:2006-5-28 10:43:07 hippo1

    等级:Flash1

    等级:FLASH1
    注册:2003-09-29
    发贴:67
    积分:0
    2006-03-21, 18:32 下午   IP 地址:已记录  报告  收藏  第8楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • if (_root.snakehead.hitTest(_root["mcfood"+j])) {
    //判断蛇是否和食物碰到了
    n++;
    removeMovieClip(_root["mcfood"+j]);
    zynum += 10;
    j++;
    mcfoodAdd();
    }
    这里有点不解,duplicateMovieClip("snakehead", "snakehead"+i, i);
    snakehead._x += xm;
    snakehead._y += ym;这里复制出来的snakehead[i]是不是通过(_root.snakehead.hitTest(_root["mcfood"+j])) 都可以进行碰撞检测了?

    分这东西,他加随他加,清风拂山冈
    hippo1 离线,最后访问时间:2006-5-28 10:43:07 hippo1

    等级:Flash1

    等级:FLASH1
    注册:2003-09-29
    发贴:67
    积分:0
    2006-03-21, 18:34 下午   IP 地址:已记录  报告  收藏  第9楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 用attachMovie的话,是不是也可以用这种方法来进行碰撞检测或其他动作?

    分这东西,他加随他加,清风拂山冈
    shs_2004 离线,最后访问时间:2006-3-22 0:50:35 shs_2004

    等级:Flash1

    等级:FLASH1
    注册:2005-04-19
    发贴:13
    积分:0
    2006-03-21, 23:49 下午   IP 地址:已记录  报告  收藏  第10楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 楼主不简单啊!每一个问题都讲解了!而且讲解了思路!大概很多人以为贪食蛇见得太多了,就以为很简单,其实并不简单的!努力向楼主学习!
    knift 离线,最后访问时间:2006-6-10 15:08:32 knift

    等级:Flash 2

    等级:FLASH 2
    注册:2005-05-07
    发贴:138
    积分:0
    2006-03-22, 10:14 上午   IP 地址:已记录  报告  收藏  第11楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • .源文件下来看了看.你把自定义的函数放的EnterFrame里循环毫无意义~~
    其它还可以~~恩~

    for(var i in 全世界的MM){
    if( 全世界的MM[i].hitTest(我) && 全世界的MM[i].性格==善良){
    我的老婆=全世界的MM[i];
    break;
    }else{
    路人=全世界的MM[i];
    }
    }

    TotalCode欢迎您http://www.engiy.com
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-03-22, 18:27 下午   IP 地址:已记录  报告  收藏  第12楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 回答8楼的问题。复制出来的蛇的身体。。在检测碰状的时候不需要检测蛇的身体是否与食物碰状。。只检测蛇头是否和食物碰状。。

    我在解释下这个语句吧。

    if (_root.snakehead.hitTest(_root["mcfood"+j])) {
    //判断蛇是否和食物碰到了
    n++;
    removeMovieClip(_root["mcfood"+j]);
    zynum += 10;
    j++;
    mcfoodAdd();
    }

    将其翻译成中文便于理解。。

    如果(主时间帧的snakehead影片裁剪与主时间帧上的名为“mcfood"+j的影片裁剪相交){

    n=n+1

    删除主时间帧上的名为“mcfood"+j的影片裁剪;

    变量为zynum的数值+10。

    j=j+1;

    调用函数mcfoodAdd();调用这个函数的目的是在于随机在出现次食物

    }

    OVER   还有不懂的继续问。呵呵昨天没人回复心凉了。。所以这么晚才上来


    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-03-22, 18:29 下午   IP 地址:已记录  报告  收藏  第13楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 回答9楼 hippo1 的问题attachMovie同样可以用与检测碰撞。。。用法和duplicateMoviClip差不多的。。

    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-03-22, 18:32 下午   IP 地址:已记录  报告  收藏  第14楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 谢谢11楼的建议。当时没有去考虑他。因为我觉得函数这东西只有在调用的时候才占用内存。。觉得不影响什么也就随便放了。。不过这样对程序的可读性不好。下次会改正的。。第一次做游戏。。……^_^

    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-04-06, 09:37 上午   IP 地址:已记录  报告  收藏  第15楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 今天有点时间来讲一讲如何让食物随机分布吧。说到随机分布。大家想到的第一个想法就是随机函数。虽然FALSH现在不太推荐用random而推荐用Math类的Math.random();属性。因为后者随机更加精确。。。但我这需要的是一个整值。。所以还是使用random.以下是这一部分的代码。
    function mcfoodAdd() {
    //食物随机出现函数
    _root.attachMovie("mcfood", "mcfood"+j, 100+j);
    //加载库中的mcfood到主场景。将其命名为“mcfood"+j.设定深度为 100+J;
    _root["mcfood"+j]._x = random(50)*10+31;
    //设定影片的X坐标
    _root["mcfood"+j]._y = random(50)*10+31;
    //设定影片的Y坐标
    }



    具体的就是这样。

    少做梦多做事
    zengg2004 离线,最后访问时间:2006-5-26 17:20:31 zengg2004

    等级:Flash1

    等级:FLASH1
    注册:2003-05-12
    发贴:51
    积分:0
    2006-04-12, 20:40 下午   IP 地址:已记录  报告  收藏  第16楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 坐下来认真听讲,正在慢慢研究楼主的程序,写的不错啊,讲得又深入浅出!
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-04-14, 17:07 下午   IP 地址:已记录  报告  收藏  第17楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 没时间一点点说了感觉越说越乱。花点时间把所有语句来个详细说明。希望对大家有所帮助。。原创作品希望大家支持呀!!!!

    function onEnterFrame() {
    if (tm == 0) {//让食物刚开始只出现一次其中。tm就是用来判断场景里面是否有食物
    mcfoodAdd();//如果没有的话调用事物函数。随机产生一个食物
    tm = 1;//将tm改成1说明场景已经有食物加载上去了
    }
    function mcfoodAdd() {
    //食物随机出现函数
    _root.attachMovie("mcfood", "mcfood"+j, 100+j);
    //复制元件里面的连接名为“mcfood"的影片裁剪。分别命名成不同的名字和深度

    _root["mcfood"+j]._x = random(50)*10+31;//新产生的随即X坐标
    _root["mcfood"+j]._y = random(50)*10+31;//新产生的随即Y坐标
    }
    i++;
    if (i>=n) {
    //判断蛇是否够长
    i = 1;
    }

    _root["snakehead"+i]._alpha -= 10;//设定新产生的蛇身透明度小一点
    for (k=0; k<=n; k++) {//用来遍历蛇头是否碰到蛇身
    if (snakehead.hitTest(_root["snakehead"+k])) {//如果碰到就OVER

    gotoAndStop("gameover");
    }
    }
    if(snakehead._x<28){//是否到达边界
    gotoAndStop("gameover");
    }
    if(snakehead._x>520){//是否到达边界
    gotoAndStop("gameover");
    }
    if(snakehead._y>520){//是否到达边界
    gotoAndStop("gameover");
    }
    if(snakehead._y<28){//是否到达边界
    gotoAndStop("gameover");
    }
    if (Key.isDown(65)) {//键盘键是否按下
    if (xm != 10) {//当蛇向右移动的时候不能够反方向移动
    xm = -10;
    ym = 0;
    }
    }
    if (Key.isDown(68)) {//键盘键是否按下
    if (xm != -10) {//当蛇向左移动的时候不能够反方向移动
    xm = 10;
    ym = 0;
    }
    }
    if (Key.isDown(87)) {//键盘键是否按下
    if (ym != 10) {当蛇向下移动的时候不能够反方向移动
    xm = 0;
    ym = -10;
    }
    }
    if (Key.isDown(83)) {//键盘键是否按下
    if (ym != -10) {当蛇向上移动的时候不能够反方向移动
    xm = 0;
    ym = 10;
    }
    }
    if (_root.snakehead.hitTest(_root["mcfood"+j])) {
    //判断蛇是否和食物碰到了
    n++;
    removeMovieClip(_root["mcfood"+j]);//将食物删除
    zynum += 10;//初使化工作
    j++;
    mcfoodAdd();
    }
    }

    少做梦多做事
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-04-14, 17:08 下午   IP 地址:已记录  报告  收藏  第18楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 斑竹给个分意思下嘛。原创的打字打的很累的……^_^
    有问题下面提。。一定经常来看看

    少做梦多做事
    zengg2004 离线,最后访问时间:2006-5-26 17:20:31 zengg2004

    等级:Flash1

    等级:FLASH1
    注册:2003-05-12
    发贴:51
    积分:0
    2006-04-16, 01:55 上午   IP 地址:已记录  报告  收藏  第19楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 看了以后有很大的帮助,给闷闷老师鼓掌!游戏区现在正需要您这样的人!!
    也许我很笨吧,有两个地方问一下闷闷老师:
    1.您在前面举例说如何让snakehead上下左右移动我知道了(就是2.fla),可您后来讲的贪食蛇的代码中,我怎么也看不懂您是如何通过按键让贪食蛇移动的,希望您能解答!
    2.这段代码:
    if (Key.isDown(65)) {//键盘键是否按下
    if (xm != 10) {//当蛇向右移动的时候不能够反方向移动
    xm = -10;
    ym = 0;
    }
    }
    if (Key.isDown(68)) {//键盘键是否按下
    if (xm != -10) {//当蛇向左移动的时候不能够反方向移动
    xm = 10;
    ym = 0;
    }
    }
    if (Key.isDown(87)) {//键盘键是否按下
    if (ym != 10) {当蛇向下移动的时候不能够反方向移动
    xm = 0;
    ym = -10;
    }
    }
    if (Key.isDown(83)) {//键盘键是否按下
    if (ym != -10) {当蛇向上移动的时候不能够反方向移动
    xm = 0;
    ym = 10;
    }
    我知道65\68\87\83分别表示A\D\W\S四个健,但我不明白好像xm和ym从头到尾都没有改变啊~
    怎么会说当他们不为10或-10呢?

    不知道我的问题您听懂了吗?再次感谢您的教程,呼吁版主加分,呵呵。。。
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-04-17, 18:23 下午   IP 地址:已记录  报告  收藏  第20楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 这里面提到的XM。。和YM是蛇在刚开始的时候的移动速度。。
    初始的时候 xm=10;ym=0;然后在
    function onEnterFrame(){//反复执行
    snakehead._x+=xm;//将蛇的X坐标以帧频的速度一次加10个象数
    }
    这样的话。蛇就象右边移动。。
    这样的话当按钮被按下去的时候。改变XM。或者YM的数值的话就相当与改变了蛇的运动方向。
    前面加个判断的目的是为了让蛇不能反方向移动。因为如果一反方向移动蛇头就碰到了蛇身了。
    这样不符合现实的状况。。
    希望你能听懂。
    星期六星期天休息在加玩轩辕剑没上来^_^不好意思。。
    希望你能懂。。。
    下面附上两个源文件。一个是没加按钮控制方向的一个是可以控制方向的。
    你比较下。

    附件:
    序号 附件名称 类型 文件大小 上传时间 下载次数
    1 键盘控制移动.swf Flash动画 0Kb 2006-04-17 81
    2 自动移动.fla 未知格式 22Kb 2006-04-17 52
    3 自动移动.swf Flash动画 0Kb 2006-04-17 63
    4 键盘控制移动.fla 未知格式 42Kb 2006-04-17 53

    少做梦多做事
    zengg2004 离线,最后访问时间:2006-5-26 17:20:31 zengg2004

    等级:Flash1

    等级:FLASH1
    注册:2003-05-12
    发贴:51
    积分:0
    2006-04-17, 20:45 下午   IP 地址:已记录  报告  收藏  第21楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 呵呵,终于懂了!谢谢闷闷老师!真有耐性啊!

    看来还是对function onEnterFrame()理解不够。。。现在懂了!

    期待闷闷老师更精彩的讲解!
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-04-19, 10:10 上午   IP 地址:已记录  报告  收藏  第22楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 斑竹给加一分吧。。不算太过分吧。毕竟打了这么多字很累的^_^
    赚点辛苦分嘛。。。在不给我加分。我就55555555555了。把闪吧的论坛给淹了可不要怪我哦
    5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555

    少做梦多做事
    delete 离线,最后访问时间:2006-6-3 23:34:54 delete

    等级:Flash1

    等级:FLASH1
    注册:2006-04-20
    发贴:13
    积分:0
    2006-04-20, 23:05 下午   IP 地址:已记录  报告  收藏  第23楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  • 经典~
    delete 离线,最后访问时间:2006-6-3 23:34:54 delete

    等级:Flash1

    等级:FLASH1
    注册:2006-04-20
    发贴:13
    积分:0
    2006-04-20, 23:07 下午   IP 地址:已记录  报告  收藏  第24楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。

  •  delete wrote:
    经典~
    开始学习中~~~谢谢!
    闷闷芳芳 离线,最后访问时间:2006-6-9 13:54:35 闷闷芳芳

    等级:Flash 3

    等级:FLASH 3
    注册:2003-08-18
    发贴:811
    积分:9
    2006-04-24, 18:31 下午   IP 地址:已记录  报告  收藏  第25楼
    Re:贪食蛇经典游戏新手教程。有兴趣的进来看。。!含源码![原创]欢迎交流

  • 谢谢楼上支持。。。有你们的支持。我会继续写一些这方面的新手教程给大家分享。。共同学习共同进步。。^_^

    少做梦多做事
    总页数 2 第 1 页 [共有 47 条记录]
    1 2 >
    快速回复帖子

     




    标题: