flash on 2016-4-6
♥0 |
Line 69 |
Modified 2016-04-06 04:29:39 |
MIT License
archived:2017-03-20 16:24:37
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
}