flash on 2016-4-6

by mutantleg
♥0 | Line 69 | Modified 2016-04-06 04:29:39 | MIT License
play

ActionScript3 source code

/**
 * Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/c2MT
 */

package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {

            var ax:Number; var ay:Number;
            var i:int; var k:int; var yt:int; var t:int;
            var num:int;
            
            initEmpty(16,16);
            
//            for (i=0;i<16;i+=1)  { setTile(i, 7, i); }
          //  for (i=0;i<128;i+=1) { setTile(Math.random()*16,Math.random()*16, 1); }
            
            ax = 4; ay= 4;
            for (i=0;i<16;i+=1)            
            {
               t = Math.random() * 4;
               num = Math.random()<0.5?2:3;
               for(k=0;k<num;k+=1)
               {
                   if (t==0) {ax+=1;} 
                   else if (t==1){ax-=1;}
                   else if (t==2){ay+=1;}
                   else { ay-=1;}
                   setTile(ax,ay, 1);      
                   if (ax<0) {ax=0;}  if (ax>mw){ax=mw-1;}
                   if (ay<0){ay=0;}   if (ay>mh){ay=mh-1;}
               }//nextk
            }//nexti
            
            graphics.clear();
      
           for (i=0;i<mh;i+=1) { for (k=0;k<mw;k+=1)  { adjTile(k,i);  }}

           graphics.lineStyle();
             for (i=0;i<mh;i+=1)  { yt = i * mw;  for (k=0;k<mw;k+=1)
             { t = vecGrid[k+yt];
               if (t<=0) { continue; }
               ax=k*cw;ay=i*ch; 
                 graphics.beginFill(0x808080, 1); 
                   graphics.drawRect(ax,ay,cw,ch);           
                graphics.endFill();  
             }}//nextki
      
            for (i=0;i<mh;i+=1)  { yt = i * mw;  for (k=0;k<mw;k+=1)
             { t = vecGrid[k+yt];
               if (t<=0) { continue; }
               ax=k*cw;ay=i*ch; 
                graphics.lineStyle(1,0x404040); graphics.drawRect(ax,ay,cw,ch);
                graphics.lineStyle(4,0);
                if ((t&1)==0) { graphics.moveTo(ax,ay);    graphics.lineTo(ax,ay+ch); }
                if ((t&2)==0) { graphics.moveTo(ax+cw,ay); graphics.lineTo(ax+cw,ay+ch); }
                if ((t&4)==0) { graphics.moveTo(ax,ay);    graphics.lineTo(ax+cw,ay); }
                if ((t&8)==0) { graphics.moveTo(ax,ay+ch); graphics.lineTo(ax+cw,ay+ch); }            
              continue;
             }}//nextki

        }//ctor
        
        
        public var vecGrid:Vector.<int>;
        public var mw:int = 0;         public var mh:int = 0;
        public var cw:Number = 32;     public var ch:Number = 32;

        public function initEmpty(aw:int, ah:int):void
        { mw=aw; mh=ah; vecGrid = new Vector.<int>(aw*ah, false); }

        public function setTile(ax:int, ay:int, t:int):void
        { if (ax<0||ax>=mw||ay<0||ay>=mh) {return;} vecGrid[(ay*mw)+ax]=t; }

        public function getTile(ax:int, ay:int ):int
        { if (ax<0||ax>=mw||ay<0||ay>=mh) {return 0;}  return vecGrid[(ay*mw)+ax]; } 
           
        public function adjTile(ax:int, ay:int):void
        {
          if (getTile(ax,ay)<=0) {return; }
          var f:int; f= 0;
          if (getTile(ax-1, ay)>0) { f|=1; }
          if (getTile(ax+1, ay)>0) { f|=2; }
          if (getTile(ax, ay-1)>0) { f|=4; }
          if (getTile(ax, ay+1)>0) { f|=8; }
       //   f=5;
          setTile(ax,ay, f);             
        }//adjtile   
           
        
    }//classend
}