当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > 连连看小游戏地图数据简单生成的AS代码

Flash动画制作
巧用超级解霸在Flash V5.0中插入录像
教你用Flash MX来制作简单的课件界面
Flash MX 2004 ActionScript图文教程(二)
Flash MX 2004 ActionScript图文教程(三)
Flash MX 2004 ActionScript图文教程(四)
Flash MX 2004 ActionScript图文教程(五)
Flash MX 2004 ActionScript图文教程(六)
flash场景之间相互跳转的实现方法
Flash本地加密
FLASH -- 关于变量的问题FLASH -- 关于变量的问题
Flash5 画任意直线教程
Flash MX 视频导入功能详解
制作飞舞的蝴蝶
Flash MX 2004 ActionScript图文教程(七)
Flash MX 2004 ActionScript图文教程(八)
Flash MX 2004 ActionScript图文教程(九)
Flash MX 2004 ActionScript图文教程(十)
Flash教程 飞翔的文字
Flash MX 2004 ActionScript图文教程(十一)
制作Flash网站技巧拾零

Flash动画制作 中的 连连看小游戏地图数据简单生成的AS代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-04   浏览: 92 ::
收藏到网摘: n/a

比如连连看的数据生成。

比较简单,这里不包括判断是否一定有解的部分,只是一个随意生成地图(给定行,列,每种图片的生成个数),没有思路的可以参考一下,高手也可以指正。

//生成地图的类
package src.ww.llk.map
{
    import mx.collections.ArrayCollection;
   
    public class MakeMap
    {
        private var mapParam:MapParam = null;
        private var types:ArrayCollection = null;
//保证取得的数据不被重取
        private var flags:ArrayCollection = null;
        public function MakeMap(param:MapParam):void {
            mapParam = param;
            initData();
        }
        
        // 初始化必要的数据
        private function initData():void {
            types = new ArrayCollection();
            var typeNum:int = Math.floor(mapParam.cols*mapParam.rows/mapParam.numberPerType);
            for(var i:int=1;i<=typeNum;i++) {
                for (var j:int=0;j<mapParam.numberPerType;j++) {
                    types.addItem(i);
                }
               
            }
            
            
            var yushu:int = mapParam.cols*mapParam.rows - typeNum*mapParam.numberPerType;
            for (var yI:int = 0; yI<yushu;yI++) {
                types.addItem(1);
            }
        }
        
//随机生成地图
        public function make():Array {
            flags = new ArrayCollection();
            for(var i:int=0;i<types.length;i++){
                flags.addItem(i);
            }
            var mapData:Array = new Array();
            var rowData:Array = null;
            var col:int = 0;
            
            rowData = new Array();
            rowData.push(0);
            for(col = 0;col<mapParam.cols;col++){
                rowData.push(0);
            }
            rowData.push(0);
            mapData.push(rowData);
            for(var row:int = 0;row<mapParam.rows;row++){
                rowData = new Array();
                rowData.push(0);
                for(col = 0;col<mapParam.cols;col++){
                    rowData.push(getType());
                }
                rowData.push(0);
                mapData.push(rowData);
            }
            rowData = new Array();
            rowData.push(0);
            for(col = 0;col<mapParam.cols;col++){
                rowData.push(0);
            }
            rowData.push(0);
            mapData.push(rowData);
            return mapData;
        }
        
        // 随机取得单个数据
        private function getType():int {
            var ran:int=-1;
            var ret:int = 0;
            ran = randomIndex();
            var index:int = int(flags.getItemAt(ran));
            flags.removeItemAt(ran);
            ret = int(types.getItemAt(index));
            return ret;
        }
        
        private function randomIndex():int {
            return Math.random() * (flags.length - 1);
        }
    }
}

参数类,就是一个bean,
package src.ww.llk.map
{
    public class MapParam
    {
        public var rows:Number=0;
        public var cols:Number=0;
        public var numberPerType:int=4;
    }
}

测试类:
            public function test():void {
                var param:MapParam = new MapParam();
                param.rows = 6;
                param.cols = 6;
                param.numberPerType = 4;
                var maker:MakeMap = new MakeMap(param);
                var map:Array = maker.make();
                for each(var rowData:Array in map) {
                    var rowStr:String = "";
                    for each(var cell:int in rowData) {
                        rowStr += cell + " ";
                    }
                    trace(rowStr);
                }
            }
运行结果:
0 0 0 0 0 0 0 0
0 3 3 1 1 7 6 0
0 6 8 9 7 9 5 0
0 2 4 4 4 1 7 0
0 5 8 4 9 5 8 0
0 2 6 2 3 1 7 0
0 6 2 5 3 8 9 0
0 0 0 0 0 0 0 0