flash on 2017-1-25

by mutantleg
♥0 | Line 74 | Modified 2017-01-25 06:06:36 | 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/QsMd
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            
            mw=16;mh=16;
            vecHeight = new Vector.<Number>(mw*mh,false);
            var i:int; var num:int; num=mw*mh;
            for (i=0; i<num;i+=1)
            { vecHeight[i] = Math.random()<0.5?1:0; }
            
            vecMark = new Vector.<int>(mw*mh,false);
            for (i=0; i<num;i+=1)
            { vecMark[i] = 0; }
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public var mw:int = 16;
        public var mh:int = 16;
        public var vecHeight:Vector.<Number>;
        public var vecMark:Vector.<int>;
        
        public function getMark(ax:int, ay:int):int        
        { if (ax<0||ax>=mw||ay<0||ay>=mh){return 1;} return vecMark[ax+(ay*mw)]; }
        
        public function setMark(ax:int, ay:int, t:int):void        
        { if (ax<0||ax>=mw||ay<0||ay>=mh){return;}  vecMark[ax+(ay*mw)] = t; }

        public function getHeight(ax:int, ay:int):Number
        { if (ax<0||ax>=mw||ay<0||ay>=mh){return 0;} return vecHeight[ax+(ay*mw)]; }
        
        public function getFlag(ax:int, ay:int):int
        {
          var f:int;
           f = 0;
          if (getHeight(ax+1, ay) > 0) { f|=1; }  
          if (getHeight(ax-1, ay) > 0) { f|=2; }  
          if (getHeight(ax, ay+1) > 0) { f|=4; }  
          if (getHeight(ax, ay-1) > 0) { f|=8; }  
            
          if (f ==15){ return 0; }  
            
          return f;
        }//getflag
        
        public var cx:int = 0;
        public var cy:int = 0;
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(2, 0);
            
            var i:int; var k:int;
            for (i=0;i<mh;i+=1)
            {
             for(k=0;k<mw;k+=1)
             {   
               var h:Number;
               h = getHeight(k,i);
               if (h>0){ graphics.drawCircle(32+k*16,32+i*16,4);}
               if (h >0 && getMark(k,i)>0)
               {
                   graphics.beginFill(0, 1);
                   graphics.drawCircle(32+k*16,32+i*16,4);
                   graphics.endFill();
               }//endif
             
             }//nextk   
            }//nexti
            
            
            graphics.drawCircle(32+cx*16,32+cy*16,8);
            
            if (getMark(cx,cy)==0)
            {  
              setMark(cx,cy, 1);
              
              if (getMark(cx+1, cy)==0 && getFlag(cx+1,cy) > 0)
              { cx+=1;   }
              else if (getMark(cx, cy+1)==0 && getFlag(cx,cy+1) > 0)
              { cy+=1;}
              else if (getMark(cx-1, cy)==0 && getFlag(cx-1,cy) > 0)
              { cx-=1;}
              else if (getMark(cx, cy-1)==0 && getFlag(cx,cy-1) > 0)
              { cy-=1;}
              
              //cx+=1; if (cx>=mw){cx=0;cy+=1; }
              
            }//endif
            
            
            
        }//onenter
        
    }//classend
}

Forked