<dd id="zpvot"><pre id="zpvot"></pre></dd>
  • <em id="zpvot"><acronym id="zpvot"><u id="zpvot"></u></acronym></em>
    <rp id="zpvot"></rp>
    1. <rp id="zpvot"><ruby id="zpvot"></ruby></rp>
      <strong id="zpvot"></strong>
      教程分類
      教程瀏覽排行

      連連看小游戲地圖數據簡單生成的AS代碼

        比如連連看的數據生成。

        比較簡單,這里不包括判斷是否一定有解的部分,只是一個隨意生成地圖(給定行,列,每種圖片的生成個數),沒有思路的可以參考一下,高手也可以指正。

        //生成地圖的類

        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

      來源:不詳 發布時間:2012-4-14 18:22:49 瀏覽次數
      上一篇教程:Flash繪圖功能制作奶瓶標志
      下一篇教程:flash中AS的使用技巧匯總
      教程評論


      評論人: 驗證碼:
      內 容:
      相關教程
      奇米影视首页