Brock J. Stearn
Task 01
Programming for Artists
Harbour At Night


The Stars, Buildings, and Ripples are different each time it loads

The code


/*
Programming for Artists - Assignment #1/#2
Brock J. Stearn
"Harbour at night"
*/

// Make Sky
setBackgroundColor(.01, .05, .1);

// Shore Line Variables
// Shore goes from 0 to 1 in X
// Shore y level
var sy = .8;
//Shore middle level x
var smx = .5;

// Draw Shore Line
setPenColor(.218,.179,.171);
setPenWeight(.008);
drawLine(0, sy, 1, sy);

// ** Start making Buildings and Sky **
// Building height before middle is max .72
var bbm = .68;
// Building height after middle is max .6
var bam = .6;

// Draw Buildings before middle (LEFT)
var CTR;
for ( CTR = 0 ; CTR < smx ; CTR += .002 )
{
setPenWeight(.001);
// bh stands for Building height and must meet above guidelines
var bh = math.random();
if (bh >= bbm) 
	{
		if (bh <= sy) 
		{
		setPenColor(.5,.5,.45);
		setPenWeight(.03);
		drawLine(CTR, sy , CTR , bh);
		}
	} 
		else 
		// Make Stars above shore line in Y
			{
				var s1 = math.random();
				var s2 = math.random();
				if (s2 < sy)
					{
					setPenColor(1,1,.95);
					setPenWeight(.008);
					drawLine (s1, s2, s1+.00001, s2+.00001);
					}
			}
}

// Draw Buildings after middle (RIGHT)
var CTR;
for ( CTR = .51 ; CTR < 1 ; CTR += .002 )
{
setPenWeight(.001);
var bh = math.random();
if (bh >= bam) 
	{
		if (bh <= sy) 
		{
		setPenColor(.5,.5,.45);
		setPenWeight(.045);
		drawLine(CTR, sy , CTR , bh);
		}
	} 
		else 
			// Make Stars above shore line in Y
			{
				var s1 = math.random();
				var s2 = math.random();
				if (s2 < sy)
					{
					setPenColor(1,1,.95);
					setPenWeight(.008);
					drawLine (s1, s2, s1+.00001, s2+.00001);
					}
			}
}

// Make more stars
var CTR;
for ( CTR = 0 ; CTR < 1 ; CTR += .0004 )
{
	var s1 = math.random();
	var s2 = math.random();
	if (s2 < sy)
		{
		setPenColor(1,1,.95);
		setPenWeight(.008);
		drawLine (s1, s2, s1+.00001, s2+.00001);
		}
}

// Draw Water Mass
var CTR;
for ( CTR = sy+.008 ; CTR < 1 ; CTR += .01 )
{
	setPenColor(.2, .262, .356);
	setPenWeight(.018);
	drawLine(0, CTR, 1, CTR);	
}

// Make water ripples
var CTR;
for ( CTR = 0 ; CTR < 1 ; CTR += .0002 )
{
	var s1 = math.random();
	var s2 = math.random();
	if (s2 > sy+.009)
		{
		setPenColor(.7,.7,.75);
		setPenWeight(.007);
		drawLine (s1, s2, s1+.009, s2+.0001);
		}
}

// Make water ripples close to camera
var CTR;
for ( CTR = 0 ; CTR < 1 ; CTR += .0004 )
{
	var s1 = math.random();
	var s2 = math.random();
	if (s2 > sy+.09)
		{
		setPenColor(.8,.8,.85);
		setPenWeight(.009);
		drawLine (s1, s2, s1+.02, s2+.001);
		}
}

// from Pete's original script...
// stop playback head to prevent continuous redrawing
stop ();