Maze generation: Difference between revisions

Content added Content deleted
(Kotlin: some improvements)
(Add SuperCollider example)
Line 5,594:
+--+--+--+--+--+
</pre>
 
=={{header|SuperCollider}}==
<lang SuperCollider>
// some useful functions
(
~grid = { 0 ! 60 } ! 60;
 
~at = { |coord|
var col = ~grid.at(coord[0]);
if(col.notNil) { col.at(coord[1]) }
};
~put = { |coord, value|
var col = ~grid.at(coord[0]);
if(col.notNil) { col.put(coord[1], value) }
};
 
~coord = ~grid.shape.rand;
~next = { |p|
var possible = [p] + [[0, 1], [1, 0], [-1, 0], [0, -1]];
possible = possible.select { |x|
var c = ~at.(x);
c.notNil and: { c == 0 }
};
possible.choose
};
~walkN = { |p, scale|
var next = ~next.(p);
if(next.notNil) {
~put.(next, 1);
Pen.lineTo(~topoint.(next, scale));
~walkN.(next, scale);
~walkN.(next, scale);
Pen.moveTo(~topoint.(p, scale));
};
};
 
~topoint = { |c, scale| (c + [1, 1] * scale).asPoint };
 
)
 
// do the drawing
(
var b, w;
 
b = Rect(100, 100, 700, 700);
w = Window("so-a-mazing", b);
w.view.background_(Color.black);
 
w.drawFunc = {
var p = ~grid.shape.rand;
var scale = b.width / ~grid.size * 0.98;
Pen.moveTo(~topoint.(p, scale));
~walkN.(p, scale);
Pen.width = scale / 4;
Pen.color = Color.white;
Pen.stroke;
};
w.front.refresh;
)
</lang>
 
=={{header|Swift}}==