论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

一个40行的交换青蛙游戏

文章类别:Flash AS编程 | 发表日期:2008-10-6 17:35:24


前两天贴了一个40行的填色游戏,跟帖的人不少,看来大家对短小精悍的代码段比较感兴趣,今天就再贴一个青蛙游戏吧,玩法是一共7个格子,左边3个红青蛙,右边三个蓝青蛙,中间有个空格。点击青蛙可以向前移动一格或跳过一个青蛙,你的任务就是将这两组青蛙完全交换过来。

为了图省事,我用圆点来代表青蛙了,把下面这段代码贴到flash里面,执行即可。

//检查是否成功

function checkSuccess():Boolean { 
        for (var i = 0; i<arr.length; i++) { 
                if (arr[i] != arr2[i]) { 
                        return false; 
                } 
        } 
        return true; 
}
//定义两个数组,分别是初始化的位置和结束时的位置,1代表红色,2代表蓝色
function game() {
        arr = [1, 1, 1, 0, 2, 2, 2];
        arr2 = [2, 2, 2, 0, 1, 1, 1];
        for (var i = 0; i<arr.length; i++) {
                if (arr[i]) {
//如果arr[i]!=0,则进行绘点,赋值,设置响应等一系列工作
                        var mc:MovieClip = _root.createEmptyMovieClip("mc"+i, i);
                        mc._x = i*40+100;
                        mc._y = 100;
                        mc.lineStyle(40, arr[i] == 1 ? 0xFF0000 : 0xFF, 100);
                        mc.lineTo(0, .5);
//dir代表前进方向,只能前进,不能后退
                        mc.dir = arr[i] == 1 ? 1 : -1;
                        mc.pos = i;
                        mc.tag = arr[i];
                        mc.onRelease = function() {
//如果这只青蛙前面是空的,那么它可以前进一格
                                if (arr[this.pos+this.dir] == 0) {
                                        var move_step = this.dir;
//在前面的条件不成立的情况下,如果前面的第二格是空的,那么它可以前进两格
                                } else if (arr[this.pos+this.dir*2] == 0) {
                                        var move_step = this.dir*2;
                                }
//通过前面的判断,可以得出一个move_step,如果这个move_step确实存在,就可以前进拉,
                                if (move_step != undefined) {
//更新arr
                                        arr[this.pos+move_step] = this.tag;
                                        arr[this.pos] = 0;
//更新这只青蛙的pos值
                                        this.pos = this.pos+move_step;
//更新它的_x坐标
                                        this._x = this.pos*40+100;
                                }
//检查是否结束
                                if (checkSuccess()) {
                                        trace("success");
                                        //game();
                                }
                        };
                }
        }
}
game();

 



/upimg/soft/1_061226092210.fla


加跳嘛
,稍微修改一下就行了
1.添加一个jumping的布尔值,判断是否有青蛙正在跳,正跳着时不能响应鼠标
2.添加一个jume_y数组,数组的长度表示跳的时间,每个值表示跳的高度,jump_y = [-5, 30, 50, 55,50, 40, 20, 0];
3.添加一个jump函数:

 

function jump(mc:MovieClip, move_step:Number) {
        jumping = true;
        mc.jump_time = 0;
        mc.onEnterFrame = function() {
                this._y = 100-jump_y[this.jump_time];
                this._x += move_step*40/jump_y.length;
                mc.jump_time++;
                if (this.jump_time == jump_y.length) {
                        delete this.onEnterFrame;
                        jumping = false;
                }
        };
}


4.将原来的“this._x = this.pos*40+100;”替换成jump(this, move_step);

经过以上步骤,青蛙就跳起来啦。
思考:表示一个物体的跳跃,不一定要计算重力,计算弹跳力,一个数组就能搞定,可以联想到之前很多人写slide函数,线性的,二次的,三次的,弹簧的。。。数学成绩不好的同学,肯定看了头疼,何不利用数组,想怎样slide都行。
 

/upimg/soft/1_061226092315.fla


视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058