• 【设为首页】
  • 【收藏闪客居】
当前位置:主页 > FLASH AS 编程 > AS游戏篇 > 文章内容
  • 一个40行的交换青蛙游戏

  • 来源:网络 作者:chenlangeer 2006-12-26 【 】 TAG:

前两天贴了一个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





上一篇:扫雷游戏的一种算法(完整)   下一篇:不到40行代码的填色游戏
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)