8.さらに高度な条件判断
この「HSP入門」もいよいよ最後が近くなってきました。あとはもう、 条件判断というスクリプトならではの機能をマスターすれば、基本的な 部分はもう終わり。あとはもう応用次第で色々なソフトを作ることがで きるようになります。
条件判断というと、何か難しい判定をしてしまいそうな予感がしますが、 それはすなわち、
「変数と数値を比べること」
なのです。そして比べた結果、別なことをする…それがスクリプトなら ではの処理であり、応用がきく点なのです。
HSPでは、条件判断をする命令は1つしかありません。この1つを覚える だけ。でもその前に、ちょっと覚えておくべきことがあります。
HSPでは、1行には1つの命令を書いて、1行目から順番に実行されていく というのがスクリプトの原則でしたが、実は、
1行に複数の命令を書いてもいい
のです。でもいままで言わなかったのは、最初からそれをやるとスクリ プトが複雑になり、見難くなるからです。これから1行に複数の命令を 書く方法を説明しますが、必要以上に1つの行に命令をつめこみすぎる と、あとで見た時にさっぱりわからないスパゲッティスクリプト(ごち ゃごちゃしたスクリプト)になりますから注意して使ってくださいね。 で、1行に複数の命令を書くには単に、
「:(コロン)」で区切れば、1行に複数の命令が書ける
のでした。つまり、
x=150
y=100
pos x,y
という3行のスクリプトも、
x=150:y=100:pos x,y
と書けば1行に収まるというわけ。これが見にくい時は、
x=150: y=100: posx,y
というように自由にスペースをあけてもかまいません。 このように1行に複数の命令を書くことは 「マルチステートメント」と 呼ばれています。これを使うと、とたんにスクリプトの密度が上がりカ ッコいい感じになります。が、くれぐれも見やすいスクリプトを目指す ようにしてくださいね。
さて、というわけで「マルチステートメント」 を覚えたところで、またまた条件判断の話に戻ります。条件判断のための、ただ1つの命令、 それは、
命令(ステートメント)パラメータ意味
if条件式条件が正しくなければ次の行にジャンプ。
正しければ同じ行のif命令以降を実行
です。「if」命令は「もし〜だったら」という条件に合致すれば、その 行にある他の命令を実行します。条件に合致しなければ、その行にある 他の命令は無視して、次の行に進んでしまいます。ここで言う、その行 にある、他の命令とはつまり「マルチステートメント」で書かれた他の 命令ということです。このために、最初に説明をしていたわけですね。
文字でごちゃごちゃ説明するよりも、実際にスクリプトを見た方が分か りやすいでしょう。たとえば、
cls
x=100
if x=100 : mes "変数xは100です。"
mes "条件判断終わり"
stop
のように書きます。この例だと、3行目の「if」命令で変数xの内容が100 だった時にだけ、「変数xは100です。」というメッセージを表示するこ とになります。「if」命令はだいたい次のようなスタイルで使われます。
if 条件式 : 条件が正しい時に実行される命令
ここで条件式という謎の単語が出てきました。それはつまり、
条件式意味
変数名 = 数値
変数名 ! 数値
変数名 < 数値
変数名 > 数値
変数の内容と数値が同じである
変数の内容と数値が同じではない
変数の内容より数値の方が数が大きい
変数の内容より数値の方が数が小さい
このようなものです。条件式によって、変数と数値を比べる条件を指定 するのです。条件判断の基準が、
hen<10
ならば、変数henの内容は10より小さいか? になるのです。 これで条件判断をすることで、いったい何ができるのでしょうか?? たとえば、これと「goto」命令を組み合わせることにより、指定した回 数だけ同じことを繰り返すループを作ることができます。
kai=0
*kuri
mes "くりかえすよー。"
kai=kai+1
if kai < 10 : goto *kuri
上の例では、変数kaiの内容を1づつ足していき、10になるまで「goto」 命令によって同じ場所を繰り返すようになっています。これを実行させ ると、「くりかえすよー」というメッセージが10個表示されます。これ が、条件判断を使った1つの例。もう1つ別な例を見てみましょう。
cls
kai=0
mes "ボタンを押してね"
button "PUSH",*gopush
button "END",*goend
stop
*gopush
kai=kai+1
stop
*goend
if kai > 0 : goto *owari
mes "せめて1回は「PUSH」ボタンを押してよ"
stop
*owari
cls
mes "あなたは、"+kai+"回「PUSH」ボタンを押しましたね"
stop
この例では、「PUSH」と「END」という2つのボタンが表示され、「END」 のボタンを押すと、それまでに「PUSH」を押した回数を表示するという ものです。ただし、「PUSH」を1回も押さないうちに「END」を押した時 には、「せめて1回は「PUSH」ボタンを押してよ」と注意を促すメッセ ージが表示されるように条件判断をしています。
このように変数とからめて、特定のメッセージを読んだか? ボタンを 押したか? などを判断する時などにも使用することができます。
このように条件判断を使うことで、より高度なスクリプトを書くことが できるようになります。簡単なアドベンチャーゲームなどを作る時にも 欠かせない命令です。
HSPの命令はまだまだたくさん用意されていますが、ここまで覚えてき た命令を使うだけでも、ランチャーやCG集などメディアブラウザ、アド ベンチャーゲームなど色々なソフトが作れるはずです。まずは、基本を しっかり覚えて無理のない範囲でスクリプトを作っていきましょう。
さあ、これでスクリプトの書き方の基本はだいたい説明してしまった わけですが、HSPにはまだまだ多彩な命令と使い方があります。 それは…また別な機会にお話ししましょう。

最終章へ