forked from: forked from: forked from: forked from: Tiling
BitmapをやめてShapeにしてみた。
構造理解のため、そぎ落とせるところはそぎ落としている。
※ 止まりません。
/**
* Copyright ohisama ( http://wonderfl.net/user/ohisama )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/8jzY
*/
// forked from wannigoh's forked from: forked from: forked from: Tiling
// forked from whirlpower's forked from: Tiling
// forked from quqjp's Tiling
package
{
import flash.display.*;
import flash.events.Event;
public class FlashTest extends Sprite
{
private var mapLogic : MapLogic;
public function FlashTest() : void
{
mapLogic = new MapLogic(40, 40, 10, 10);
addEventListener(Event.ENTER_FRAME, render);
}
private function render(e : Event) : void
{
addChild(mapLogic.create());
}
}
}
import flash.display.*;
class MapLogic
{
private var _map : Array = [];
private var gridW : int;
private var gridH : int;
private var tileMax : int;
private var tileScale : int = 10;
public var emptyPos : int = 0;
public function MapLogic(gridW : int, gridH : int, tileMax : int, tileScale : int) : void
{
this.gridW = gridH;
this.gridH = gridW;
this.tileMax = tileMax;
this.tileScale = tileScale;
}
public function create() : Tile
{
var position : int = -1;
var emptyWidth : int = 0;
for (var i : int = emptyPos; i < emptyPos + 45 ; i++)
{
if (!_map[i] && position == -1)
{
position = i;
emptyWidth++;
}
else if (emptyWidth >= tileMax)
{
break;
}
else if (!_map[i] && !(i % gridW == 0 && i != emptyPos))
{
emptyWidth++;
}
else if (position != -1)
{
break;
}
}
var ww : int = int(Math.random() * emptyWidth) + 1;
var p : int = position;
for (var yy : int = 0; yy < ww; yy++)
{
for (var xx : int = 0; xx < ww; xx++)
{
_map[p] = 1;
p++;
}
p += gridW - ww;
}
emptyPos = position + ww;
var px : int = position % gridW * tileScale;
var py : int = position == 0 ? 0 : int(position / gridW) * tileScale;
return new Tile(px, py, ww * tileScale, ww * tileScale);
}
}
class Tile extends Shape
{
public function Tile(_x : int, _y : int, _w : int, _h : int ) : void
{
this.x = _x;
this.y = _y;
graphics.lineStyle(1, 0xff0000);
//graphics.drawRect(0, 0, _w, _h);
graphics.drawCircle(_w / 2, _h / 2, _w / 2);
}
}