用户:
七式草莓查看:1 回复:8 评论:1 创建时间:2023-04-24T20:11:44
这些函数名不是我起的,是邀请我的人起的)
async function printImage(pos, image, direction = [new Box3Vector3(1, 0, 0), new Box3Vector3(0, -1, 0)]) {
let p1 = pos.clone();
for (const i of image) {
let p2 = p1.clone();
for (const e of i) {
var v = (() => {
switch(e){
// 字符对应方块的列表,可自行添加
case '0': return 'zero'
case '1': return 'one'
case '2': return 'two'
case '3': return 'three'
case '4': return 'four'
case '5': return 'five'
case '6': return 'six'
case '7': return 'seven'
case '8': return 'eight'
case '9': return 'nine'
case '+': return 'add'
case '-': return 'subtract'
default: return e
}
})()
voxels.setVoxel(p2.x, p2.y, p2.z, v);
p2.addEq(direction[0]);
}
p1.addEq(direction[1]);
}
}
function leftDoc(text, startPos, endPos) {
// 次数
var time = 0
async function doc() {
// 计算方向
var d = endPos.sub(startPos)
// 次数
var mag = d.mag()
// 方向
var dir = new Box3Vector3(d.x / mag, d.y / mag, d.z / mag)
for (let i = 0; i <= mag + text.length + 1; i++) {
await sleep(512)
if (i > text.length) {
var p = startPos.add(dir.scale(i - text.length - 1))
voxels.setVoxel(p.x, p.y, p.z, 0)
}
if (i == mag + 1){
if(time > 0){
time--
doc()
}
}
var pos = startPos.add(dir.scale(Math.max(0, i - text.length)))
var str = text.substring(Math.max(i - mag - 1, 0), i + 1)
printImage(pos.add(dir.scale(str.length - 1)), [str])
}
}
return {
start(number){
if(time <= 0){
time = number
time--
doc()
}else{
time = number
}
}
}
}
// 第二个参数为开始坐标,第三个为结束坐标(反过来的结果我不知道,但是你们可以自己试试,理论也能用)
var startDoc = leftDoc('TEST', new Box3Vector3(54,11,1),new Box3Vector3(1,11,1))
// 参数为次数(2次或更高时有惊喜)
startDoc(1)
谁能改进一下(例如不用递归)??
AK亨利佐加DanJamesThomas#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int tubes[10][8] = {
{6,0,1,2,4,5,6},{2,2,5},{5,0,2,3,4,6},{5,0,2,3,5,6},//0 1 2 3
{4,1,2,3,5},{5,0,1,3,5,6},{6,0,1,3,4,5,6},{3,0,2,5},//4 5 6 7
{7,0,1,2,3,4,5,6},{6,0,1,2,3,5,6}//8 9
};
int dot[7][3][2] = {
{{0, 0}, {0, 1}, {0, 2}},
{{0, 0}, {1, 0}, {2, 0}},
{{0, 2}, {1, 2}, {2, 2}},
{{2, 0}, {2, 1}, {2, 2}},
{{2, 0}, {3, 0}, {4, 0}},
{{2, 2}, {3, 2}, {4, 2}},
{{4, 0}, {4, 1}, {4, 2}},
};
char num[110], out[5][500];
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>num[i];
for(int i=0;i<5;i++)
for(int j=0;j<4*n-1;j++)
out[i][j]='.';
for(int i=0;i<n;i++){
int basex=0,basey=i*4,digit=num[i]-'0';
for(int j=1;j<=tubes[digit][0];j++)
{
int tubenum=tubes[digit][j];
out[basex+dot[tubenum][0][0]][basey+dot[tubenum][0][1]]='X';
out[basex+dot[tubenum][1][0]][basey+dot[tubenum][1][1]]='X';
out[basex+dot[tubenum][2][0]][basey+dot[tubenum][2][1]]='X';
}
}
for(int i=0;i<5;i++,cout<<endl)
for(int j=0;j<4*n-1;j++)
cout<<out[i][j];
return 0;
}点赞0
评论