/**
* 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
}