View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

sclitaire

//sclitaire
(
	var w, wx, wy, mx, my,  dragged=false, t, out;

	mx = MouseX(0, 1024);
	my = MouseY(0, 768);
	wx = 128; wy = 264;

	w = GUIWindow.new("sclitaire", Rect.newBy(wx, wy, 335, 226)).onClose_({ Synth.stop });
	x = Array.fill(6, { arg i; var b;
		b = RangeView.new( w, Rect.newBy(wx.rand, wy.rand, 30, 30), "--", 0.5, 0.0, 0, 1, 0, 'linear');
		b.rangeColor = Color.green;
		b.action = {
		if(dragged, {
			x.do({ arg item;

	if(item.bounds.contains(Point(mx.value-wx,my.value-wy)) & (item !== b), {
					b.backColor = Color.green;
					t.triggerSynth(Synth.new({ Cutoff.ar(Pulse.ar(1500 , 0.5, 0.1), 0.02) }) );
				});
			})
		});
		dragged = dragged.not;
		Task({ while({dragged},
			{ b.bounds = b.bounds.moveTo(
					mx.value-wx-(b.bounds.width/2),
					my.value-wy-(b.bounds.height/2)
				).resizeBy(1.rand2, 1.rand2);
				b.backColor = Color.new(rrand(120, 180), rrand(120, 180), rrand(120, 180));
				b.value = b.value + 0.01 % 1;
				0.02.wait;
		}) });
		};
	});

	Synth.play({
		Task({ loop({ w.refresh; 0.02.wait; }) });
		out  = TSpawn.ar(nil, 1);
		t = out.source;
		out;
	});
	w.close;

)
****
/*
authors so far:
jrh 02
*/


Link to this Page