猫史档案馆


【box】导入问题N(恼)

用户:limit_breakrlimit_breakr查看:6 回复:2 评论:6 创建时间:2023-01-08T15:48:25


//random.js

console.log("random: import sucessed");
function random(max, min) {
    if (typeof min != "number") {
        min = 0
    };
    min = Math.ceil(min);
    max = Math.floor(max);

    return Math.floor(Math.random() * (max - min + 1)) + min;
}

//dig.js
require("./random.js");

var dig = [], y = 100;
let rundig = 0;

for (var deep = 0; deep < 71;) {
    var max = random(20, 2);
    deep += 1 + random(5);
    for (var count = 0; count <= max; count++) {
        var x = random(128), z = random(128);
        dig.push([
            x,
            y - deep,
            z,
            random(100),
            random(4, 10),
            random(180, -180),
            random(180, -180),
        ]);
    };
};

c.log("over", dig.length);
if (rundig) {
    for (var count = 0; count < dig.length; count++) {
        sleep(1000);
        c.log(count);
        for (
            var diglen = dig[count][3];
            dig <= diglen;
            diglen++) {
            var
                cx = dig[count][0],
                cy = dig[count][1],
                cz = dig[count][2],
                size = dig[count][4],
                up = dig[count][5],
                angle = dig[count][6],
                radius = random(5, 3);
            let xend = cx + size,
                yend = cy + size,
                zend = cz + size;
            for (let x = cx - size; x <= xend; x++) {
                for (let y = cy - size; y <= yend; y++) {
                    for (let z = cz - size; z <= zend; z++) {
                        let dx = x - cx;
                        let dy = y - cy;
                        let dz = z - cz;
                        if (Math.round(Math.sqrt(dx * dx + dy * dy + dz * dz)) <= size) {
                            voxels.setVoxel(x, y, z, "air")
                        }
                    }
                }
            }
            size - random(10);
            cx += Math.cos(angle) * Math.cos(up) * radius;
            cy += Math.sin(up) * radius;
            cz += Math.sin(angle) * Math.cos(up) * radius;
        }
    }
}

center_image


回复

上一页1 页 / 共 1下一页
SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

// 第一种改法(不推荐)
// 优点:简单
// 缺点:会造成全局污染

//random.js

console.log("random: import sucessed");
function random(max, min) {
    if (typeof min != "number") {
        min = 0
    };
    min = Math.ceil(min);
    max = Math.floor(max);

    return Math.floor(Math.random() * (max - min + 1)) + min;
}

globalThis.random = random;  // random原理只是这个文件里的,这行代码将random放入全局,改成 global.random = random 也可以

//dig.js
require("./random.js");

var dig = [], y = 100;
let rundig = 0;

for (var deep = 0; deep < 71;) {
    var max = random(20, 2);
    deep += 1 + random(5);
    for (var count = 0; count <= max; count++) {
        var x = random(128), z = random(128);
        dig.push([
            x,
            y - deep,
            z,
            random(100),
            random(4, 10),
            random(180, -180),
            random(180, -180),
        ]);
    };
};

c.log("over", dig.length);
if (rundig) {
    for (var count = 0; count < dig.length; count++) {
        sleep(1000);
        c.log(count);
        for (
            var diglen = dig[count][3];
            dig <= diglen;
            diglen++) {
            var
                cx = dig[count][0],
                cy = dig[count][1],
                cz = dig[count][2],
                size = dig[count][4],
                up = dig[count][5],
                angle = dig[count][6],
                radius = random(5, 3);
            let xend = cx + size,
                yend = cy + size,
                zend = cz + size;
            for (let x = cx - size; x <= xend; x++) {
                for (let y = cy - size; y <= yend; y++) {
                    for (let z = cz - size; z <= zend; z++) {
                        let dx = x - cx;
                        let dy = y - cy;
                        let dz = z - cz;
                        if (Math.round(Math.sqrt(dx * dx + dy * dy + dz * dz)) <= size) {
                            voxels.setVoxel(x, y, z, "air")
                        }
                    }
                }
            }
            size - random(10);
            cx += Math.cos(angle) * Math.cos(up) * radius;
            cy += Math.sin(up) * radius;
            cz += Math.sin(angle) * Math.cos(up) * radius;
        }
    }
}

 

// 第二种改法(推荐)
// 优点:模块化
// 缺点:复杂
//random.js

console.log("random: import sucessed");
function random(max, min) {
    if (typeof min != "number") {
        min = 0
    };
    min = Math.ceil(min);
    max = Math.floor(max);

    return Math.floor(Math.random() * (max - min + 1)) + min;
}

module.export = {  // require()会返回这个模块的module.export
    random  // 这里使用了对象的特殊语法,也可以写成 random: random
}

//dig.js
const { random } = require("./random.js");  // 解构赋值

var dig = [], y = 100;
let rundig = 0;

for (var deep = 0; deep < 71;) {
    var max = random(20, 2);
    deep += 1 + random(5);
    for (var count = 0; count <= max; count++) {
        var x = random(128), z = random(128);
        dig.push([
            x,
            y - deep,
            z,
            random(100),
            random(4, 10),
            random(180, -180),
            random(180, -180),
        ]);
    };
};

c.log("over", dig.length);
if (rundig) {
    for (var count = 0; count < dig.length; count++) {
        sleep(1000);
        c.log(count);
        for (
            var diglen = dig[count][3];
            dig <= diglen;
            diglen++) {
            var
                cx = dig[count][0],
                cy = dig[count][1],
                cz = dig[count][2],
                size = dig[count][4],
                up = dig[count][5],
                angle = dig[count][6],
                radius = random(5, 3);
            let xend = cx + size,
                yend = cy + size,
                zend = cz + size;
            for (let x = cx - size; x <= xend; x++) {
                for (let y = cy - size; y <= yend; y++) {
                    for (let z = cz - size; z <= zend; z++) {
                        let dx = x - cx;
                        let dy = y - cy;
                        let dz = z - cz;
                        if (Math.round(Math.sqrt(dx * dx + dy * dy + dz * dz)) <= size) {
                            voxels.setVoxel(x, y, z, "air")
                        }
                    }
                }
            }
            size - random(10);
            cx += Math.cos(angle) * Math.cos(up) * radius;
            cy += Math.sin(up) * radius;
            cz += Math.sin(angle) * Math.cos(up) * radius;
        }
    }
}

点赞0


评论


limit_breakrlimit_breakr

长知识了()
var
   cx = dig[count][0],
   cy = dig[count][1],
   cz = dig[count][2],
   size = dig[count][4],
   up = dig[count][5],
   angle = dig[count][6],
   radius = random(5, 3)
;
可以缩写成
var [cx,cy,cz,,size,,up,angle] = dig[count],
radius = random(5,3);

点赞0


评论