用户:
limit_breakr查看:40 回复:9 评论:40 创建时间:2023-01-04T17:20:56
我想在 y=100 高度上挖几(至少50个)个大小为 size 的正方形(深度y=1)坑
于是有了
console.clear();
var y = 100;
!async function(){
for (
var a = 50 + Math.round(Math.random() * 50),
b = 0,
x = Math.round(Math.random() * 128),
z = Math.round(Math.random() * 128),
size = Math.round(Math.random() * 10);
b < a + 1;
b++
) {
for (var x1 = -Math.round(size / 2); x1 <= size/2; x1++) {
for (var z1 = -Math.round(size / 2); z1 <= size/2; z1++) {
voxels.setVoxel(
x + x1,
y,
z + z1,
"air",
0
);
}
}
console.log(b);
}
}()
执行了 50 + Math.round(Math.random() * 50) 次后发现:
居然只有一个?!
求解
(满嘴代码())
limit_breakrc喵ole.clear();
var y = 100;
for (
var a = 50 + Math.round(Math.random() * 50),
b = 0,
x = Math.round(Math.random() * 128),
z = Math.round(Math.random() * 128),
size = Math.round(Math.random() * 10);
b <= a;
b + 1
) {
!async function () {
for (var x1 = -Math.round(size / 2); x1 <= size / 2; x1++) {
for (var z1 = -Math.round(size / 2); z1 <= size / 2; z1++) {
voxels.setVoxel(
x + x1,
y,
z + z1,
"air",
0
);
}
}
}();//啊啊啊我恨这括号(恼极了)
};
c喵ole.log("over");点赞0
评论
limit_breakr
*故事*
后来这个大大屑特
改了代码
var dig = [], y = 100;
!async function () {
for (var deep = 0; deep < 51;) {
var max = random(deep ^ 1.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(800, 100),
random(80, 10),
random(180, -180),
random(180, -180),
random(180, -180)
]);
};
};
}();
console.log("over", dig.length, dig);
啊屑想在某几层生成几个 <dig>起点
于是有了如上
想从这些点(x=dig[point][1],y=dig[point][2],z=dig[point][3])
出发(以dx=dig[point][6],dy=...,dz=...)方向)掘进 dig[point][4]个坐标点,
粗细为dig[point][5]
但是不会3d()去找速建
找到了还没做
觉得Math.random()+Math.round()太麻烦
然后去翻“范围随机数 js”
得到
function random(max, min) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
因为min输入了0,输出了null
这个屑很不爽
于是试图改造
得出
function random(max, min) {
if (!max && !min || typeof max != "number") { return (NaN) }
else {
if (min == null || typeof min != "number") {
min = 0
} else {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
然后生成程序直接无结果啦
屑十分恼点赞0
评论