forked from: flash on 2015-12-6
forked from flash on 2015-12-6 (diff: 16)
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/kKoR
*/
// forked from mutantleg's flash on 2015-12-6
package {
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
graphics.clear();
graphics.lineStyle(2, 0);
for (i=0;i<32;i+=1)
{
setWall(Math.random()*mw,Math.random()*mh,1,1, 1);
}//nexti
for (i=0;i<mh;i+=1)
{
yt = i* mw;
for (k=0;k<mw;k+=1)
{
if (vecGrid[yt+k]<=0) {continue;}
graphics.beginFill(0,1);
graphics.drawRect(k*cw,i*ch,cw,ch);
graphics.endFill();
}//nextk
}//nexti
var i:int; var k:int; var yt:int;
var aw:int; var ah:int;
var w:int;
var ax:int; var ay:int;
graphics.lineStyle(4, 0);
graphics.drawRect(0,0,mw*cw,mh*ch);
graphics.lineStyle(2, 0);
//graphics.drawCircle(160,120, 64);
aw =1;ah=1;
for (i=0;i<mh;i+=1)
{
for (k=0;k<mw;k+=1)
{
if (isWall(k,i)) { continue;}
aw = 1; ah = 1;
ax =1;ay=1;
for (w=0;w<12;w+=1)
{
if (hasWall(k,i, aw+1,ah)==false) { aw +=1; } else { ax=0;}
if (hasWall(k,i, aw,ah+1)==false) { ah +=1; } else { ay=0;}
if (ax<=0&&ay<=0) { break; }
//if (ah > aw+2 ) { break; }
}//nextw
/*
for (w=0;w<3;w+=1)
{ if (hasWall(k,i,aw+1,ah)){break;} else { aw+=1; } }
for (w=0;w<3;w+=1)
{ if (hasWall(k,i,aw,ah+1)){break;} else { ah+=1; } }
*/
setWall(k,i, aw,ah, 1);
graphics.drawRect(k*cw,i*ch,aw*cw,ah*ch);
graphics.moveTo(k*cw,i*ch);
graphics.lineTo(k*cw+aw*cw,i*ch+ah*ch);
}//nextk
}//nexti
// graphics.drawCircle(160,120, 32);
}//ctor
public var mw:int = 16;
public var mh:int = 16;
public var cw:Number = 16;
public var ch:Number = 16;
public var vecGrid:Vector.<int> = new Vector.<int>(16*16, false);
public function isWall(ax:int, ay:int):Boolean
{ if (ax<0||ax>=mw||ay<0||ay>=mh) { return true;} return vecGrid[ax+(ay*mw)]>0; }
public function setWall(ax:int, ay:int, aw:int, ah:int, t:int):void
{
var i:int; var k:int; var yt:int;
var ex:int; var ey:int;
ex = ax+aw;
ey= ay+ah;
if (ax<0) {ax=0;} if (ay<0) {ay=0;}
if (ex>=mw){ex=mw;} if (ey>=mh){ey=mh;}
for (i=ay;i<ey;i+=1)
{
yt = i*mw;
for (k=ax;k<ex;k+=1)
{
vecGrid[k+yt] = t;
}//nextk
}//nexti
}//setwall
public function hasWall(ax:int, ay:int, aw:int, ah:int):Boolean
{
var i:int; var k:int; var yt:int;
var ex:int; var ey:int;
ex = ax+aw;
ey= ay+ah;
if (ex>mw) { return true;}
if (ey>mh){return true;}
if (ax<0) {return true;}
if (ay <0) { return true;}
for (i=ay;i<ey;i+=1)
{
yt = i*mw;
for (k=ax;k<ex;k+=1)
{
if (vecGrid[yt+k] > 0) { return true;}
}//nextk
}//nexti
return false;
}//haswall
}//classend
}