xxxxxxxxxx
70
let size = 0;
let maxX = 0, minX = 0, maxY = 0, minY = 0;
let lines = [];
let labels = [];
let MARGIN = 15;
let TSIZE = 3;
function setup() {
createCanvas(200, 100);
}
function draw() {
background(255);
connect(15, -6, 15, 1);
connect(15, 1, 15, 5);
connect(15, 5, 17, 5);
connect(15, 5, 15, 14);
connect(15, 14, 13, 14);
connect(15, 1, -38, 1);
connect(0, 1, 0, -1);
label("azazo", 15, -6, -6, 0);
label("stronghold", 17, 5, -10, 0);
label("mirai", 13, 14, -5, 0);
label("cb", -38, 1, -3, 0);
label("village", -5, 1, 0, 3);
label("spawn", 0, -1, 0, -3);
display();
get().save("map", "png");
noLoop();
}
function connect(x1, y1, x2, y2) {
lines.push([x1, y1, x2, y2]);
minX = min(minX, min(x1, x2));
maxX = max(maxX, max(x1, x2));
minY = min(minY, min(y1, y2));
maxY = max(maxY, max(y1, y2));
}
function label(name, x, y, xoff, yoff) {
labels.push([name, x, y, xoff, yoff]);
}
function display() {
push();
size = min(width/(maxX-minX+MARGIN), height/(maxY-minY+MARGIN));
let cx = (maxX + minX) / 2;
let cy = (maxY + minY) / 2;
translate(width/2-cx*size, height/2-cy*size);
strokeWeight(size);
stroke(0, 71, 171);
for (let l of lines) {
line(l[0]*size, l[1]*size, l[2]*size, l[3]*size);
}
fill(255);
stroke(0);
strokeWeight(size/2);
for (let l of labels) {
circle(l[1]*size, l[2]*size, size*1.5);
}
noStroke();
fill(0);
strokeWeight(1);
textSize(size*TSIZE);
textAlign(CENTER, CENTER);
for (let l of labels) {
text(l[0], (l[1]+l[3])*size, (l[2]+l[4])*size);
}
pop();
}