flash on 2017-1-29

by mutantleg
♥0 | Line 97 | Modified 2017-01-29 08:34:33 | 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/qkbX
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            stage.quality ="LOW";
            
           mw=16;mh=16;
           vecMap=new Vector.<int>(mw*mh,false);
            
            setRect(3,3,8,8,1);
            setRect(5,5,6,5,0);
            setRect(6,6,2,2, 1);
          
            setRect(3,4,6,1,0);
            setRect(8,5, 3,4,1);
          
            var i:int;
            for (i=0;i<32;i+=1)
            { setWall(Math.random()*mw,Math.random()*mh,1); }
          
           cx=3; cy=2;
           wx=0;wy=1;
            
           stage.addEventListener(Event.ENTER_FRAME, onEnter); 
        }//ctor
        
        public var vecMap:Vector.<int>;
        public var mw:int = 0;
        public var mh:int = 0;
        public var cw:Number=16;
        public var ch:Number=16;
        
        public function setWall(ax:int, ay:int, t:int):void
        { if (ax<0||ax>=mw||ay<0||ay>=mh){return;} vecMap[ax+(ay*mw)]=t; }
        
        public function getWall(ax:int, ay:int):int
        { if (ax<0||ax>=mw||ay<0||ay>=mh){return 1;} return vecMap[ax+(ay*mw)];  }

        public function setRect(ax:int, ay:int, aw:int, ah:int, t:int):void
        {
          var i:int; var k:int;
          for(i=0;i<ah;i+=1)
          { for (k=0;k<aw;k+=1)  { setWall(ax+k,ay+i, t); } }  
        }//setrect 
        
        public var cx:int = 0;
        public var cy:int = 0;
        public var wx:int = 1;
        public var wy:int = 0;

        public var gt:int =0;
 
        public function onEnter(e:Event):void
        {
            gt+=1;
            if (gt%8!=0){return;}
            
          graphics.clear();
          graphics.lineStyle(2, 0);
 
          graphics.drawRect(0,0,mw*cw,mh*ch);         

          var t:int; var yt:int;
          var i:int; var k:int;

          for(i=0;i<mh;i+=1)
          { yt=i*mw;
            for(k=0;k<mw;k+=1)
            {
               //graphics.drawRect(k*cw,i*ch,cw,ch);
               
               t = vecMap[k+yt]; 
               if (t==1) { 
                graphics.beginFill(0x808080,1);
                 graphics.drawRect(k*cw,i*ch,cw,ch);
                graphics.endFill();
               }
               if (t>1) { 
                graphics.beginFill(t,1);
                 graphics.drawRect(k*cw,i*ch,cw,ch);
                graphics.endFill();
               }
     
            }//nextk  
          }//nexti  


          var kx:int; var ky:int;
          kx = cx+wy; ky=cy-wx;

          graphics.lineStyle(2,0xff);
          graphics.beginFill(0xFFff,0.5);
          graphics.drawRect(cx*cw,cy*ch,cw,ch);
          graphics.endFill();
     
          if (getWall(cx+wy, cy-wx)==1)
 
          if (getWall(cx+wx,cy+wy)==1) { t=wx;wx=-wy;wy=t; }
          if (getWall(cx+wx,cy+wy)==1) { t=wx;wx=-wy;wy=t; }
          if (getWall(cx+wx,cy+wy)==1) { t=wx;wx=-wy;wy=t; }
          if (getWall(cx+wx,cy+wy)==1) { t=wx;wx=-wy;wy=t; }
          //if (getWall(cx+wy-wx, cy-wx-wy))
          cx+=wx; cy+=wy; 
          if (getWall(cx+wy, cy-wx)!=1)  { t=wx;wx=wy;wy=-t; }        
          
          //if (getWall(cx,cy)>=1)  { cx=Math.random()*mw; cy=Math.random()*mh; return; }


          graphics.lineStyle(2,0xff0000,0.5);
          graphics.drawRect(kx*cw,ky*ch,cw,ch);

          if (getWall(kx,ky)!=1) {  setWall(cx,cy,0x88);  return; }
          
          var f:int;
          f=0;
          if (getWall(kx+1,ky)!=1) { f|=1; }  
          if (getWall(kx-1,ky)!=1) { f|=2; }  
          if (getWall(kx,ky+1)!=1) { f|=4; }  
          if (getWall(kx,ky-1)!=1) { f|=8; }  
          
          if (f==5){ setWall(cx,cy,0xFF); }
          else if (f==9){ setWall(cx,cy,0xffFF); }
          else if (f==6){ setWall(cx,cy,0xff00FF); }
          else if (f==10){ setWall(cx,cy,0xffFF00); }
          else { setWall(cx,cy,0x8033); }

           
        }//onenter
        

    }//classend
}