挑战TJS section 0.2:写脚本之前的准备

挑战TJS section 0.2:TJS环境的安装、第一个TJS脚本。

正篇

原文链接:Section 0.2 スクリプトを書く準備をする

Yuu:下面马上来写一个TJS脚本吧!虽然我想这么说。。。但是我们需要先做一些准备。
Yuni:首先,你需要下载吉里吉里。译者注,之后的内容原则上吉里吉里会使用krkr来代替。
Yuu:嗯。首先请从KiriKiriZ的网站下载。链接是kr2_232r2.zip (吉里吉里2 SDK ダウンロード)。也可以从本网站上下载:kr2_232r2.zip. 译者注:原文给出的下载链接已经挂了,现在可以在KiriKiriZ的网站上找到KiriKiri2的最后一个SDK。另,原文提到的版本是kr2_228。
Yuni:是“kr2_232r2.zip”吗?
Yuu:没错。如果你使用更早的版本,之后的一些脚本可能不会正常运行。因此请一定使用“吉里吉里2 SDK version 2.28 / KAG3 version 3.28”以上的版本。另外,对于新发布的版本,就算是开发中的版本也可以哦。
Yuni:好好~
Yuu:下面,将下载的压缩包解压到合适的位置。
Yuni:嗯~
Yuu:在解压之后,请先读一下readme.txt和license.txt,并且认真阅读其内容。
Yuni:Ok,了解啦。
Yuu:另外,当编写TJS脚本的时候,我们经常会参考TJS和krkr的参考文档。它们分别位于tjs2dockr2doc目录中。

Yuu:好啦,下面要创建一个项目目录。目录的名字只要合理,是什么都可以。我这里就使用C:\tjs作为项目目录。译者注:项目文件夹在测试的时候建议用比较简短的英文名称。
Yuni:下面将krkr中的kag3模板目录复制到项目目录中对吧?
Yuu:不,一开始我们将脱离KAG来编写代码,因此现在我们不需要模板目录中的任何文件。
Yuni:哦,是这样吗?
Yuu:嗯呐。我会复制尽可能少的必需文件。
Yuni:好吧。所以说我们应该复制什么文件过去?
Yuu:首先是kirikiri2目录中krkr.exe。没了它就没了全部。
Yuni:是呢。
Yuu:之后在项目目录中创建一个名为“data”的目录,并且从模板目录kag3中复制startup.tjs到新建的目录中。译者注:原文创建的是名为“test”的目录,这里使用“data”可以减少一些操作。
Yuni:Okay,然后呢?
Yuu:这就完成啦。
Yuni:就这么点?
Yuu:没错,因为现在就可以运行TJS脚本了。
Yuni:原来如此。那,这样可以了吗?

Yuu:嗯,这样OK。下面,打开startup.tjs
Yuni:这个就普通地打开?
Yuu:对,因为它就是个文本文件。它可以使用任何的文本编辑器打开,比如记事本。译者注:不要使用Word编辑。正常打开文件可能会出现乱码,这是因为原文件使用日语编码(SHIFT-JIS),与中文编码(GBK)不兼容。不过英文部分是兼容的,并且原来的内容也不需要。详见下文。
译者再注:Windows环境下,如果使用记事本进行编辑,保存的时候请使用ANSI编码。如果使用其他文本编辑器,例如Sublime Text、UltraEdit等,保存时请务必使用GBK编码,否则后面运行时会报编码错误。
Yuni:好啦,我打开了。
startup.tjs的内容基本如下所示:译者注:为了使用语法高亮,我这里指定TJS脚本的语言为JavaScript。虽然它长得像JavaScript,但是两者还是有区别的。这点请知悉。

// startup.tjs - スタートアップスクリプト
// Copyright (C) 2001, W.Dee  改変・配布は自由です
// このスクリプトは一番最初に実行されるスクリプトです
Scripts.execStorage("system/Initialize.tjs"); // system/Initialize.tjs を実行

