RPGツクールと数学のブログ

RPGツクールと数学についてのブログです。

相互変換モジュール 長い文章をコピペする

過去ブログの転載です。

RPGツクール200Xで、長い単調な文をコピーする例です。相互変換モジュールを用いています。

#include "rpgfunc.as"

;-------------------------------------------------
r={"
学校から帰ってきたベイ助は、
またすぐに外へ走っていった。


今日は何か祭りがあるわけでもないし、
有名な人がやって来るわけでもない。


人混みがあまり好きではないベイ助は、
そんなことよりむしろ友達と遊ぶ方が好きなのだ。


クー太
「おーっ、よく来たねっ! 上がって上がって!」


ベイ助と同い年のクー太は、キーア族の長の弟だ。



人見知りの激しいキーア族と、
ベイ助はうまく付き合っていっている方である。


ベイ助
「今日は森が明るくて歩きやすかったよっ。
 もう道覚えちゃった」

クー太
「ホント? じゃあ……
 今日はボクが森を案内してあげよっか」

ベイ助
「えっ、いいの? やったぁ、行く行く!」


ベイ助にとって、昔から年上のライ太やベイ太は
友達みたいなものだったが、同い年のクー太と
仲良くなってみると、それまでの友達とは
何か違う気がして、魅了されていった。
"}

notesel r
repeat (notemax+3)/4
    z=""
    for i,0,4
        noteget k,cnt*4+i
        z+=k+"\n"
    next
    msg z
loop
send

4行おきに取り出して、文章の表示として出力するサンプル。長い長いお話を作るときは多少は使えるかもしれません。ただし、たとえば\N[1]を書くときは\\N[1]としなければならないので考え物ではありますが……

これは短いので、各行の説明をしてみましょう。

3行目の「;-------------------------------------------------」は、ただの目印です。全角25字までしか入力できないので、その区切りが見やすいように書いただけです。

r={"
~~
"}

というのは、r="~~" と同じで、複数行の文字列を代入するときの記法です。こうすれば、随筆する要領で書けますよね。

notesel r で、rをバッファに指定します。こうすれば、メモリノートパッド命令でrを使うことが出来ます。

repeat (notemax+3)/4 ~ loop で、(notemax+3)/4回繰り返し。notemaxはrの行数で、それをそれぞれ4行ずつ取り出すので、notemax÷4を切り上げた回数だけ繰り返します。A、Bを自然数とすると、A÷Bの切り上げは、(A+B-1)÷Bの切り捨てと同じなのですよ。だから、notemax÷4の切り上げは、(notemax+3)÷4ですので、回数をそう指定しています。

z="" で、出力用の文字列zを初期化

for i,0,4 ~ next は、繰り返しです。
BASICでいう、FOR I=0 to 3 ~ next
Cでいう、for(i=0;i<4;i++){ ~ } です。
変数iに0を代入し、nextまで行くとiに1を加算します。i<4であれば、forの始めに戻って繰り返します。つまり、4回繰り返すということです。repeat 4と同じですが、変数がcntでかぶるので、こうしています。

noteget k,cnt*4+i は、rのcnt×4+i行目を取り出してkに代入する命令です。cntはrepeat~loop内での現在の繰り返し回数なので、イベント命令を出力した回数と等しくなります。1個出力するごとに4行ずつ進んでいきますから、cnt×4としています。4行分取り出すため、cnt×4、cnt×4+1、cnt×4+2、cnt×4+3行目をそれぞれ取り出す必要があります。i=0~3ですから、cnt×4+iと書けば、それぞれの行が取り出せるようになりますね。

z+=k+"\n" で、zに取り出したkを加算、改行します。「\n」は改行の印です。

できあがったzを、msg z を使って文章の表示として出力。最後にsendすれば出来上がりです。

そういうプログラムですよこれは。