Здравствуйте.
Столкнулся с трудностями логического характера (технически вроде ничего сложного). Вот, собственно, описание задачи:
Нужно програмно нарисовать узор в виде прямоугольников произвольного размера расположенных вплотную друг к другу. Не могу придумать алгоритм, как бы это все организовать.
Вот выкладываю то, что уже сделал, просто чтобы было понятно, по какому принципу я думал это делать. Но кажется, это как-то не совсем в ту сторону, что нужно...

Код:
var _arr:Array = [];
for(i=0; i<40;i++){
var tmp_arr:Array = [];
for(j=0; j<40; j++){
tmp_arr.push("");
}
_arr.push(tmp_arr);
}
var _map:Map = new Map(_arr);
Это код во флешке (главном файле) Строит массив и заполняет его квадратиками одного цвета.

Код:
class Cell extends MovieClip {
var _cell:MovieClip;
var _filled:Boolean = false;
var XX:Number = 0;
var YY:Number = 0;
var W:Number = 10;
var H:Number = 10;
var n:String = "";
function Cell(coord:Object) {
this._cell = _root.createEmptyMovieClip("_cell"+coord.n, _root.getNextHighestDepth());
with (this._cell) {
beginFill(0x777777, 100);
moveTo(0, 0);
lineTo(coord.W, 0);
lineTo(coord.W, coord.H);
lineTo(0, coord.H);
lineTo(0, 0);
endFill();
_x = coord.XX;
_y = coord.YY;
}
this.XX = coord.XX;
this.YY = coord.YY;
this.n = coord.n;
}
}
Это отдельный квадратик

Код:
import flash.geom.ColorTransform;
import flash.geom.Transform;
class Map extends MovieClip {
var _arr:Array = [];
function Map(_arr:Array) {
for (var i = 0; i<_arr.length; i++) {
var tmp_arr:Array = [];
for (var j = 0; j<_arr[i].length; j++) {
var _cell:Cell = new Cell({XX:j*10, YY:i*10, W:10, H:10, n:""+i+""+j});
tmp_arr.push(_cell);
}
this._arr.push(tmp_arr);
}
tile();
}
function arrayRandomiser():Number {
return Math.floor(Math.random()*3-0.5);
}
function tile():Void {
var tmp_h:Number = Math.round(Math.random()*6+1)*10;
var tmp_w:Number = Math.round(Math.random()*6+1)*10;
var m_x:Number = this._arr.length;
var rnd_i:Number = Math.round(Math.random()*m_x);
var rnd_j:Number = Math.round(Math.random()*m_x);
var rnd_cell:Cell = this._arr[rnd_i][rnd_j];
if (!rnd_cell._filled) {
var _ct:ColorTransform = new ColorTransform();
_ct.rgb = Math.random()*0xffffff;
var trans:Transform = new Transform(rnd_cell._cell);
trans.colorTransform = _ct;
var limit_i = rnd_i+tmp_w/10;
var limit_j = rnd_j+tmp_h/10;
for (rnd_i; rnd_i<=limit_i && rnd_i<this._arr.length; rnd_i++) {
for (var tmp_j = rnd_j; tmp_j<=limit_j && tmp_j<this._arr.length && !this._arr[rnd_i][tmp_j]._filled; tmp_j++) {
var trans:Transform = new Transform(this._arr[rnd_i][tmp_j]._cell);
trans.colorTransform = _ct;
this._arr[rnd_i][tmp_j]._filled = true;
trace(this._arr[rnd_i][tmp_j]._cell);
}
}
}
}
}
Это "карта" состоящая из 40х40 квадратиков, которую я и собираюсь перекрасить так, чтобы узор выглядел как прямоугольники произвольного размера лежащие вплотную друг к другу.
Код писать не обязательно, просто подскажите, если не сложно, идею, как бы это сделать =)
Заранее спасибо.