零基础开发 era 游戏 #7 输出

这里主要指 era 游戏的核心:文本输出。(至于图像输出的细节,之后再来探索吧
即「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 这个命令,指定强制输出的假名Kana形式:

  • 0:不进行转换
  • 1:将平假名(ひらがな)转换为片假名(カタカナ)
  • 2:将 全角的 片假名(カタカナ)转换为平假名(ひらがな)
  • 3无论全角还是半角一律 将片假名(カタカナ)转换为平假名(ひらがな)
@TEST_PRINTK
    PRINT 未进行转换时:
    PRINTK あいうえお / アイウエオ

    PRINTL

    PRINT 平假名自动转换为片假名:
    FORCEKANA 1
    PRINTK あいうえお / アイウエオ

    PRINTL

    PRINT 片假名自动转换为平假名:
    FORCEKANA 2
    PRINTK あいうえお / アイウエオ

D(Default)

无视 SETCOLOR 命令设置的新颜色,仍然显示为配置文件中设定的默认颜色Default

换行修饰符 |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
    WEND

PRINTBUTTON 系#

可用的修饰符为 |C|LC

打印一个可以交互的按钮。有两个参数,分别是:

  1. 按钮显示的内容:只能为字符串
  2. 按钮的值:可以为数值或字符串
@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
    WEND

PRINTPLAIN 系#

可用的修饰符为 |FORM

有一个隐藏的特性是:当你打印的内容里有 [数字] 这样的格式、当前屏幕又存在 INPUT 系列命令(输入等待)时,会被自动识别为按钮,方括号里面的内容就是按钮的值。

PRINT [1] 被解析为按钮了
PRINTL
PRINT [2] 被解析为按钮了
PRINTL
PRINTPLAIN [3] 不会被解析为按钮
INPUT

PRINTPLAIN 可以强制只打印原本的内容(不会被错误地解析)。

其他#

CUSTOMDRAWLINE#

以自定义的内容作为分割线:

CUSTOMDRAWLINE *---
DRAWLINE

DRAWLINEFORM#

解析自定义的内容后作为分割线:

@TEST_DIVIDER
    #DIMS char = "=-="
    DRAWLINEFORM *-%char%-
    DRAWLINE

REUSELASTLINE#

参数可以接受类似 FORM 修饰符的内容。

在当前的 最后一行 添加一段 临时 信息。
在这条命令之后的任何其他输出都会让这段临时信息消失。

$INPUT_LOOP
INPUT
IF RESULT != 0
    CLEARLINE 1
    REUSELASTLINE 输入的指令无效,请输入 0 退出。
    GOTO INPUT_LOOP
ENDIF

CLEARLINE#

删除在这条命令之前打印的、指定行数的内容。

一般配合 LINECOUNT(当前总共已经打印的合计行数)实现清屏效果。
或是在 INPUT 系列命令后直接 CLEARLINE 1 清除上一行(自动回显的输入结果)。

简单的图像输出#

打印指定图像。

在此之前需要先通过 ./resources/ 目录下的 *.csv 文件加载对应图片。
(此时指定的「图像」也被称作「sprite」。)

PRINT_IMG "SpriteName"

与执行 HTML_PRINT 打印 <img> 标签效果相同。

绘制矩形图像。

  • 当仅指定一个参数时,参数为指定的宽度Width高度Height自动填满行高)。
  • 当指定四个参数时,参数分别为起点的 (x, y) 座标 / 宽度Width / 高度Height
PRINT_RECT 1000

PRINTL

PRINT 一二三四五六七八九十

PRINTL

PRINT_RECT 0, 0, 1000, 500

REPEAT 6
    PRINTL
REND

与执行 HTML_PRINT 打印 <shape type='rect'> 标签效果相同。

打印指定长度的空白(占位符)。

PRINT 《余
PRINT_SPACE 100
PRINT 裕》

与执行 HTML_PRINT 打印 <shape type='space'> 标签效果相同。

lackbfun © 2021 - 2024