xxxxxxxxxx
172
var doRefresh;
function setup() {
createCanvas(400, 400);
doRefresh = true;
}
function inRange(x1,y1){
return x1 >= 0 && x1 <=400 && y1 >= 0 && y1 <= 400;
}
function drawCity(x,y){
fill('white');
strokeWeight(1);
circle(x,y,6);
}
function drawHighway(x1,y1, xd, yd){
xBend = int(random(10,25));
yBend = int(random(10,25));
hwNumber = int(random(1,200));
while(inRange(x1,y1)){
strokeWeight(4);
stroke('green');
d1 = Math.pow(-1, xd);
d2 = Math.pow(-1, yd);
x2 = x1 + int(random(0,xBend)) * d1;
y2 = y1 + int(random(0,yBend)) * d2;
line(x1, y1, x2, y2);
x1 = x2;
y1 = y2;
if (int(random(0,7)) == 1){
fill('white');
strokeWeight(2);
circle(x2,y2, 12);
text(hwNumber, x2 - 10, y2);
x1 += 6*d1;
y1 += 6*d2;
}
}
}
function drawRoad(x1,y1, xd, yd){
xBend = int(random(5,10))
yBend = int(random(5,10))
while(inRange(x1,y1)){
d1 = Math.pow(-1, xd);
d2 = Math.pow(-1, yd);
x2 = x1 + int(random(0,xBend)) * d1;
y2 = y1 + int(random(0,yBend)) * d2;
line(x1, y1, x2, y2);
x1 = x2;
y1 = y2;
if (int(random(0,70)) == 1){
di1 = int(random(0,2));
di2 = int(random(0,2));
drawRoad(x2,y2, di1, di2);
}
if (int(random(0,30)) == 1){
fill('white');
strokeWeight(2);
circle(x2,y2, 8);
x1 += 4*d1;
y1 += 4*d2;
}
}
}
function drawRiver(x1,y1, xd, yd){
xBend = int(random(5,20));
yBend = int(random(5,20));
strokeWeight(int(random(1,10)));
while(inRange(x1,y1) && int(random(0,80)) != 1){
stroke('blue');
d1 = Math.pow(-1, xd);
d2 = Math.pow(-1, yd);
x2 = x1 + int(random(0,xBend)) * d1;
y2 = y1 + int(random(0,yBend)) * d2;
line(x1, y1, x2, y2);
x1 = x2;
y1 = y2;
if (int(random(0,60)) == 1){
di1 = int(random(0,2));
di2 = int(random(0,2));
drawRiver(x2,y2, di1, di2);
}
}
}
function drawGrid(){
stroke(130);
strokeWeight(1);
fill(0);
startLat = 5*int(random(-18,18));
numLat = int(random(3,8));
incrLat = numLat * 5;
sizeLat = 400/numLat;
for (i = 0; i < numLat; i++){
line(0, sizeLat*i, 400, sizeLat*i);
text(startLat + incrLat*i, 0, sizeLat*i);
}
startLong = 5*int(random(-36,36));
numLong = int(random(3,8));
incrLong = numLong * 5;
sizeLong = 400/numLong;
for (i = 1; i < numLong; i++){
line(sizeLong*i, 0, sizeLong*i, 400);
text(startLong + incrLong*i, sizeLong*i, 10);
}
}
function draw() {
if (doRefresh){
background("#ffe5b4");
//draw rivers
stroke("blue");
strokeWeight(4);
for(let i = 0; i < int(random(0, 5)); i++){
x = int(random(0,401));
y = int(random(0,401));
drawRiver(x,y,int(random(0,2)),int(random(0,2)));
}
//draw regular roads
stroke("red");
strokeWeight(1);
for(let i = 0; i < int(random(5, 9)); i++){
x = int(random(0,401)); y = 0;
if (int(random(0,2) == 1)){y = x; x = 0;}
drawRoad(x,y,int(random(0,2)),int(random(0,2)));
}
//draw cities
for(let i = 0; i < int(random(0, 60)); i++){
x = int(random(0,401)); y = int(random(0,401));
strokeWeight(1);
stroke(100);
fill(100);
drawCity(x,y);
}
//draw highway
for(let i = 0; i < int(random(0, 6)); i++){
x = int(random(0,401)); y = 0;
if (int(random(0,2) == 1)){y = x; x = 0;}
drawHighway(x,y,int(random(0,2)),int(random(0,2)));
}
//draw longitude and lattitude
drawGrid();
}
doRefresh = false;
}
function mousePressed() {
doRefresh = true;
clear();
}