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

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

相互変換モジュール HSPの簡単な使い方2

過去ブログの転載です。

前回の補足からです。

kane = 3000
mes "貴方の所持金は" + kane + "円です。"

↑文字列の連結は「+」を使えば良いので、このように書けば「貴方の所持金は3000円です。」と表示されますね。変数のkaneは整数型ですが、文字列型から始まった文章なので、以降はすべて文字列型として見なして表示を行います。

ですから、

mes "計算:1+1=" + 1+1

↑このようにしてしまうと「計算:1+1=」が文字列型ですので、直後の1も文字列型として、連結されてしまいます。「計算:1+1=11」というおかしな表示になってしまいますね。

これを防ぐには、数式部分を括弧で覆ってやればよいでしょう。

mes "計算:1+1=" + (1+1)

こうすれば、括弧内が先に計算をされますので、計算結果の2が出てから、その2が文字列型として連結されます。「計算:1+1=2」と表示されますね。

はじめの型に優先されるので、文字列のつもりで書いていても整数から書き始めてしまうとそれは整数型として見なされてしまいます。

a = 5
mes a + "個の卵"

↑これを実行すると「5」と表示されます。初めのaには「5」が代入されており、これは整数型ですから以降も整数型と見なされるので、「個の卵」も整数と見なされるのです。しかしこれは数じゃないので、無視されるわけです。これを防ぐには、初めに文字列型をとりあえず置かなければなりません。

a = 5
mes "" + a + "個の卵"

↑何もない文字列「""」を初めに置いてやれば、以降は文字列型と見なされるので、
これはちゃんと「5個の卵」と表示されることになります。

ちょっと分かりづらい所ですので、慣れておきましょうね。

また、「;」か「//」を入れると以降のその行がコメント欄になります。複数行をコメント欄にしたいときは、「/*」「*/」で挟みます。

mes "メッセージ" ; これはコメント
mes "なのです" // ここもコメントになる
/*
mes "あれれ"
mes "ここは表示されないようだ"
*/
mes "↑このように、複数行をコメントアウトしておくこともできる。"

コメントの部分は緑色の文字で表示されます。

補足おしまいです。これから色々な命令を扱っていきましょう。

repeat 5
    mes "ベイ助"
loop

相互変換するときの強みの一つ、repeat文です。for文より簡単な繰り返し命令です。↑この場合は、「repeat」から「loop」までの間を5回繰り返すという意味になります。実行してみてくださいね。5回繰り返されているでしょう。また、mesの行の先頭に半角スペースなどありますが、見やすさのためにずらしているだけなので、あってもなくても構いません。こういうのをインデントといいます。スペースじゃなくてタブでもいいです。

repeatの直後にある「5」を省略してしまうと無限ループになってしまうので、注意してください。無限ループになるとプログラムが固まってしまうので、強制終了しなきゃいけなくなります。

repeat 5
    mes cnt
loop

↑「cnt」とはシステム変数の一つで、繰り返しのたびに増えていく値です。繰り返し初めはcnt=0から始まり、loopまで行ってrepeatに戻るたびに1ずつ増えていきます。ですから、上のプログラムを実行すると0、1、2、3、4と表示されるわけです。

もしcnt=0からではなく別の値から開始させたい場合は、

repeat 5, 7
    mes cnt
loop

↑このように表記します。2番目の引数に、cntの初期値を入れます。すると、この場合はcnt=7から始まるので、7、8、9、10、11と表示されます。

このcntをうまく利用することで、ツクールで単純な大量のイベント命令を作るのが非常にラクになります。

次は条件分岐です。

a = 7
if a = 7 {
    mes "OK!"
}
mes "分岐終了"

↑「if」が条件分岐の命令です。ifの直後に条件式を入れ、もしその条件式が正しいのであれば、括弧内へ処理が進むことが出来ます。正しくなければ括弧をスルーします。この場合はa=7で正しいので、「OK!」「分岐終了」と表示されますが、最初の代入でa=6とかにすると、「分岐終了」とだけ表示されることが分かると思います。

【比較演算子

=  等しい
!  等しくない
>  より大きい
<  より小さい
>= 以上
<= 以下

ツクール2000にもあるように、条件分岐では「それ以外の場合」の処理も考えられます。

a = 3
if a >= 5 {
    mes "aは5以上だね!"
}
else{
    mes "aは5より小さいらしい……"
}

↑「それ以外の場合」の処理を作るときは、ifの括弧の後に「else」を入れます。elseの括弧内が、条件に当てはまらなかった場合に行われる処理ということです。この場合はa=3ですから、a≧5の条件を満たさないので、elseの中に入ります。C言語にある「else if」は使えませんよ。注意しましょうね。

また、複数の条件式を一つのifで扱いたいときは、「&」「|」といった演算子を用います。

a = 7
b = 9
if a = 7 & b = 9 {
    mes "OK!"
}
mes "分岐終了"

↑このようにすると、a=7かつb=9であれば「OK!」と表示されます。どちらか一方の条件が満たされなければ、括弧内には入れません。

a = 7
b = 8
if a = 7 | b = 9 {
    mes "OK!"
}
mes "分岐終了"

↑今度は「|」です。a=7またはb=9であれば「OK!」と表示されます。どちらか片方でも条件が満たされていれば括弧内に入れますから、上のプログラムのようにb=9の条件は満たしていなくとも、a=7の条件が満たされているので、括弧内に入ることができるわけです。

もう最低限のことは出来ると思います。次からモジュールを使ったイベント命令生成の説明をしていきます。