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

时间:2013-07-16 20:33:14  作者:啤酒  阅读:16777215

比如连连看的数据生成。

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

  //生成地图的类

  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

                      types.addItem(i);

                  }


              }



              var yushu:int = mapParam.cols*mapParam.rows - typeNum*mapParam.numberPerType;

              for (var yI:int = 0; yI

                  types.addItem(1);

              }

          }


  //随机生成地图

          public function make():Array {

              flags = new ArrayCollection();

              for(var i:int=0;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

                  rowData.push(0);

              }

              rowData.push(0);

              mapData.push(rowData);

              for(var row:int = 0;row

                  rowData = new Array();

                  rowData.push(0);

                  for(col = 0;col

                      rowData.push(getType());

                  }

                  rowData.push(0);

                  mapData.push(rowData);

              }

              rowData = new Array();

              rowData.push(0);

              for(col = 0;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

BannerZest Pro Mac版 V4.0 电脑
BannerZest Pro Mac版 V4.0
大小:0MB  时间:01.12  赞:28

相关文章

  • Flash教你制作可爱的小青蛙闹钟
    Flash教你制作可爱的小青蛙闹钟

    这个Flash实例制作了一个可爱的“小青蛙时钟”动画,用到了Flash的基本绘图工具如椭圆、矩形、直线和任意变形等,操作简洁易懂,适合练习。

    16777215
  • Flash教你如何制作吹泡泡动画特效
    Flash教你如何制作吹泡泡动画特效

    这个Flash实例制作了一个有趣的“小丑吹泡泡”动画,主要运用了椭圆、直线工具,以及任意变形和渐变填充等,操作简洁易懂,适合练习。先看下效果吧:

    16777215
  • Flash教你如何制作蝙蝠在月夜里飞翔
    Flash教你如何制作蝙蝠在月夜里飞翔

    1、这个小教程用Flash制作了一个蝙蝠在月夜里飞翔的动画,用到了Flash的基本绘图工具以及渐变填充等,操作简洁,适合练习。

    16777215
  • Flash教你如何制作一幅诗意的水墨卷轴展开的动画
    Flash教你如何制作一幅诗意的水墨卷轴展开的动画

    1、北京奥运会开幕式上那充满诗意的卷轴,以及它所呈现给我们的一幅幅无法言喻的美妙画面,大家一定还记忆犹新吧!今天我们就用Flash来制作一幅诗意的水墨卷轴展开的动画,主要用到矩形工具和渐变填充工具,操作简单易懂,适合练习。

    16777215
  • flash制作小猪教程
    flash制作小猪教程

    本教程是使用Flash制作可爱有趣的亲嘴猪动画,讲述如何用简单的绘图工具画出可爱俏皮的小猪以及制作成亲嘴动画。这个Flash实例简单易懂,这个Flash实例制作了两只可爱的小猪亲嘴的动画,用到了Flash的基本绘图工具如椭圆、矩形、直线和任意变形等,操作简单易懂,适合练习。

    16777215
  • flash举笔题诗动画水调歌头制作教程
    flash举笔题诗动画水调歌头制作教程

    1、本教程主要使用了椭圆、矩形和文字工具以及渐变填充,操作实用,适合练习。

    16777215
  • flash动画控制SWF大小的技巧介绍
    flash动画控制SWF大小的技巧介绍

    flash一般做出来都是要拿到网络上去传播的,所以控制他的大小非常重要,试想如果你一个文件做出来几M甚至几十M,那会有几个人有耐心去等他下载完,下面我来说一些造成文件增大原因与解决的方法,因为我们做网络广告的时候,一般一个广告不让超过20K,所以对于控制文件大小比较有经验。

    16777215
  • Flash几张图片首尾连接循环滚动实现方法
    Flash几张图片首尾连接循环滚动实现方法

    要让几张图片循环滚动,最简的原理就是把连续图片再复制一份接到尾部,待第一张图片滚完之后被复制的接着滚动。原理图示如图7-5所示。

    16777215
  • Flash方块动画特效制作教程
    Flash方块动画特效制作教程

    效果如下:

    16777215
  • Flash教你绘制楼梯动画场景
    Flash教你绘制楼梯动画场景

    先看看最终效果:

    16777215