零基础开发 era 游戏 #7 输出
这里主要指 era 游戏的核心:文本输出。(至于图像输出的细节,之后再来探索吧)
即「PRINT 系列命令」。
PRINT 系#
解析修饰符 |V|S|FORM|FORMS#
@TEST_PRINT
#DIM num = 123
#DIMS text = "ABC"
PRINT 所见即所得。
PRINTL
PRINTV num
PRINTL
PRINTS text
PRINTL
PRINTFORM 按格式解析后的所见即所得 num={num} text=%text%
PRINTL
PRINTFORMS "按格式解析后的一个完整字符串 num={num} text=%text%"样式修饰符 |K|D#
K(Kana)
首先介绍 FORCEKANA 这个命令,指定强制输出的
0:不进行转换1:将平假名(ひらがな)转换为片假名(カタカナ)2:将 全角的 片假名(カタカナ)转换为平假名(ひらがな)3:无论全角还是半角一律 将片假名(カタカナ)转换为平假名(ひらがな)
@TEST_PRINTK
PRINT 未进行转换时:
PRINTK あいうえお / アイウエオ
PRINTL
PRINT 平假名自动转换为片假名:
FORCEKANA 1
PRINTK あいうえお / アイウエオ
PRINTL
PRINT 片假名自动转换为平假名:
FORCEKANA 2
PRINTK あいうえお / アイウエオD(Default)
无视 SETCOLOR 命令设置的新颜色,仍然显示为配置文件中设定的
换行修饰符 |L|W#
L(Line)
打印后自动换行。
W(Wait)
打印后自动换行,同时运行一次 WAIT 命令(输入任意指令以继续)。
PRINTSINGLE 系#
可以使用
|V|S|FORM|FORMS和|K|D修饰符。
(由于会自动换行,所以不需要|L|W。)
永远独占一行,超出屏幕绘制区域宽度的多余内容会被直接丢弃(不会渲染),而不是在之后的下一行继续打印。
PRINTC 系#
可用的修饰符顺序依次为
|FORM/C|LC/|K|D。
自动补齐(使用半角空格)到指定长度(由配置项 PRINTCの文字数 决定,默认为 25)的打印,C 是右对齐(左边补空格),LC 是左对齐(右边补空格)。
PRINTDATA 系#
可用的修饰符顺序依次为
|K|D/|L|W。
无需 IF + RAND 的组合就能随机打印文本:
@LOTTERY
#DIM rand_res
#DIMS coin = "币"
WHILE 1
PRINTDATA rand_res
DATA 0. 钻石 × 5
DATAFORM 1. 金%coin% × 10
DATAFORM 2. 银%coin% × 10
DATAFORM 3. 铜%coin% × 10
DATALIST
DATA 4. 一对剑盾:
DATA 〇 短剑
DATAFORM 〇 雕刻了货%coin%图案的小木盾
ENDLIST
ENDDATA
PRINTL
PRINTFORML 随机结果={rand_res}
INPUTMOUSEKEY
PRINTL
WENDPRINTBUTTON 系#
可用的修饰符为
|C|LC。
打印一个可以交互的按钮。有两个参数,分别是:
按钮显示的内容:只能为字符串按钮的值:可以为数值或字符串
@TEST_PRINT_BUTTON
WHILE 1
PRINTL
DRAWLINE
PRINT <<
PRINTBUTTON "这是一个按钮", "一个按钮"
PRINT >>
PRINT <<
PRINTBUTTON "这是另一个按钮", "另一个按钮"
PRINT >>
PRINTL
PRINT <<
PRINTBUTTONLC "左对齐的按钮A", 101
PRINT >>
PRINT <<
PRINTBUTTONC "右对齐的按钮A", 201
PRINT >>
PRINTL
PRINT <<
PRINTBUTTONLC "左对齐的按钮B", 102
PRINT >>
PRINT <<
PRINTBUTTONC "右对齐的按钮B", 202
PRINT >>
PRINTL
INPUTS
WENDPRINTPLAIN 系#
可用的修饰符为
|FORM。
有一个隐藏的特性是:当你打印的内容里有 [数字] 这样的格式、当前屏幕又存在 INPUT 系列命令(输入等待)时,会被自动识别为按钮,方括号里面的内容就是按钮的值。
PRINT [1] 被解析为按钮了 PRINTL PRINT [2] 被解析为按钮了 PRINTL PRINTPLAIN [3] 不会被解析为按钮 INPUT
而 PRINTPLAIN 可以强制只打印原本的内容(不会被错误地解析)。
其他#
CUSTOMDRAWLINE#
以自定义的内容作为分割线:
CUSTOMDRAWLINE *--- DRAWLINE
DRAWLINEFORM#
解析自定义的内容后作为分割线:
@TEST_DIVIDER
#DIMS char = "=-="
DRAWLINEFORM *-%char%-
DRAWLINEREUSELASTLINE#
参数可以接受类似
FORM修饰符的内容。
在当前的 最后一行 添加一段 临时 信息。
在这条命令之后的任何其他输出都会让这段临时信息消失。
$INPUT_LOOP
INPUT
IF RESULT != 0
CLEARLINE 1
REUSELASTLINE 输入的指令无效,请输入 0 退出。
GOTO INPUT_LOOP
ENDIFCLEARLINE#
删除在这条命令之前打印的、指定行数的内容。
一般配合 LINECOUNT(当前总共已经打印的合计行数)实现清屏效果。
或是在 INPUT 系列命令后直接 CLEARLINE 1 清除上一行(自动回显的输入结果)。
简单的图像输出#
PRINT_IMG#
打印指定图像。
在此之前需要先通过 ./resources/ 目录下的 *.csv 文件加载对应图片。
(此时指定的「图像」也被称作「sprite」。)
PRINT_IMG "SpriteName"
与执行
HTML_PRINT打印<img>标签效果相同。
PRINT_RECT#
绘制矩形图像。
- 当仅指定一个参数时,参数为指定的
宽度 (高度 自动填满行高)。 - 当指定四个参数时,参数分别为起点的
(x, y)座标 /宽度 /高度 。
PRINT_RECT 1000
PRINTL
PRINT 一二三四五六七八九十
PRINTL
PRINT_RECT 0, 0, 1000, 500
REPEAT 6
PRINTL
REND与执行
HTML_PRINT打印<shape type='rect'>标签效果相同。
PRINT_SPACE#
打印指定长度的空白(占位符)。
PRINT 《余 PRINT_SPACE 100 PRINT 裕》
与执行
HTML_PRINT打印<shape type='space'>标签效果相同。