player.onChat("grid", function () {
let size = 10;
let count = 5;
let totalSize = count * (size + 1) + 1;
for (let i = 0; i <= count; i++) {
let offset = i * (size + 1);
blocks.fill(211, pos(offset, -2, 0), pos(offset, -2, totalSize - 1), FillOperation.Replace);
blocks.fill(7, pos(offset, -1, 0), pos(offset, -1, totalSize - 1), FillOperation.Replace);
blocks.fill(211, pos(0, -2, offset), pos(totalSize - 1, -2, offset), FillOperation.Replace);
blocks.fill(7, pos(0, -1, offset), pos(totalSize - 1, -1, offset), FillOperation.Replace);
}
let num = 1;
for (let z = 0; z < count; z++) {
for (let x = 0; x < count; x++) {
let startX = x * (size + 1) + 1;
let startZ = z * (size + 1) + 1;
blocks.fill(210, pos(startX, -2, startZ), pos(startX + 9, -2, startZ + 9), FillOperation.Replace);
blocks.fill(35, pos(startX, -1, startZ), pos(startX + 9, -1, startZ + 9), FillOperation.Replace);
drawRealNumber(startX + 2, startZ + 2, num);
num++;
}
}
player.say("구획은 무적! 안쪽은 자유! 격자 생성이 완료되었습니다.");
});
function drawRealNumber(x: number, z: number, n: number) {
let b = 173;
if (n >= 10) {
let ten = Math.floor(n / 10);
if (ten == 1) { for(let i=0; i<5; i++) blocks.place(b, pos(x, -1, z+i)); }
else if (ten == 2) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z), FillOperation.Replace);
blocks.place(b, pos(x+2, -1, z+1));
blocks.fill(b, pos(x, -1, z+2), pos(x+2, -1, z+2), FillOperation.Replace);
blocks.place(b, pos(x, -1, z+3));
blocks.fill(b, pos(x, -1, z+4), pos(x+2, -1, z+4), FillOperation.Replace);
}
x += 4;
}
let digit = n % 10;
if (digit == 1) { for(let i=0; i<5; i++) blocks.place(b, pos(x+1, -1, z+i)); }
else if (digit == 2) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z), FillOperation.Replace);
blocks.place(b, pos(x+2, -1, z+1));
blocks.fill(b, pos(x, -1, z+2), pos(x+2, -1, z+2), FillOperation.Replace);
blocks.place(b, pos(x, -1, z+3));
blocks.fill(b, pos(x, -1, z+4), pos(x+2, -1, z+4), FillOperation.Replace);
} else if (digit == 3) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z), FillOperation.Replace);
blocks.place(b, pos(x+2, -1, z+1));
blocks.fill(b, pos(x, -1, z+2), pos(x+2, -1, z+2), FillOperation.Replace);
blocks.place(b, pos(x+2, -1, z+3));
blocks.fill(b, pos(x, -1, z+4), pos(x+2, -1, z+4), FillOperation.Replace);
} else if (digit == 4) {
blocks.fill(b, pos(x, -1, z), pos(x, -1, z+2), FillOperation.Replace);
blocks.place(b, pos(x+1, -1, z+2));
blocks.fill(b, pos(x+2, -1, z), pos(x+2, -1, z+4), FillOperation.Replace);
} else if (digit == 5) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z), FillOperation.Replace);
blocks.place(b, pos(x, -1, z+1));
blocks.fill(b, pos(x, -1, z+2), pos(x+2, -1, z+2), FillOperation.Replace);
blocks.place(b, pos(x+2, -1, z+3));
blocks.fill(b, pos(x, -1, z+4), pos(x+2, -1, z+4), FillOperation.Replace);
} else if (digit == 6) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z), FillOperation.Replace);
blocks.place(b, pos(x, -1, z+1));
blocks.fill(b, pos(x, -1, z+2), pos(x+2, -1, z+2), FillOperation.Replace);
blocks.place(b, pos(x, -1, z+3)); blocks.place(b, pos(x+2, -1, z+3));
blocks.fill(b, pos(x, -1, z+4), pos(x+2, -1, z+4), FillOperation.Replace);
} else if (digit == 7) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z), FillOperation.Replace);
for(let i=1; i<5; i++) blocks.place(b, pos(x+2, -1, z+i));
} else if (digit == 8) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z), FillOperation.Replace);
blocks.place(b, pos(x, -1, z+1)); blocks.place(b, pos(x+2, -1, z+1));
blocks.fill(b, pos(x, -1, z+2), pos(x+2, -1, z+2), FillOperation.Replace);
blocks.place(b, pos(x, -1, z+3)); blocks.place(b, pos(x+2, -1, z+3));
blocks.fill(b, pos(x, -1, z+4), pos(x+2, -1, z+4), FillOperation.Replace);
} else if (digit == 9) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z), FillOperation.Replace);
blocks.place(b, pos(x, -1, z+1)); blocks.place(b, pos(x+2, -1, z+1));
blocks.fill(b, pos(x, -1, z+2), pos(x+2, -1, z+2), FillOperation.Replace);
blocks.place(b, pos(x+2, -1, z+3));
blocks.fill(b, pos(x, -1, z+4), pos(x+2, -1, z+4), FillOperation.Replace);
} else if (digit == 0) {
blocks.fill(b, pos(x, -1, z), pos(x+2, -1, z+4), FillOperation.Outline);
}
}