条件分岐:スクリプト

 2009-12-29
ちょっと複雑なことをしようとすると、
ネストしすぎてピラミッド大きくなっていませんか?

左の空いたスペースが勿体無い。そう思ったことは?

思い切ってスクリプト使ってみません?



条件分岐は、指定された条件に合致しているかで処理を分けることができます。
スクリプト的に言うと、一致しているときを 真(true) 一致しないときを 偽(false) で表します。
このような、true,false を真理値といいます。

例えば、スイッチのONの場合は、スイッチがtrueという真理値を持っています。
これに対してEV変数は、数値を持っています。初期状態では 0 です。

さて、条件分岐は真理値によって分岐しています。
条件分岐:スイッチ [0001] == ON
これをスクリプトで書くと次のようになります。
$game_switches[1] == true

条件は、このように ある値A [記号] ある値B のように記述し、
この2つの値を比較した結果に応じて、真理値を返すようになっています。
この真理値がtrueだった場合は、そのまま処理を実行し、
falseだった場合は、「:それ以外の場合」の部分を実行するというわけです。
で、この記号を比較演算子とかいうのですけど、そういうのはいいです。
覚えて欲しいのは、その種類ですね。
EV変数の値で条件分岐するときの条件と合わせて考えてもらうといいと思います。
A == B : AがBと等しい(と同値)
A != B : AがBとは異なる(以外)
A < B : AがBより小さい(未満)
A > B : AがBより大きい(超)
A <= B : AがB以下(以下)
A >= B : AがB以上(以上)

こう見ると何だか気持ち悪い。。。
ツクールの比較は自分と考えが逆だ。
例えば、A==B:BがAと等しい。A<B:AよりBが大きい。A>=B:BがA以下。
わかるかな?「Aが」か「Bが」かの違い。。。


では、イベントコマンド「条件分岐」の処理をスクリプトに変換していきたいと思います。
このスクリプトは、4ページ目のスクリプトという項目に記入すると同じように動作します。

条件分岐:スイッチ [0001] == ON
$game_switches[1] == true
条件分岐:スイッチ [0003] == OFF
$game_switches[3] == false

条件分岐:変数 [0001] == 0
$game_variables[1] == 0
条件分岐:変数 [0001] > 0
$game_variables[1] > 0
条件分岐:変数 [0001] != 変数 [0002]
$game_variables[1] != $game_variables[2]

条件分岐:セルフスイッチ A == ON
$game_self_switches[[@map_id, @original_event_id, "A"]] == true
# @original_event_id : このイベントという意味
# 数値で指定すれば、別のイベントのセルフスイッチも変更できる
$game_self_switches[[@map_id, 3, "B"]] == true

条件分岐:タイマー 0 分 10 秒 以上
$game_system.timer >= 600
条件分岐:タイマー 1 分 0 秒 以下
$game_system.timer <= 3600
数値は、フレーム数で指定します。
ウェイトを設定するときと同じですね。
デフォルトでは、1秒=60 となっています。
秒数 * 60 をしてあげてください。


まぁ、こんな感じです。
条件をネストさせすぎるとピラミッドが大きくなっちゃって見難いってときは、
スクリプトを使用すると小さく出来ます。
&& もしくは、and を使います。A && B のようにして、AとBの値は真理値にします。
A == 3 && B < A && C == true のような感じ。

条件分岐:スイッチ [0001] == ON
 条件分岐:スイッチ [0002] == ON
  条件分岐:スイッチ [0003] == ON
$game_switches[1] && $game_switches[2] && $game_switches[3]
スイッチは元々、真理値なんで比較演算子を使う必要はありません。

条件分岐:変数 [0001] >= 1
 条件分岐:変数 [0001] <= 10
$game_variables[1] >= 1 && $game_variables[1] <= 10
もしくは、
(1..10) === $game_variables[1]

変数が特定の値のときのみ "ほげほげ" を実行したい場合
条件分岐:変数 [0001] == 1
 ラベルジャンプ:ほげほげ
:分岐終了
条件分岐:変数 [0001] == 6
 ラベルジャンプ:ほげほげ
:分岐終了
条件分岐:変数 [0001] == 24
 ラベルジャンプ:ほげほげ
:分岐終了
[1,6,24].include?($game_variables[1])

コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/344-f179c8e7
≪ トップページへこのページの先頭へ  ≫
カレンダー
01 << 2017/02 >> 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -

カテゴリー
最近の記事
02/14 お返事
01/21 お返事
01/12 更新情報
11/28 お返事
08/08 お返事

最近のコメント
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事
02/24 お返事

タグクラウド

リンク