语法与标准库参考
容程序 v1.0.0 全量语法:语言规则、界面组件、交互语义与 396 条标准库命令,与 IDE 内置库面板一一对应。
快速上手
打开容程序,三栏布局:左侧实时预览,中间代码编辑器,右侧属性面板。每个工程由若干 .rcx 文件组成,一个文件可写多个窗口段。新建文件写入下面的内容,点「运行」即可:
# 你好.rcx —— 第一个窗口程序 载入 系统库 窗口【名称"你好",大小"400:300",边框"白",标题"你好"】 函数 窗口函数【】: 按钮 开始【位置"140:110",大小"120:44",颜色"红",字体颜色"白",字体大小"16",标题"开始"】 函数 主函数【】: 当 开始 = 点按: 系统库.消息框("你好", "你好,中文世界!")
三件事记住即可入门:组件声明写在窗口函数里;逻辑写在主函数里(主函数每一轮都会重新执行);交互写在「当 组件 = 状态:」条件块里。
书写规则
- 语句 — 一行一条;冒号
:结尾开启一个缩进块(Tab 或 4 空格,同块对齐)。 - 注释 —
#开头到行尾,不参与执行。 - 全角半角等价 —
【】=[]、()=()、:=:、,=,,混用均可。 - 文本 — 用引号包裹:
"你好";支持插值:"得分:{分数}"会把表达式的值填进大括号。 - 名字 — 变量、函数、组件名直接用中文、字母或数字,无需任何前缀。
值与类型
- 数字 — 整数与小数:
3、3.14、负数写0 - 3或-3。 - 文本 —
"你好";拼接用+,与数字相加前先用 文本库.转数字 转换。 - 真假 — 常量
真与假;比较与库函数返回的「真/假」可直接互通判断。 - 列表 — 字面量
【1, 2, 3】;下标从 1 起:色表[行号]。 - 字典 —
字典【"键": 值, "键2": 值2】,按键取值。 - 类型标注(可选)—
分数: 数字 = 0,便于阅读,不改变运行方式。
运算符
| 类别 | 符号 | 说明 |
|---|---|---|
| 算术 | + - * / | 加减乘除;文本与文本相加为拼接 |
| 比较 | = == != > < >= <= | = 与 == 在比较中等价,!= 为不等于 |
| 逻辑 | 且 或 非 | 如 球x >= 506 且 球vx > 0 |
控制流
- 如果 / 否则 —
如果 条件:换行缩进块,可接否则:。 - 当 —
当 条件::每轮开始时判断的常驻条件,最常用于交互语义(见下)。 - 循环 — 定次数
循环 10 次:;条件循环循环 当 条件:。 - 跳出 — 立即结束当前循环;下一轮 — 直接进入循环的下一轮。
- 结束 — 结束当前函数或程序。
- 尝试 / 捕获 / 完毕 — 异常捕获,捕获后可写
再抛继续上抛:
尝试: 文件 = 文件库.读文件("存档.txt") 捕获 e: 文件 = "" 完毕: # 无论是否出错都执行
函数
- 定义 —
函数 名【参数1,参数2】:+ 缩进块;调用写名(实参),如砖总数 = 建关(1)。 - 返回 —
返回 表达式;无返回值可只写返回。 - 导出 — 模块文件里写
导出 函数 名【参数】:,该函数即可被其他文件导入。 - 作用域 — 函数有独立的局部环境,修改主函数变量请用返回值或组件属性回传。
- 进阶 — 匿名函数
f = 函数【参数】:、异步函数异步函数 名【参数】:、生成器产出 值、后台任务任务名 = 后台 函数名【实参】、并发同时 跑 【任务1, 任务2】、装饰器@装饰名。
窗口与跳转
窗口用 窗口【…】 声明,一个 .rcx 文件可写多个窗口段,跨文件按窗口名跳转:
窗口【名称"弹球",大小"560:600",边框"白",窗口类型"传统窗口",标题"弹球打砖块"】—— 名称用于跳转;圆角"是"圆角窗口,毛玻璃"是"亚克力磨砂(Windows 10/11)。- 窗口函数 —
函数 窗口函数【最小化,最大化,关闭】::组件声明都写在这里,参数照抄即可。 - 主函数 —
函数 主函数【】::每一轮重复执行;只做一次的初始化用「阶段」变量守卫(如果 阶段 == 0:阶段 = 1 …)。 - 跳转 — 语句
跳转 窗口名,或命令窗口库.跳转窗口(窗口名);窗口库.关闭窗口()关闭当前窗口。
窗口库
窗口跳转与控制台程序里主动开窗的命令(区别于上方组件库的界面组件)。 载入 窗口库
| 名称 | 用法 | 说明 |
|---|---|---|
| 跳转窗口 | 窗口库.跳转窗口(窗口名) | 关闭当前窗口并打开另一个窗口(等价于「跳转 窗口名」语句的函数形式)。 |
| 关闭窗口 | 窗口库.关闭窗口() | 关闭当前窗口;最后一个窗口关闭时程序退出。 |
| 运行窗口 | 窗口库.运行窗口(窗口名) | 控制台程序专用:打开并驱动一个窗口(阻塞到窗口被关闭),让「程序」入口也能用界面。 |
| 设置标题 | 窗口库.设置标题(文本) | 修改当前窗口标题栏文字。 |
组件与属性
组件声明在窗口函数内,格式 组件类型 名【属性"值",属性"值"】;主函数中用 名.属性 读写,例如 数字文本.内容 = 数字文本.内容 + 1、确认.颜色 = "浅灰":
当 确认 = 点按: 数字文本.内容 = 数字文本.内容 + 1 当 确认 = 悬停: 确认.颜色 = "浅灰"
组件库
界面基础库。提供全部窗口组件与窗口声明,开发界面必载入(载入 组件库)。窗口跳转/开关等命令在正下方的「窗口库」。 载入 组件库
| 名称 | 用法 | 说明 |
|---|---|---|
| 窗口 | 窗口【名称,大小,边框,窗口类型,标题,圆角,毛玻璃】 | 声明一个窗口。名称用于「跳转」语句跳转;一个 .rcx 文件可写多个窗口段。「圆角"是"」窗口四角变圆,「毛玻璃"是"」窗口背景变亚克力磨砂(需 Windows 10/11,旧系统自动忽略)。 |
| 背景 | 背景【大小,颜色,图片】 | 整个窗口的底层背景,铺满窗口或指定大小,可设颜色或图片。 |
| 按钮 | 按钮 名【位置,大小,颜色,字体颜色,字体大小,标题】 | 可点击按钮。推荐用「当 按钮名 = 点按:」响应单击(发生一次即自动复位,无需手动写松开);「当 按钮名 = 按下:」则是按住期间一直成立,需在块内手动写「按钮名 = 松开」。 |
| 标签 | 标签 名【位置,大小,颜色,字体颜色,字体大小,标题】 | 显示一行文字,改「标题」属性即可更新文字。 |
| 输入框 | 输入框 名【位置,大小,颜色,字体颜色,字体大小,内容】 | 单行文字输入。用「输入框1.内容」读取/写入。 |
| 密码输入框 | 密码输入框 名【位置,大小,颜色,字体颜色,字体大小,内容】 | 输入显示为星号 * 的单行框。 |
| 文本框 | 文本框 名【位置,大小,颜色,字体颜色,字体大小,内容】 | 单行文本显示/编辑框(与输入框类似,兼容《语法参考》写法)。 |
| 多行文本框 | 多行文本框 名【位置,大小,颜色,字体颜色,字体大小,内容】 | 多行文字编辑区域,内容可换行。 |
| 复选框 | 复选框 名【位置,大小,颜色,字体颜色,字体大小,标题,状态】 | 勾选框。状态为「选中/未选中」,主函数中用「当 复选框1 = 选中:」判断。 |
| 单选按钮 | 单选按钮 名【位置,大小,颜色,字体颜色,字体大小,标题,组名,状态】 | 同一「组名」的单选按钮互斥,只能选一个。 |
| 下拉选择框 | 下拉选择框 名【位置,大小,颜色,字体颜色,字体大小,选项,内容】 | 下拉列表。「选项」用英文逗号分隔;「内容」为当前选中值。 |
| 列表框 | 列表框 名【位置,大小,颜色,字体颜色,字体大小,选项】 | 可滚动多行列表,运行中可用命令改「选项」。 |
| 数字微调框 | 数字微调框 名【位置,大小,颜色,字体颜色,字体大小,最小,最大,步长,内容】 | 带上下箭头的数字输入框。 |
| 滑动条 | 滑动条 名【位置,大小,颜色,方向,最小,最大,当前值】 | 拖动滑块取值,方向可「水平/垂直」。用「滑动条1.当前值」读值。 |
| 进度条 | 进度条 名【位置,大小,颜色,最大,当前值】 | 显示进度。改「当前值」属性即可刷新。 |
| 开关按钮 | 开关按钮 名【位置,大小,颜色,字体颜色,字体大小,标题,状态】 | 按下不弹起的开关按钮,状态「选中/未选中」。 |
| 面板 | 面板 名【位置,大小,颜色,标题,滚动,折叠,展开】: | 分组容器。下一级缩进写的组件以面板左上角为原点;支持「滚动=是」「折叠=是」与「标题」分组框。 |
| 图片框 | 图片框 名【位置,大小,颜色,图片,自适应】 | 显示图片(png/jpg/gif),「图片」填文件路径,「自适应=是」拉伸到组件大小。 |
| 富文本框 | 富文本框 名【位置,大小,颜色,字体颜色,字体大小,内容】 | 多行文本框,配合 文本库.追加富文本 可实现多颜色多字号混排。 |
| 定时器 | 定时器 名【间隔】:
(每轮执行的语句) | 每隔「间隔」毫秒自动执行一次缩进的语句块,可后台刷新界面。 |
| 菜单栏 | 菜单栏 名:
菜单 名:
菜单项 名 | 窗口顶部菜单。菜单项被点击时用「当 菜单项名 = 点按:」响应(也可沿用「= 按下:」)。 |
交互语义
写在「当 / 等待 / 如果」条件里,格式 当 组件名 = 状态:,无需载入。事件类发生一次即在本轮末自动复位(点按后无需再写松开);持续类一直成立,需要在块内手动复位(如 确认 = 松开):
组件状态的判断词,直接写在主函数的「当 / 等待 / 如果」条件里,不需要载入。分三类:事件(发生一次,本轮自动复位)、持续(一直成立)、交互(看鼠标/键盘位置)。
| 名称 | 用法 | 说明 |
|---|---|---|
| 点按 | 当 组件名 = 点按: | 鼠标左键在该组件上单击一次,成立一次;主函数本轮结束时自动清除,不需要手动复位。按钮、标签、输入框、图片框、面板、背景等所有组件都支持。 |
| 双击 | 当 组件名 = 双击: | 260 毫秒内连续单击两次,判为双击(不会再触发点按)。 |
| 右击 | 当 组件名 = 右击: | 鼠标右键在该组件上单击一次。 |
| 进入 | 当 组件名 = 进入: | 鼠标指针移入该组件范围。 |
| 离开 | 当 组件名 = 离开: | 鼠标指针移出该组件范围。 |
| 变化 | 当 组件名 = 变化: | 内容或取值被用户改动一次:输入框打字、下拉框选了新项、列表框选中、滑动条拖动、复选框/开关/单选切换、数字微调改变。也可写「改动」。 |
| 按键 | 当 游戏画布名 = 按键: | 游戏画布获得键盘焦点后,玩家按下任意一个键,成立一次(本轮自动清除)。配合 游戏库.按下按键() 可取得键名;配合 游戏库.键被按住() 可判断某键是否正被按住。 |
| 收到数据 | 当 连接名 = 收到数据: | 网络端点(TCP连接/服务/UDP/WS)收到一条新数据。用「连接名.数据」取本次内容、「连接名.来源」取来源地址。网络库专用事件。 |
| 有连接 | 当 服务名 = 有连接: | 网络服务(监听端口)接入了新客户端。用「服务名.新连接」取客户端端点名。网络库专用事件。 |
| 断开 | 当 连接名 = 断开: | 网络连接/WS 连接已断开(或任务出错结束)。网络库专用事件。 |
| 已连接 | 当 连接名 = 已连接: | WS 连接握手成功。网络库专用事件。 |
| 按下 | 当 组件名 = 按下: | 鼠标正按在该组件上(按住期间一直成立)。老写法,通常需在块内手动写「组件名 = 松开」复位。 |
| 松开 | 当 组件名 = 松开: | 组件处于默认未按下状态。 |
| 选中 | 当 组件名 = 选中: | 复选框 / 开关按钮 / 单选按钮被选中。 |
| 未选中 | 当 组件名 = 未选中: | 复选框 / 开关按钮 / 单选按钮未被选中。 |
| 悬停 | 当 组件名 = 悬停: | 鼠标指针正停在该组件上(持续成立,不改变「选中/按下」等状态)。 |
| 焦点 | 当 组件名 = 焦点: | 该组件正持有键盘输入焦点(持续成立)。 |
标准库总览
文件顶部用 载入 库名 引入;调用格式 库名.命令(参数)。共 20 个可载入标准库:
数学库
数值计算命令集。载入后用「数学库.命令(参数)」调用。 载入 数学库
| 名称 | 用法 | 说明 |
|---|---|---|
| 取整 | 数学库.取整(数值) | 向下取整。例:取整(3.9) → 3 |
| 四舍五入 | 数学库.四舍五入(数值) | 四舍五入取整。 |
| 绝对值 | 数学库.绝对值(数值) | 取绝对值。 |
| 平方根 | 数学库.平方根(数值) | 算术平方根。 |
| 随机数 | 数学库.随机数(最小, 最大) | 返回 [最小, 最大] 之间的随机整数。 |
| 正弦 | 数学库.正弦(角度) | 正弦值(角度制)。 |
| 余弦 | 数学库.余弦(角度) | 余弦值(角度制)。 |
| 正切 | 数学库.正切(角度) | 正切值(角度制)。 |
| 圆周率 | 数学库.圆周率() | 返回 π ≈ 3.14159。 |
| 最大 | 数学库.最大(值1, 值2, ...) | 返回多个数中最大的。 |
| 最小 | 数学库.最小(值1, 值2, ...) | 返回多个数中最小的。 |
| 次方 | 数学库.次方(底数, 指数) | 幂运算。 |
| 对数 | 数学库.对数(数值) | 以 10 为底的对数。 |
| 向上取整 | 数学库.向上取整(数值) | 向上取整。例:向上取整(3.1) → 4 |
| 随机小数 | 数学库.随机小数(最小, 最大) | 返回 [最小, 最大] 之间的随机小数。 |
| 符号 | 数学库.符号(数值) | 正数返回 1,负数返回 -1,零返回 0。 |
| 限制 | 数学库.限制(值, 最小, 最大) | 把值夹在 [最小, 最大] 之间(超出就取边界)。 |
| 映射 | 数学库.映射(值, 起最小, 起最大, 止最小, 止最大) | 把值从一段范围线性换算到另一段范围。例:把 0~100 的分数映射到 0~1。 |
| 插值 | 数学库.插值(甲, 乙, 比例t) | 线性插值:t=0 返回甲,t=1 返回乙,中间取过渡值。做平滑跟随很常用。 |
| 平均 | 数学库.平均(值1, 值2, ...) | 返回多个数的算术平均值。 |
| 反正弦 | 数学库.反正弦(数值) | 反正弦,返回角度(-90 ~ 90 度),入参需在 -1 ~ 1 之间。 |
| 反余弦 | 数学库.反余弦(数值) | 反余弦,返回角度(0 ~ 180 度)。 |
| 反正切 | 数学库.反正切(数值) | 反正切,返回角度(-90 ~ 90 度)。 |
| 数列 | 列表 = 数学库.数列(起, 止, 步长) | 生成等差数列列表。例:数列(1, 10, 2) → 【1, 3, 5, 7, 9】。步长可省略(默认 1)。 |
| 自然指数 | y = 数学库.自然指数(x) | e 的 x 次幂(e ≈ 2.71828)。微积分与复变的基础命令。参数约超过 709 会提示溢出。 |
| 自然对数 | y = 数学库.自然对数(x) | 自然对数 ln(x)(以 e 为底)。x ≤ 0 时按极小值处理不报错。 |
| 弧度正弦 | y = 数学库.弧度正弦(弧度) | 弧度制的正弦 sin(x)。做微积分、级数、复变用这个,别用角度制的 正弦。 |
| 弧度余弦 | y = 数学库.弧度余弦(弧度) | 弧度制的余弦 cos(x)。 |
| 弧度正切 | y = 数学库.弧度正切(弧度) | 弧度制的正切 tan(x)。 |
| 双曲正弦 | y = 数学库.双曲正弦(x) | 双曲正弦 sinh(x) = (eˣ − e⁻ˣ) / 2。 |
| 双曲余弦 | y = 数学库.双曲余弦(x) | 双曲余弦 cosh(x) = (eˣ + e⁻ˣ) / 2。悬链线方程就是它。 |
| 双曲正切 | y = 数学库.双曲正切(x) | 双曲正切 tanh(x) = sinh(x) / cosh(x),结果恒在 -1 ~ 1 之间。 |
| 列表长度 | n = 数学库.列表长度(列表) | 返回列表/字典的元素个数。(与 文本库.长度 对列表的效果相同,这里名字更直白。) |
| 复数构造 | z = 数学库.复数构造(实部, 虚部) | 造一个复数 z = 实部 + 虚部·i,存成【实部, 虚部】两项列表。复数系列的参数与返回值都长这样。 |
| 复数加 | z = 数学库.复数加(甲, 乙) | 复数相加 (a+bi) + (c+di) = (a+c) + (b+d)i。 |
| 复数乘 | z = 数学库.复数乘(甲, 乙) | 复数相乘 (a+bi)(c+di) = (ac−bd) + (ad+bc)i。i×i 会正确得到 -1。 |
| 复数模 | r = 数学库.复数模(z) | 复数的模 |z| = √(a² + b²),即到原点的距离。 |
| 复数辐角 | θ = 数学库.复数辐角(z) | 复数的辐角(弧度制,范围 -π ~ π),即从正实轴逆时针转过来的角度。 |
| 复数幂 | z = 数学库.复数幂(z, n) | 复数的 n 次幂(棣莫弗定理 rⁿ·(cos nθ + i·sin nθ))。n 可为小数或负数;零的负数次幂报错。 |
文本库
文本处理命令集。 载入 文本库
| 名称 | 用法 | 说明 |
|---|---|---|
| 拼接 | 文本库.拼接(文1, 文2, ...) | 把多段文字/数字连成一段。 |
| 长度 | 文本库.长度(文本或列表) | 返回文字个数;若传入列表/字典则返回其元素个数(v2 起支持)。 |
| 取部分 | 文本库.取部分(文本, 起, 止) | 截取第 起 到第 止 个字符(从 1 开始,含两端)。 |
| 替换 | 文本库.替换(文本, 旧, 新) | 把「旧」全部替换成「新」。 |
| 查找 | 文本库.查找(文本, 子文) | 返回子文出现位置(从 1 起),找不到返回 0。 |
| 大写 | 文本库.大写(文本) | 英文字母转大写。 |
| 小写 | 文本库.小写(文本) | 英文字母转小写。 |
| 去掉空格 | 文本库.去掉空格(文本) | 去掉首尾空格。 |
| 转数字 | 文本库.转数字(文本) | 文字转数字,便于计算。 |
| 转文本 | 文本库.转文本(值) | 数字转文字。 |
| 分割 | 文本库.分割(文本, 分隔符) | 按分隔符拆成列表。配合 列表[1] 使用。 |
| 连接 | 文本库.连接(列表, 分隔符) | 把列表用分隔符连成一段文字。 |
| 追加富文本 | 文本库.追加富文本(富文本框, 文本, 颜色, 字号) | 向富文本框追加一段带颜色和字号的文字,实现混排。 |
| 倒转 | 文本库.倒转(文本) | 把文字前后倒过来。例:倒转("abc") → "cba"。 |
| 是否数字 | 文本库.是否数字(文本) | 判断文本能否当作数字(返回 真/假)。转数字 前先判断可避免出错。 |
| 重复 | 文本库.重复(文本, 次数) | 把文字重复若干遍。例:重复("ab", 3) → "ababab"。 |
| 填充左 | 文本库.填充左(文本, 总宽, 填充字) | 在左边补「填充字」到指定总宽(做对齐表格)。填充字默认空格。 |
| 填充右 | 文本库.填充右(文本, 总宽, 填充字) | 在右边补「填充字」到指定总宽。 |
| 截取左 | 文本库.截取左(文本, 个数) | 取最左边的 n 个字符。 |
| 截取右 | 文本库.截取右(文本, 个数) | 取最右边的 n 个字符。 |
| 格式化 | 文本库.格式化(模板, 值1, 值2, ...) | 把模板里的每个 {} 依次换成后面的值。例:格式化("得分:{} 生命:{}", 得分, 生命)。 |
| 取字符 | 文本库.取字符(文本, 序号) | 取第几个字符(从 1 起),越界返回空。 |
| 字符码 | 文本库.字符码(字符) | 取字符的编码数字(如 字符码("A") → 65),可用来做凯撒密码、字符判断。 |
| 码转字符 | 文本库.码转字符(编码) | 把编码数字转回字符(与 字符码 互逆)。 |
| 转Base64 | 文本库.转Base64(文本) | 把文字编码成 Base64(传输/简单混淆用),中文按 UTF-8 编码。 |
| 转自Base64 | 文本库.转自Base64(码) | 把 Base64 解码回原文(与 转Base64 互逆),解码失败返回空。 |
| 哈希 | 文本库.哈希(文本) | 计算 SHA-256 摘要(64 位十六进制)。同样的话永远同一个哈希,可做校验、存密码摘要。 |
| 随机文本 | 文本库.随机文本(长度) | 生成一串随机的字母+数字(默认 8 位),可做邀请码、临时文件名。 |
列表库
列表(【…】)工具命令集:排序、增删改查、洗牌、去重、求和等。列表下标从 1 起。多数命令会直接修改传入的列表并把它返回,所以「列表 = 列表库.追加(列表, 值)」与「列表库.追加(列表, 值)」两种写法都可以。 载入 列表库
| 名称 | 用法 | 说明 |
|---|---|---|
| 排序 | 列表库.排序(列表, 顺序) | 原位排序。顺序写「升序」(默认)或「降序」。数字按大小、文字按字典序。 |
| 倒序 | 列表库.倒序(列表) | 把列表首尾倒过来(不同于 排序的降序)。 |
| 洗牌 | 列表库.洗牌(列表) | 随机打乱列表顺序(洗牌)。发牌、随机出场顺序常用。 |
| 包含 | 列表库.包含(列表, 值) | 判断列表里有没有这个值,返回 真/假。 |
| 位置 | 列表库.位置(列表, 值) | 返回值第一次出现的位置(从 1 起),找不到返回 0。 |
| 追加 | 列表库.追加(列表, 值) | 在末尾加一个元素。 |
| 插入 | 列表库.插入(列表, 位置, 值) | 把值插到指定位置(从 1 起),其余元素后移。 |
| 移除 | 列表库.移除(列表, 值) | 删除列表里第一个等于该值的元素(没有则不动)。 |
| 弹出 | 值 = 列表库.弹出(列表, 位置) | 取出并删除指定位置的元素,返回它。位置省略时弹最后一个。 |
| 复制 | 新列表 = 列表库.复制(列表) | 复制一份新列表(之后两边互不影响)。 |
| 拼接列表 | 新列表 = 列表库.拼接列表(列表甲, 列表乙) | 把两个列表连成一个新列表。 |
| 去重 | 列表库.去重(列表) | 去掉重复元素,保留每个值第一次出现的顺序。 |
| 求和 | 列表库.求和(列表) | 把列表里的数字全部加起来。 |
| 计数 | 列表库.计数(列表, 值) | 统计某个值在列表里出现了几次。 |
| 最大值 | 列表库.最大值(列表) | 返回列表里最大的元素,空列表返回 0。 |
| 最小值 | 列表库.最小值(列表) | 返回列表里最小的元素,空列表返回 0。 |
| 生成序列 | 列表库.生成序列(起, 止, 步长) | 生成等差数列列表(与 数学库.数列 等价)。例:生成序列(1, 10, 2) → 【1, 3, 5, 7, 9】。 |
| 收集 | 列表库.收集(生成器 或 列表) | 把生成器逐个 产出 的值全部收集成一个列表(传入列表则原样复制一份)。生成器用完即耗尽。 |
文件库
文件与目录读写命令集。 载入 文件库
| 名称 | 用法 | 说明 |
|---|---|---|
| 读文本 | 文件库.读文本(路径) | 读取整个文本文件内容。 |
| 写文本 | 文件库.写文本(路径, 内容) | 把内容写入文件(覆盖)。 |
| 追加文本 | 文件库.追加文本(路径, 内容) | 在文件末尾追加内容。 |
| 存在 | 文件库.存在(路径) | 文件/目录是否存在,返回 真/假。 |
| 删除文件 | 文件库.删除文件(路径) | 删除指定文件。 |
| 建目录 | 文件库.建目录(路径) | 创建文件夹(含多级)。 |
| 列出目录 | 文件库.列出目录(路径) | 返回目录下的文件名列表。 |
| 复制文件 | 文件库.复制文件(源路径, 目标路径) | 复制一个文件,成功返回 真。 |
| 移动文件 | 文件库.移动文件(源路径, 目标路径) | 移动/重命名一个文件(也可用于文件夹),成功返回 真。 |
| 文件大小 | 文件库.文件大小(路径) | 返回文件字节数,文件不存在返回 0。 |
| 路径合并 | 文件库.路径合并(目录, 名, ...) | 智能拼接路径(自动补分隔符,跨系统安全)。 |
| 文件列表 | 文件库.文件列表(目录, 后缀) | 列出目录下匹配后缀的文件。例:文件列表("图片", "png")。后缀省略时列出全部。 |
| 读行列表 | 文件库.读行列表(路径) | 读文本文件并按行拆成列表(自动去掉换行符)。 |
| 打开 | 文件库.打开(路径, 方式) | 打开文件得到文件对象,方式为 读/写/追加(默认读)。返回的对象配合 用 块 自动关闭:用 文件库.打开("a.txt") 为 f:… 也可手动 文件库.读取/按行读取/写入/关闭。 |
| 读取 | 文件库.读取(文件对象) | 读出文件对象里剩余的全部内容。 |
| 按行读取 | 文件库.按行读取(文件对象) | 从文件对象读一行(自动去掉换行符),读完返回空文本。 |
| 写入 | 文件库.写入(文件对象, 内容) | 向文件对象写入内容(不自动换行)。 |
| 关闭 | 文件库.关闭(文件对象) | 关闭文件对象(用 块结束时会自动关闭,一般无需手写)。 |
系统库
弹窗、对话框与系统交互命令集。 载入 系统库
| 名称 | 用法 | 说明 |
|---|---|---|
| 消息框 | 系统库.消息框(标题, 内容) | 弹出信息提示框。 |
| 警告框 | 系统库.警告框(标题, 内容) | 弹出警告提示框。 |
| 是否框 | 系统库.是否框(标题, 内容) | 弹出是/否询问,返回 真/假。 |
| 输入框 | 系统库.输入框(标题, 提示, 默认值) | 弹出文字输入对话框,返回输入内容。 |
| 选文件 | 系统库.选文件(标题) | 弹出文件选择框,返回所选路径。 |
| 保存文件 | 系统库.保存文件(标题) | 弹出保存路径选择框。 |
| 选目录 | 系统库.选目录(标题) | 弹出文件夹选择对话框,返回所选目录路径。 |
| 选颜色 | 系统库.选颜色(标题) | 弹出颜色选择对话框,返回 "#rrggbb" 颜色值。 |
| 退出 | 系统库.退出() | 关闭程序。 |
| 蜂鸣 | 系统库.蜂鸣() | 播放系统提示音。 |
| 全局键盘键 | 系统库.全局键盘键() | 返回最近按下的全局键盘键名(进阶功能,需 pynput)。 |
| 全局鼠标位置 | 系统库.全局鼠标位置() | 返回全局鼠标坐标 "x:y"(进阶功能,需 pynput)。 |
| 屏幕取色 | 系统库.屏幕取色(x, y) | 取屏幕上某点颜色,返回 "#rrggbb"(进阶功能,需 pillow)。 |
| 截图 | 系统库.截图(路径, x, y, 宽, 高) | 截取屏幕区域并保存为图片(进阶功能,需 pillow)。 |
| 调用DLL | 系统库.调用DLL(动态库路径, 函数名, 参数...) | 调用 Windows DLL 里的函数(ctypes)。字符串参数自动按宽字符传递,数字按整数传递;返回整数结果。例:系统库.调用DLL("user32.dll", "MessageBoxW", 0, "你好", "标题", 0)。仅桌面版支持。 |
| 打开网址 | 系统库.打开网址(网址) | 用系统默认浏览器打开一个网址。 |
| 打开文件 | 系统库.打开文件(路径) | 用系统关联的程序打开文件(相当于双击)。需申请「外部」权限。 |
| 复制到剪贴板 | 系统库.复制到剪贴板(内容) | 把文本放进系统剪贴板(之后任意程序可粘贴)。 |
| 读剪贴板 | 系统库.读剪贴板() | 读出系统剪贴板里的文本(不是文本时返回空)。 |
| 电脑名 | 系统库.电脑名() | 返回这台电脑的名称(可用于本机授权判断等)。 |
| 内存用量 | 系统库.内存用量() | 返回本进程当前内存占用(MB,一位小数);取不到返回 -1。配合 帧循环 可做内存曲线。 |
| 对象统计 | 系统库.对象统计() | 返回运行中对象统计字典:窗口数/组件数/精灵数/任务数/全局变量数。 |
| 类型值 | 系统库.类型值(值) | 返回值的类型名:数字/文本/列表/字典/结构/函数/生成器/任务/错误对象/无/其他。 |
| 列字段 | 系统库.列字段(结构实例 或 "结构名") | 返回结构体的字段名列表(传入实例或结构名均可)。 |
| 动态调用 | 系统库.动态调用("函数名", 参数表) | 按名字调用一个函数(参数表为列表)。参数表省略时传空。 |
| 执行 | 系统库.执行(代码文本) | 受限执行:把一段容语言代码放在独立局部环境里运行,返回最后一个表达式的值。有步数配额、禁后台任务/跳转,超限自动中止,适合做插件沙箱。 |
时间库
时间与延时命令集。 载入 时间库
| 名称 | 用法 | 说明 |
|---|---|---|
| 延时 | 时间库.延时(毫秒) | 暂停指定毫秒(不卡界面)。 |
| 当前时间 | 时间库.当前时间() | 返回 "HH:MM:SS"。 |
| 当前日期 | 时间库.当前日期() | 返回 "YYYY-MM-DD"。 |
| 当前日期时间 | 时间库.当前日期时间() | 返回完整日期时间。 |
| 星期 | 时间库.星期() | 返回 "一" 到 "日"。 |
| 时间戳 | 时间库.时间戳() | 返回秒级时间戳(用于计算耗时)。 |
| 年份 | 时间库.年份() | 返回当前年份数字(如 2026)。 |
| 月份 | 时间库.月份() | 返回当前月份数字(1~12)。 |
| 日 | 时间库.日() | 返回今天是当月第几天(1~31)。 |
| 小时 | 时间库.小时() | 返回当前小时(0~23)。 |
| 分钟 | 时间库.分钟() | 返回当前分钟(0~59)。 |
| 秒 | 时间库.秒() | 返回当前秒数(0~59)。 |
| 计时开始 | 时间库.计时开始() | 启动秒表(把起点记在程序里,可反复调用重置)。 |
| 计时毫秒 | 时间库.计时毫秒() | 返回从 计时开始 到现在过了多少毫秒(没开始计时返回 0)。可做限时关卡、性能测量。 |
游戏库
游戏开发命令集:游戏画布 + 精灵、运动物理、碰撞、键盘鼠标输入、音效、镜头、帧率与存档。先用 游戏画布 组件铺一块画布,再用命令在画布上创建和操控精灵。 载入 游戏库
| 名称 | 用法 | 说明 |
|---|---|---|
| 游戏画布 | 游戏画布 名【位置,大小,颜色】 | 游戏舞台。所有 游戏库 命令都在这块画布上作画;点击画布取得键盘焦点后可用「当 画布名 = 按键:」和 游戏库.键被按住() 响应键盘。 |
| 画布颜色 | 游戏库.画布颜色(颜色) | 设置画布背景颜色,支持中文颜色名 / #rrggbb / r:g:b。 |
| 画布宽高 | 游戏库.画布宽高() | 返回画布尺寸 "宽:高"。 |
| 清空画布 | 游戏库.清空画布() | 删除画布上的全部精灵(与 删除全部精灵 等价)。 |
| 刷新画布 | 游戏库.刷新画布() | 让画布立即重绘一次(一般不需要,界面每 15ms 自动刷新)。 |
| 画矩形 | 名 = 游戏库.画矩形(x, y, 宽, 高, 颜色) | 画一个矩形(x,y 为左上角),自动命名为「图1、图2…」并当作精灵,可用返回的名字继续操控。 |
| 画圆 | 名 = 游戏库.画圆(圆心x, 圆心y, 半径, 颜色) | 画一个圆(x,y 为圆心),返回自动命名的精灵名。 |
| 画椭圆 | 名 = 游戏库.画椭圆(x, y, 宽, 高, 颜色) | 画一个椭圆(x,y 为左上角,宽高为外接框)。 |
| 画线 | 名 = 游戏库.画线(x1, y1, x2, y2, 颜色) | 从 (x1,y1) 到 (x2,y2) 画一条线。 |
| 画文字 | 名 = 游戏库.画文字(x, y, 文本, 颜色, 字号) | 在画布上写一行字(x,y 为左上角)。用 设置文字 可随时改内容,常用来做分数板。 |
| 画多边形 | 名 = 游戏库.画多边形(点列表, 颜色) | 用一组坐标画多边形,点列表写成 【x1, y1, x2, y2, x3, y3】。 |
| 画图片 | 名 = 游戏库.画图片(x, y, 图片路径) | 在画布上放一张图片(png/jpg/gif),返回精灵名。 |
| 创建精灵 | 游戏库.创建精灵(名, 形状, x, y, 宽, 高, 颜色, 内容) | 按名字创建精灵。形状可写 矩形/圆/椭圆/线/文字/图片;「圆」的 x,y 是圆心、宽是直径;「文字」的宽是字号;「图片」的内容填文件路径。 |
| 删除精灵 | 游戏库.删除精灵(名) | 把一个精灵从画布上移除。 |
| 删除全部精灵 | 游戏库.删除全部精灵() | 清空画布上的所有精灵(与 清空画布 等价)。 |
| 精灵存在 | 游戏库.精灵存在(名) | 判断精灵是否还在画布上,返回 真/假。 |
| 精灵列表 | 游戏库.精灵列表() | 返回画布上所有精灵名的列表,可用 列表[1] 取值(下标从 1 开始)。 |
| 移动精灵 | 游戏库.移动精灵(名, x偏移, y偏移) | 让精灵在当前位置基础上移动一段距离(正数向右/向下,负数向左/向上)。 |
| 设置位置 | 游戏库.设置位置(名, x, y) | 把精灵直接放到指定坐标(左上角对齐;「圆」按圆心记录的外接框算)。 |
| 精灵X | 游戏库.精灵X(名) | 返回精灵当前的 x 坐标(外接框左上角)。 |
| 精灵Y | 游戏库.精灵Y(名) | 返回精灵当前的 y 坐标(外接框左上角)。 |
| 精灵大小 | 游戏库.精灵大小(名) | 返回精灵外接框尺寸 "宽:高"。 |
| 设置大小 | 游戏库.设置大小(名, 宽, 高) | 改变精灵尺寸(矩形/椭圆/圆生效;图片会拉伸到新尺寸,需 pillow)。 |
| 设置颜色 | 游戏库.设置颜色(名, 颜色) | 改变精灵的颜色。 |
| 设置文字 | 游戏库.设置文字(名, 文本) | 修改文字精灵的内容,适合做分数板、倒计时。 |
| 设置图片 | 游戏库.设置图片(名, 图片路径) | 给图片精灵换一张图(也可给其他形状精灵贴图)。 |
| 显示精灵 | 游戏库.显示精灵(名) | 把隐藏的精灵重新显示出来(隐藏时不参与碰撞)。 |
| 隐藏精灵 | 游戏库.隐藏精灵(名) | 把精灵藏起来(不删除,隐藏期间不参与碰撞)。 |
| 移到最前 | 游戏库.移到最前(名) | 把精灵提到最上层显示。 |
| 移到最后 | 游戏库.移到最后(名) | 把精灵压到最底层(适合背景图)。 |
| 设置速度 | 游戏库.设置速度(名, x速度, y速度) | 给精灵设定每帧位移量,配合 更新运动 使用;速度可为负数。 |
| 读速度 | 游戏库.读速度(名) | 返回精灵当前速度 "x速度:y速度"。 |
| 设置加速度 | 游戏库.设置加速度(名, x加速度, y加速度) | 给精灵加恒定加速度(如重力写 0, 0.3),配合 更新运动 使用。 |
| 设置反弹 | 游戏库.设置反弹(名, 开关) | 开关写「真/假」。打开后,更新运动 会让精灵碰到画布边缘时自动反弹。 |
| 停止运动 | 游戏库.停止运动(名) | 把精灵的速度和加速度全部清零。 |
| 更新运动 | 游戏库.更新运动() | 推进所有精灵:按 速度+加速度 移动一步,开了反弹的在边缘反弹。主函数每轮调用一次。 |
| 朝向移动 | 游戏库.朝向移动(名, 角度, 距离) | 让精灵沿指定角度移动。0° 向右,90° 向下(屏幕 y 轴朝下,角度顺时针)。 |
| 朝向角度 | 游戏库.朝向角度(名甲, 名乙) | 返回从甲中心指向乙中心的角度(0° 向右,顺时针)。常用于瞄准。 |
| 精灵距离 | 游戏库.精灵距离(名甲, 名乙) | 返回两个精灵中心点之间的距离(像素)。 |
| 跟随 | 游戏库.跟随(名甲, 名乙, 速度) | 让甲朝乙移动,每轮最多走「速度」像素,走到就停。适合做宠物、追踪敌人。 |
| 发生碰撞 | 游戏库.发生碰撞(名甲, 名乙) | 判断两个精灵的外接框是否重叠,返回 真/假。 |
| 碰到边界 | 游戏库.碰到边界(名) | 判断精灵是否碰到画布四边,返回 真/假。 |
| 碰撞方向 | 游戏库.碰撞方向(名) | 返回精灵碰到的边:「左」「右」「上」「下」(可能连写如「左右」),没碰到返回「无」。 |
| 点在精灵内 | 游戏库.点在精灵内(名, x, y) | 判断某个坐标点是否落在精灵外接框内(常配合鼠标坐标做点击检测)。 |
| 按下按键 | 游戏库.按下按键() | 返回最近按下的键名(如 a、space、Left)。建议配合「当 画布 = 按键:」使用。 |
| 键被按住 | 游戏库.键被按住(键名) | 判断某个键当前是否正被按住,返回 真/假。支持 a-z、0-9、space、Left/Right/Up/Down,也可写中文「空格/上/下/左/右/回车」。需要画布先取得焦点(点一下画布)。 |
| 鼠标坐标 | 游戏库.鼠标坐标() | 返回鼠标在画布上的坐标 "x:y"(相对画布左上角)。 |
| 鼠标按下 | 游戏库.鼠标按下() | 鼠标左键是否正按在画布上,返回 真/假。 |
| 播放音效 | 游戏库.播放音效(wav路径) | 异步播放一个 .wav 音效文件,不阻塞游戏循环。 |
| 播放提示音 | 游戏库.播放提示音(频率, 毫秒) | 用系统蜂鸣器发出指定频率的提示音(如 得分时 800Hz 100ms)。 |
| 停止音效 | 游戏库.停止音效() | 停止正在播放的音效。 |
| 设置帧率 | 游戏库.设置帧率(每秒帧数) | 设置主函数每秒循环多少轮(游戏的心跳),默认约 100,可设 1~240。 |
| 当前帧数 | 游戏库.当前帧数() | 返回主函数从启动到现在循环了多少轮,可用来做计时。 |
| 重置帧数 | 游戏库.重置帧数() | 把帧计数清零(配合 当前帧数 做局部计时)。 |
| 移动镜头 | 游戏库.移动镜头(x偏移, y偏移) | 平移镜头:整个画面(所有精灵)向反方向移动,产生「世界在动」的效果。 |
| 镜头跟随 | 游戏库.镜头跟随(名) | 让镜头立刻对准某个精灵(把它移到画面中心),主函数每轮调用即为平滑跟随。 |
| 镜头位置 | 游戏库.镜头位置() | 返回镜头当前偏移 "x:y"。 |
| 重置镜头 | 游戏库.重置镜头() | 把镜头移回原点(切换关卡时常用)。 |
| 存最高分 | 游戏库.存最高分(文件名, 分数) | 若分数高于文件里记录的最高分则写入,返回 真(破纪录);否则返回 假。 |
| 读最高分 | 游戏库.读最高分(文件名) | 读取文件里记录的最高分,没有记录时返回 0。 |
| 保存进度 | 游戏库.保存进度(文件名, 数据) | 把任意数据(关卡号、位置等)存成文本文件。 |
| 读取进度 | 游戏库.读取进度(文件名) | 读取保存的进度文本,没有时返回空字符串。 |
| 网格对齐 | 游戏库.网格对齐(名, 格子大小) | 把精灵坐标吸附到最近的网格点(做贪吃蛇、俄罗斯方块很好用)。 |
| 随机传送 | 游戏库.随机传送(名, 区域宽, 区域高) | 把精灵随机挪到指定大小的区域内(刷怪、撒食物常用)。 |
| 画弧 | 名 = 游戏库.画弧(x, y, 宽, 高, 起始角, 跨度角, 颜色) | 画一个扇形/弧块(x,y 为外接框左上角)。角度 0 = 3 点钟方向,跨度角为正则逆时针。例:起始角 0 跨度 90 画出右上四分之一圆。 |
| 画圆角矩形 | 名 = 游戏库.画圆角矩形(x, y, 宽, 高, 圆角, 颜色) | 画一个四角圆润的矩形(x,y 为左上角),圆角是圆角半径。做 UI 面板、血条很好用。 |
| 精灵中心X | 游戏库.精灵中心X(名) | 返回精灵中心点的 x 坐标(精灵X 返回的是左上角)。算两点距离、瞄准时常更方便。 |
| 精灵中心Y | 游戏库.精灵中心Y(名) | 返回精灵中心点的 y 坐标。 |
| 设置中心位置 | 游戏库.设置中心位置(名, x, y) | 把精灵的中心点放到指定坐标(区别于 设置位置 的左上角对齐)。 |
| 碰撞列表 | 列表 = 游戏库.碰撞列表(名) | 返回当前与该精灵碰撞的所有精灵名列表(不含隐藏精灵)。一次接多个道具、判断周围有哪些敌人时特别好用。 |
| 停止全部运动 | 游戏库.停止全部运动() | 把画布上所有精灵的速度和加速度清零(暂停物理、结算回合时用)。 |
| 循环音效 | 游戏库.循环音效(wav路径) | 循环播放一个 .wav 音效(背景音乐用),用 停止音效 结束。 |
三维库
简易 3D 渲染库(纯软件渲染,无需显卡)。用一个 游戏画布 组件作为 3D 视口:创建场景→摆对象→设相机→每轮 渲染场景。可用于游戏,也被 动画库 支持。 载入 三维库
| 名称 | 用法 | 说明 |
|---|---|---|
| 创建场景 | 三维库.创建场景(画布名) | 在指定 游戏画布 上初始化 3D 场景(相机、灯光、对象表)。第一个参数传画布组件名,画布唯一时可传空字符串。 |
| 设置天空 | 三维库.设置天空(画布名, 颜色) | 设置 3D 视口的背景天空颜色。 |
| 渲染场景 | 三维库.渲染场景(画布名) | 渲染一帧 3D 画面。放在主函数里每轮调用(配合 游戏库.设置帧率 控制帧率)。 |
| 删除场景 | 三维库.删除场景(画布名) | 清空场景中的全部三维对象。 |
| 相机位置 | 三维库.相机位置(画布名, x, y, z) | 设置相机在世界坐标中的位置(y 向上,单位任意,建议 1≈1米)。 |
| 相机朝向 | 三维库.相机朝向(画布名, 水平角, 俯仰角) | 设置相机朝向。水平角 0=朝 +z,正值向右转;俯仰角正值抬头(角度制)。 |
| 相机视野 | 三维库.相机视野(画布名, 角度) | 设置竖直视场角(10~120 度),默认 70。 |
| 第一人称 | 三维库.第一人称(画布名, 移动速度, 转向速度) | 开启第一人称控制:点击画布给键盘焦点后,W/A/S/D 或方向键移动,Q/E 转向。每轮渲染时自动处理按键。 |
| 创建立方体 | 三维库.创建立方体(画布名, x, y, z, 宽, 高, 深, 颜色) | 在场景中创建一个长方体,返回对象名(物1、物2…)。 |
| 创建方块 | 三维库.创建方块(画布名, x, y, z, 大小, 颜色) | 创建正立方体(搭地图用),返回对象名。 |
| 创建球体 | 三维库.创建球体(画布名, x, y, z, 半径, 颜色) | 创建低多边形球体,返回对象名。 |
| 创建地面 | 三维库.创建地面(画布名, 大小, 颜色) | 在 y=0 处创建一块方形地面(中心在原点),返回对象名。 |
| 对象位置 | 三维库.对象位置(画布名, 名, x, y, z) | 移动三维对象到指定坐标。 |
| 对象旋转 | 三维库.对象旋转(画布名, 名, 水平角) | 绕 y 轴旋转对象(角度制,正值顺时针)。 |
| 对象前进 | 三维库.对象前进(画布名, 名, 距离) | 让对象沿自身朝向(yaw 方向)前进一段距离。 |
| 对象颜色 | 三维库.对象颜色(画布名, 名, 颜色) | 改变对象颜色。 |
| 对象隐藏 | 三维库.对象隐藏(画布名, 名, 是否) | 隐藏/显示对象(隐藏后不参与碰撞)。是否写 真/假。 |
| 对象显示 | 三维库.对象显示(画布名, 名) | 重新显示隐藏的对象。 |
| 销毁对象 | 三维库.销毁对象(画布名, 名) | 从场景中删除对象。 |
| 对象坐标 | 三维库.对象坐标(画布名, 名) | 返回对象坐标 "x:y:z"。 |
| 对象距离 | 三维库.对象距离(画布名, 名甲, 名乙) | 返回两个对象的中心点距离。 |
| 发生碰撞 | 三维库.发生碰撞(画布名, 名甲, 名乙) | 判断两个对象的外包盒是否相交,返回 真/假(简易 3D 碰撞)。 |
| 对象个数 | 三维库.对象个数(画布名) | 返回场景中的对象总数。 |
| 环境光 | 三维库.环境光(画布名, 强度) | 设置环境光强度(0~1,让所有面都有基础亮度),默认 0.55。 |
| 方向光 | 三维库.方向光(画布名, x, y, z, 强度) | 设置平行光方向(光传播方向,如 0,-1,0.3 表示斜向下照)与强度。 |
动画库
补间/关键帧动画库:对组件(位置/大小/当前值)、游戏精灵(x/y)、三维对象(x/y/z)做平滑过渡。支持缓动曲线与循环,动画进行中可用「当 动画.进行中(名) = 假:」触发完成事件。三维动画即三维库的接口之一。 载入 动画库
| 名称 | 用法 | 说明 |
|---|---|---|
| 补间 | 动画库.补间(目标名, 属性, 终值, 时长毫秒, 缓动) | 把目标的单个数值属性平滑过渡到终值。属性可选:组件的 位置x/位置y/大小宽/大小高/当前值/字体大小;精灵的 x/y;三维对象的 x/y/z。缓动:线性/缓入/缓出/缓入缓出。返回动画名。 |
| 补间双 | 动画库.补间双(目标名, 属性, 终值x, 终值y, 时长毫秒, 缓动) | 同时过渡两个分量:属性写 位置 或 大小(仅组件)。返回动画名。 |
| 循环 | 动画库.循环(动画名, 是否) | 设置动画是否循环播放(是/否)。 |
| 暂停 | 动画库.暂停(动画名) | 暂停动画,可用 继续 恢复。 |
| 继续 | 动画库.继续(动画名) | 继续播放暂停的动画。 |
| 停止 | 动画库.停止(动画名) | 停止并移除动画(对象停在当前值)。 |
| 进行中 | 动画库.进行中(动画名) | 动画还在播放返回 真,结束返回 假。配合「当 动画库.进行中(动) = 假:」做完成事件。 |
| 等待 | 动画库.等待(动画名) | 阻塞等待动画播放完毕(小心:主函数中等待会卡住本窗口逻辑)。 |
| 动画列表 | 动画库.动画列表() | 返回当前进行中的动画名列表。 |
网络库
非阻塞网络命令集:HTTP 请求、TCP 连接/服务、UDP、WebSocket。所有请求都在后台进行,主函数不卡顿——用「当 连接名 = 收到数据:」等事件收通知,用 等待完成() 阻塞等结果。连接名可直接当组件名用(收事件、读属性)。桌面版全支持;网页版仅 HTTP 与 WS。 载入 网络库
| 名称 | 用法 | 说明 |
|---|---|---|
| 发请求 | 请求名 = 网络库.发请求(方式, 网址, 内容, 头字典, 表单字典) | 发出 HTTP 请求(方式 GET/POST/PUT/PATCH)。可传 头字典(自定义请求头)与 表单字典(键值对自动按网页表单编码,Content-Type 自动设好)。后台进行;完成后读「请求名.结果」与「请求名.状态码」,或用 等待完成() 等结束。 |
| 取结果 | 网络库.取结果(请求名) | 读取 HTTP 请求的响应正文。 |
| 等待完成 | 网络库.等待完成(端点名) | 阻塞直到端点脱离「进行中」状态,返回最终状态(完成/出错/断开…),最多等 30 秒。适合脚本式顺序写法。 |
| 连接 | 连接名 = 网络库.连接(主机, 端口) | 建立 TCP 连接(行协议:每条数据以换行分帧)。用「当 连接名 = 收到数据:」收数据、网络库.发送() 发数据。 |
| 发送 | 网络库.发送(连接名, 文本) | 经 TCP 连接发送一行文本(自动补换行)。 |
| 断开 | 网络库.断开(连接名) | 主动断开 TCP 连接或关闭 UDP 端点。 |
| 监听 | 服务名 = 网络库.监听(端口) | 在本机端口开 TCP 服务。客户端接入时触发「当 服务名 = 有连接:」,用「服务名.新连接」取得客户端连接名,可对其 发送/收数据。 |
| 开UDP | 端点名 = 网络库.开UDP(端口) | 开一个 UDP 端点(端口 0 = 系统随机分配)。收到的包触发「当 端点名 = 收到数据:」,来源看「端点名.来源」。 |
| 发送UDP | 网络库.发送UDP(端点名, 主机, 端口, 文本) 或 网络库.发送UDP(主机, 端口, 文本) | 发送 UDP 数据报。带端点名时从该端点发出(能收到回包),否则用一次性临时端口。 |
| 连WS | 连接名 = 网络库.连WS(网址) | 连接 WebSocket 服务器(ws:// 明文与 wss:// TLS 加密)。连上后触发「当 连接名 = 已连接:」,收发用 收到数据 事件与 发送WS。 |
| 发送WS | 网络库.发送WS(连接名, 文本) | 经 WebSocket 连接发送一条文本消息。 |
| 监听WS | 服务名 = 网络库.监听WS(端口) | 在本机端口开 WebSocket 服务端(自动完成升级握手)。客户端接入触发「当 服务名 = 有连接:」,用 服务名.最新客户 取客户连接名,可对其 发送WS/收数据。 |
| 端点属性 | 端点名.状态 / .结果 / .数据 / .来源 / .新连接 / .状态码 | 端点可像组件一样读属性:状态(进行中/完成/出错/断开/已断开)、结果(HTTP 响应正文)、数据(本次收到的内容)、来源(UDP 包来源 "主机:端口")、新连接(服务刚接入的客户端名)、状态码(HTTP 状态码)。 |
控制台库
命令行程序专用:配合「程序」入口写无窗口的控制台/服务端程序。 载入 控制台库
| 名称 | 用法 | 说明 |
|---|---|---|
| 输出 | 控制台库.输出(内容...) | 向标准输出打印一行,可传多个值(空格分隔)。窗口程序里则打印到运行输出面板。 |
| 读取输入 | 文本 = 控制台库.读取输入(提示) | 从标准输入读一行(可带提示语)。仅控制台程序可用。 |
数据库库
数据三合一:JSON 解析/生成、SQLite 数据库、URL 编解码。SQLite 连 ":内存:" 用内存库,或给文件路径落盘。 载入 数据库库
| 名称 | 用法 | 说明 |
|---|---|---|
| 解析JSON | 数据 = 数据库.解析JSON(JSON文本) | 把 JSON 文本解析成字典/列表(对象→字典,数组→列表,下标从 1 起)。 |
| 生成JSON | 文本 = 数据库.生成JSON(字典或列表) | 把字典/列表序列化成 JSON 文本(与 解析JSON 互逆)。 |
| 项数/有键/合并/键列表 | 数据库.项数(d) / 数据库.有键(d, "键") / 数据库.合并(d1, d2) / 数据库.键列表(d) | 字典工具:项数、键是否存在(返回 真/假)、合并(后者覆盖前者,返回新字典)、全部键名列表。 |
| 连接 | 库名 = 数据库.连接(路径 或 ":内存:") | 打开 SQLite 数据库(":内存:" = 内存库)。后续 执行/查询 都用这个连接名。 |
| 执行 | 数据库.执行(连接名, SQL语句, 参数列表) | 执行建表/增删改 SQL;参数列表用 ? 占位(防注入)。 |
| 查询 | 行列表 = 数据库.查询(连接名, SQL语句, 参数列表) | 执行 SELECT,返回行列表;每行是字典(列名.值)或下标都行。下标从 1 起。 |
| 关闭 | 数据库.关闭(连接名) | 关闭数据库连接(内存库内容随之消失,文件库落盘)。 |
| URL编码/解码 | 数据库.URL编码(文本) / 数据库.URL解码(文本) | URL 百分号编解码(中文/空格转 %XX)。 |
| 解析URL | u = 数据库.解析URL(网址) | 拆解网址,读 u.协议 / u.主机 / u.端口 / u.路径 / u.查询。 |
日志库
结构化日志:带时间戳与级别追加写入文件,同时镜像到控制台。适合服务端与长期运行的程序。 载入 日志库
| 名称 | 用法 | 说明 |
|---|---|---|
| 设置路径 | 日志库.设置路径(文件路径) | 设定日志文件位置(目录不存在会自动创建)。不设置则默认写 容程序日志.txt。 |
| 写 | 日志库.写(级别, 消息) | 写一条日志(级别如 信息/警告/错误),格式「时间 [级别] 消息」,追加落盘并镜像到控制台。 |
| 清空 | 日志库.清空() | 清空日志文件内容。 |
压缩库
zip 打包解包与 gzip 文本压缩(纯内置实现)。需申请「文件」权限。 载入 压缩库
| 名称 | 用法 | 说明 |
|---|---|---|
| 打包 | 压缩库.打包(zip路径, 源1, 源2, ...) | 把文件/文件夹打包成 zip(文件夹会递归收录,zip 内保留相对结构)。 |
| 解包 | 压缩库.解包(zip路径, 目标目录) | 把 zip 解压到目标目录(目录不存在会自动创建)。 |
| 压缩文本 | 压缩库.压缩文本(文本) | gzip 压缩一段文本,返回 base64 字符串(可直接存文件/传网络)。 |
| 解压文本 | 压缩库.解压文本(base64文本) | 把 压缩文本 的产物还原为原文。 |
加密库
哈希、随机串与 base64 编解码(纯内置实现)。 载入 加密库
| 名称 | 用法 | 说明 |
|---|---|---|
| 哈希 | 加密库.哈希(文本, 方式) | 计算摘要,方式可选 md5/sha1/sha256(默认)/sha512,返回十六进制串。常用于密码指纹、文件校验。 |
| 随机串 | 加密库.随机串(字节数) | 生成密码学安全的随机十六进制串(默认 16 字节 = 32 个字符)。适合做令牌、激活码。 |
| 编码64 | 加密库.编码64(文本) | 把文本 base64 编码(返回 ASCII 串)。 |
| 解码64 | 加密库.解码64(base64文本) | 把 base64 串还原为文本。 |
图像库
纯内置 PNG 编解码的像素画图库(无需 pillow)。坐标从 1 起;颜色可用 "r:g:b"、"#rrggbb" 或 黑/白/红/绿/蓝/黄/灰。 载入 图像库
| 名称 | 用法 | 说明 |
|---|---|---|
| 新建 | 图像库.新建(宽, 高, 颜色) | 新建一张纯色图像(颜色默认白色)。返回图像对象。 |
| 宽/高 | 图像库.宽(图) / 图像库.高(图) | 返回图像的宽或高(像素)。 |
| 取像素 | 图像库.取像素(图, x, y) | 取某点颜色,返回 "r:g:b"。 |
| 设像素 | 图像库.设像素(图, x, y, 颜色) | 把某点涂成指定颜色。 |
| 填充矩形 | 图像库.填充矩形(图, x, y, 宽, 高, 颜色) | 从 (x,y) 起填充一块矩形(自动裁剪出界部分)。 |
| 画线 | 图像库.画线(图, x1, y1, x2, y2, 颜色) | 在两点间画一条直线。 |
| 保存 | 图像库.保存(图, 路径) | 把图像保存为 PNG 文件。 |
| 载入 | 图像库.载入(路径) | 从 PNG 文件载入图像对象(可继续取像素/改像素)。 |
表格库
CSV / INI / TOML 配置与表格文件读写。需申请「文件」权限。 载入 表格库
| 名称 | 用法 | 说明 |
|---|---|---|
| 读CSV | 表格库.读CSV(路径, 分隔符) | 读 CSV 文件为「行的列表」(每行是字符串列表),自动处理引号转义;分隔符默认逗号。 |
| 写CSV | 表格库.写CSV(路径, 行列表, 分隔符) | 把「行的列表」写成 CSV 文件(自动加引号转义)。 |
| 读INI | 表格库.读INI(路径) | 读 INI 配置为字典(节名 → 键值字典)。 |
| 写INI | 表格库.写INI(路径, 字典) | 把「节名 → 键值字典」写入 INI 文件。 |
| 读TOML | 表格库.读TOML(路径) | 读 TOML 配置文件为字典(Python 3.11+ 内置支持)。 |
进程库
运行外部命令、打开文件、读写环境变量与工作目录。需申请「外部」权限。 载入 进程库
| 名称 | 用法 | 说明 |
|---|---|---|
| 运行命令 | 结果 = 进程库.运行命令(命令行, 超时秒) | 执行系统命令,返回字典:退出码/输出/错误 三项(超时秒默认 30)。 |
| 打开文件 | 进程库.打开文件(路径) | 用系统关联程序打开文件(相当于双击)。 |
| 环境变量 | 进程库.环境变量(名) | 读取系统环境变量(不存在返回空文本)。 |
| 设环境变量 | 进程库.设环境变量(名, 值) | 设置本进程的环境变量(影响之后 运行命令 的子进程)。 |
| 当前目录 | 进程库.当前目录() | 返回当前工作目录。 |
| 改目录 | 进程库.改目录(路径) | 切换当前工作目录。 |
定时库
延时执行与定时点检查。延时执行 返回任务端点,可 等待/读 .结果。 载入 定时库
| 名称 | 用法 | 说明 |
|---|---|---|
| 延时执行 | 任务 = 定时库.延时执行(秒, "函数名", 参数表) | 延迟若干秒后在后台调用函数(参数表可选),立即返回任务端点。用「等待 任务 = \"完成\":」取结果。 |
| 设定时 | 定时库.设定时("定时名", 秒) | 设置一个定时点:从现在起若干秒后到期。配合 已到时 在主循环里轮询。 |
| 已到时 | 定时库.已到时("定时名") | 判断定时点是否已到期(返回 真/假;未设置的名字恒为 假)。到期后不会自动复位,可 配合 设定时 重新设。 |
市场库
包市场接口:从市场源(工程 市场.json 配置 HTTP 地址或本地路径;默认本地 市场仓库/ 目录)查询与安装包。安装后的模块放 包/ 目录,用 导入 使用。 载入 市场库
| 名称 | 用法 | 说明 |
|---|---|---|
| 列表 | 市场库.列表() | 返回市场里全部包的信息列表(每项含 名/说明/版本)。 |
| 安装 | 市场库.安装("包名") | 从市场安装一个包到工程 包/ 目录(等价「安装包 \"包名\"」语句),成功返回 真。 |
| 已安装 | 市场库.已安装() | 返回本工程已安装的包名列表。 |
自定义库与模块
- 模块 — 一个 .rcx 文件即一个模块;模块顶部写
导出 函数 名【参数】:对外提供函数。 - 导入 —
导入 "模块名" 为 别名,然后别名.函数(实参)调用。 - 结构体 —
结构 名【字段1, 字段2】,用新 结构名(实参)创建;结构内可定义方法(本.字段访问自身),支持结构 子类 继承 父类【新增字段】。 - 包 —
安装包 "包名"从市场安装到工程 包/ 目录,等价 市场库.安装。
导入 "计分工具" 为 工具 分数 = 工具.平均分(460, 4) # 115
结构 玩家数据【名字, 命, 得分】: 函数 加分【n】: 本.得分 = 本.得分 + n 主角 = 新 玩家数据("小明", 3, 0) 主角.加分(10)
编译与分发
菜单「编译」把整个工程打包为独立的 Windows 可执行文件,输出到 工程/输出/ 目录,双击即可运行,无需安装任何依赖。工具类语句 断言 条件, "失败消息"、测试 "用例名":、断点、程序 名:(控制台入口)可在开发期辅助调试。