论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: 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,视频教程

连连看小游戏地图数据简单生成的AS代码

文章类别:Flash AS | 发表日期:2009-11-17 9:27:31

//生成地图的类
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

上一篇:{教程}Flash AS的使用技巧 人气:2308
下一篇:{教程}有关Debug工具的解说 人气:2652
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058