In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

Maze generator(singular route)

棒倒し法、カベ重複無し版(単一ルート)
/**
 * Copyright miyaoka ( http://wonderfl.net/user/miyaoka )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/zPbm
 */

//棒倒し法、カベ重複無し版(単一ルート)
package  
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	[SWF(width="465", height="465", backgroundColor= 0x000000, frameRate="60")]
	public class Maze
	extends Sprite
	{		
		public function Maze() :void
		{
			stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			mouseDownHandler(null);
		}
		private function mouseDownHandler(e:MouseEvent):void 
		{
			while (numChildren) removeChildAt(0);
			var num:uint = Math.floor(Math.random() * 60 + 2);
			var maze:MazeContainer = new MazeContainer(num, num);
			maze.scaleX = maze.scaleY  = stage.stageWidth / (num * 2 +1);
			maze.width = maze.height -= 30;
			maze.x = (stage.stageWidth - maze.width) / 2
			maze.y = (stage.stageHeight - maze.height) / 2
			addChild(maze);
		}
	}	
}
import flash.display.Sprite
import flash.geom.Matrix;
import flash.display.BitmapData;
import flash.display.Bitmap;
class MazeContainer
extends Bitmap
{
	public function MazeContainer(col:uint = 1, row:uint = 1) :void
	{
		bitmapData = new BitmapData(col * 2 + 1, row * 2 + 1, false, 0xFFFFFFFF);
		bitmapData.lock();
		var c:uint;
		var r:uint;
		var block:Block;
		var lastBlockIsBotton:Boolean = false;
        //col:0
		for (r = 0; r < row; r++)
		{
			block = new Block(!lastBlockIsBotton, true);
			bitmapData.draw(block, new Matrix(1, 0, 0, 1, 1, r * 2 + 1));
			lastBlockIsBotton = block.isBottom;
		}
		for (c = 1; c < col; c++)
		{
			for (r = 0; r < row; r++)
			{
				if (r == 0) lastBlockIsBotton = false;
				block = new Block(!lastBlockIsBotton, false);
				bitmapData.draw(block, new Matrix(1, 0, 0, 1, c * 2+1, r * 2+1));
				lastBlockIsBotton = block.isBottom;
			}
		}
		bitmapData.unlock();
	}
}

class Block
extends Sprite
{
	public var isBottom:Boolean;
	public static const XY:Array = [
		[0, -1], //top
		[1, 0], //right
		[0, 1], //bottom
		[-1, 0] //left
	];
	public function Block(hasTop:Boolean = true, hasLeft:Boolean = false) :void
	{
		graphics.beginFill(0x000000);
		graphics.drawRect(0, 0, 1, 1);
		var rot:uint = Math.floor(Math.random() * (2 + (hasLeft ? 1 : 0) + (hasTop? 1 : 0))) + (hasTop? 0 : 1);
		if (rot == 2) isBottom = true;
//		graphics.beginFill(0x999999);
		graphics.drawRect(XY[rot][0], XY[rot][1], 1, 1);
	}
}