Yuni:额,这里有些我看不懂的东西。。。(无论是语言上还是语言上)
Yuu:哦,即使不懂脚本的含义也不要紧的。不过,startup.tjs记录了最先被执行的脚本,正如注释中所示。译者注:并且,startup.tjs也是最先被执行的文件。
Yuni:了解<( ̄︶ ̄)>
Yuu:emmm,下面请把文件中的全部内容删掉。
Yuni:啥?就这么删了?
Yuu:对啦。这些内容是为KAG准备的脚本。然而我们现在不用KAG,因此删掉它也无所谓的。另外,删掉之后记得加上这么一句。
/第一个脚本/

System.inform("TJS的挑战!");

Yuni:嗯,保存啦。
Yuu:下面,开始执行这段脚本。将data文件夹拖拽到krkr.exe上并松开鼠标。译者注,因为前面我们将脚本目录名称设置成了data,这里可以直接双击运行。
Yuni:明白。通过拖拽+放置文件夹就可以执行脚本。
/执行结果/

Yuni:哦,一个消息框显示出来了!
Yuu:这就对啦。你很好地完成啦。
Yuni:之前的脚本可以显示一个消息框吗?
Yuu:是的。不过我会在下次进行一个详细的介绍。到现在,TJS脚本已经可以正常地执行了。这次就到这里啦。
Yuni:这就结束啦。
Yuu:嗯。刚开始的时候要戒骄戒躁,稳扎稳打慢慢来。
Yuni:嗯,知道啦。
Yuu:那么,下次见啦!

技术总结

  1. krkr.exe是核心的运行文件,脚本通常放在“data”文件夹中。如果脚本所处文件夹不叫“data”,那么需要将文件夹拖放到krkr.exe上。

  2. startup.tjs是程序第一个执行的脚本。在一个脚本中,程序通常是顺序从上到下执行的。这一点与其他编程语言相同。

  3. 脚本文件的文字编码需要使用和当前编码页相同的编码。如果使用记事本编辑,保存的时候请选择“ANSI编码”。如果使用其他编辑器,保存的时候请选择GBK编码。如果使用下面提到的Java解释器运行脚本(比如在Mac系统上),保存的时候请选择UTF-8编码。

  4. System.inform(String)可以显示一个消息框,内容是指定的字符串。后面会有关于类型的详细介绍。

krkr的Java解释器

除了直接运行krkr.exe,还有一个Java版本的解释器可以使用。它叫做“羽々斬”。虽然不是官方版本,但是基础的功能它还是都支持的。因此,我们可以使用这个Java解释器代替krkr.exe运行,尤其是对于非Windows系统。

准备

首先我们需要安装一个Java环境,JavaSE 1.8版本以上都可以满足要求。由于文件数量比较多,推荐使用集成开发环境(IDE)执行代码。比如Eclipse、Intellj IDEA。

下载源代码并建立项目

我们可以从Github中下载源代码,网址是habakiri/habakiri。然后我们新建一个项目,并导入下载的源代码(比如吧下载的压缩包解压后复制到项目文件夹中)。根据IDE的标记,我们需要将其中的core、desktop和JOrbis目录中的src目录设置为Java源代码目录,andriod目录下的src目录不要设置为源代码目录。(因为我们没有安装Android库,编译项目会报错。)

修改编码

编辑“core/src/jp/kirikiri/tvp2/base/Storage.java”程序的480行,将encodeType改成"UTF-8"

else {
    // 開き直してシークする
    stream.setPosition(ofs);
    // encodeType = "MS932";
    encodeType = "UTF-8";
}

krkr项目目录

Habakiri解释器使用的项目目录必须是“解释器根目录/data”。如果想要更改,请修改“jp.kirikiri.tvp2env.ApplicationSystem#initializeDataPath()”方法。

运行本篇教程中的脚本

在“解释器根目录”,也就是“core”、“desktop”所在目录处建立一个“data”目录,目录内是我们先前写好的startup.tjs脚本。
然后找到“desktop/src/jp/kirikiri/tvp2env/Main.java”,运行它,就可以编译并执行我们写好的脚本了。
注意,使用Habakiri解释器时,脚本务必使用UTF-8编码。项目中有的程序有SHIFT-JIS编码部分,在UTF-8下会无法显示,请忽略它们,并且不要设置为SHIFT-JIS编码。虽然这样可以解决乱码问题,但是这通常会带来编译失败。

导航

上一篇:挑战TJS section 0.1:关于挑战
下一篇:挑战TJS Section0.3:建立目标
挑战TJS系列

2 评论

留下评论