過去ブログの転載です。
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すれば出来上がりです。
そういうプログラムですよこれは。