跳转到内容

LNNBot/指令/numberblocks

此后如竟没有炬火,我便是唯一的光。
numberblocks
别名 nbsu6d
属性 请求输入参数、严格选项解析
所属插件 miniplug:common/numberblocks
父级指令 util.image

numberblocks 指令用于生成 Numberblocks 简图,修改自荆哲的 Numberblocks 简图生成器。

用法

numberblocks <input:rawtext...>

参数

input 是一段描述数字方块排列方式的代码,它本质上定义了一些坐标序列,每个坐标序列会作为一组积木,将对应位置的方格按 Numberblocks 的涂色规则,从大计数单位到小计数单位进行涂色。例如,对于一个含有 176 个格子的序列,前 100 个格子会涂成表示 100 的带棋盘格图案的红色,随后 70 个格子按每 10 个为一组涂成表示 70 的带描边的彩虹色,最后 6 个涂成表示 6 的紫色。

坐标系的纵轴正方向向下,横轴正方向向右,坐标值必须是 1000 以内的正整数。每个积木组最多包含 99999 个方格。一个积木组中若出现重复的方格,只取其第一次出现的位置。

每个积木组表示为一系列以换行或分号分隔的语句,每个语句选定了一个或多个方格的坐标;每个语句由可选的关键字与纵坐标、横坐标组成,其间可以用逗号或空格分隔,关键字后一般使用空格,横、纵坐标之间一般使用逗号。

关键字 纵坐标,横坐标

不带关键字的语句可表示单个方格,也可以在横、纵坐标处填入以冒号隔开的两个数作为区间(区间起点:区间终点)来表示一个长方形区域。当横、纵坐标都是区间时,将会逐行填充。区间可以是正序或倒序的,当区间终点小于区间起点时,将按坐标从大到小的方向进行填充。

关键字 v(注意关键字与坐标之间需有空格)可以让长方形区域逐列而非逐行填充。

示例
语句 作用
2,3 选定第 2 行第 3 列的方格。
1,1:7 从左到右依次选定第 1 行第 1 到 7 列的方格。
7:1,1:10 从第 7 行第 1 列开始,从左到右、从下到上依次选定每行 10 个的 7 行方格。
v 1:5,2:6 从第 1 行第 2 列开始,从上到下、从左到右依次选定每列 5 个的 5 列方格。

trtrrtdtddtultluturtrutdltldtdrtrd 为“特殊十”关键词,会从指定的点开始以特定顺序选定 10 个方格。“特殊十”的坐标只能是单个点,区间无效。

“特殊十”关键词含义
关键词 说明
tr 从起点开始向右选定 10 格
trr 从起点开始向右选定 5 格,再从起点下方一格开始向右选定 5 格
td 从起点开始向下选定 10 格
tdd 从起点开始向下选定 5 格,再从起点右侧一格开始向下选定 5 格
tul 以起点为直角顶点选定阶梯形的 10 格,先上后左
tlu 以起点为直角顶点选定阶梯形的 10 格,先左后上
tur 以起点为直角顶点选定阶梯形的 10 格,先上后右
tru 以起点为直角顶点选定阶梯形的 10 格,先右后上
tdl 以起点为直角顶点选定阶梯形的 10 格,先下后左
tld 以起点为直角顶点选定阶梯形的 10 格,先左后下
tdr 以起点为直角顶点选定阶梯形的 10 格,先下后右
trd 以起点为直角顶点选定阶梯形的 10 格,先右后下

不同的积木组之间用 ---=== 分隔,它们会各自分别涂色,互不影响。

选项

语法 说明
-b, --background <color> 以 CSS 颜色值指定输出图片的背景颜色。HEX 色号需加井号。
-v, --viewport <"[top left] height width"> 指定输出图片中要显示的区域,用空格或逗号分隔数字,若适用空格则需要加引号。始行、始列均为 1 时可省略,只写行数、列数。在该区域外的积木会被忽略,涂色时不计入积木的块数。未指定该选项时,会自动裁剪到有积木块的矩形区域。
-g, --gap <0~0.02> 指定方格之间格线的宽度,默认 0.005。
-B, --border <0~0.2> 指定 10 以上数字涂色的边框粗细,默认 0.1。
-r, --ruler 在图片四边绘制标尺,用坐标值的最小非零数位的 Numberblocks 颜色表示对应的横/纵坐标。
-m, --move <"rows cols"> 平移所有的积木,给出平移后的代码。