ゲームを作成していくと、次のような因果関係を作りたくなることがあります。
- プレーヤーが 10 ポイントを獲得した場合、そのプレーヤーが勝利となります。
- プレイヤーがパワーアップを持っている場合、彼らは超高速で走ることができます。
- プレイヤーがチャットで「ハッピーバースデー」と言うと、輝きが現れます。
これらの関係にはすべて、特定の条件が true(真/正しい)になっている場合にのみ実行される条件文が必要です。条件ステートメントの 1 つに、if ~ then があります。「if」は日本語で「もし」に相当し、「then」は「だったら」という意味になります。『もし〇〇が△△だったら、××をする』という感じになります。
ステートメントとは?
プログラムの構成単位となる、一つ一つの手続きや命令、宣言などのことをステートメントあるいは「文」と言います。
if文の練習
if 文を使ったプログラムを作成してみましょう。プログラムでは、3 + 3 = 6 などの条件が真の場合、パーツの色が変わります。
パーツとスクリプトの設定
BaseplateまたはClassic Baseplateを開きます。
- ServerScriptServiceで、 IfThenScriptという名前の新しいスクリプトを作成します。いつものように1行目のprint文を削除し、説明的文をコメントで入れておきます。
- 「IfThenPart」という名前の新しいパーツを作成します。
if ステートメントの開始
if 文はキーワード「if」で始まります。日本語で「もし」です。その後に条件式が続きます。条件にはさまざまな形式がありますが、多くの場合、数式のような単純なステートメントです。その条件が true の場合、コードは引き続き実行されます。
- IfThenScript で、キーワード「if」を入力します。
-- ある条件が成立した場合に、その部分を変更する
if
2.キーワードの直後に、「3+3 == 6」など、「真」になるステートメントを入力します。この部分を「条件式」と言います。3+3は6になりますから「真」になりますね。常に真になるものをif文にすることはないのですが、今回はあくまで練習ということでこのようにしています。
-- ある条件が成立した場合に、その部分を変更する
if 3 + 3 == 6
if ステートメントで比較を行うときは常に「==」を使用して、2つの値が等しいかどうかを確認できます。1つの「=」は「代入」を意味しますので比較することができません。比較は「==」、代入は「=」です。
ステートメントのコーディング
条件が真になった場合に実行するプログラムが必要になります。
- 「if 3 + 3 == 6」まで入力し、Enterキーを押すと自動的に「then」と「end」が入ります。
-- ある条件が成立した場合に、その部分を変更する
if 3 + 3 == 6 then
end
- 真になった場合に実行するプログラムは、この「then」から「end」の間に記述します。今回は、「game.Workspace.BrickName.Transparency = 0.5」とパーツ半透明にするプログラムを入力します。
-- ある条件が成立した場合に、その部分を変更する
if 3 + 3 == 6 then
game.Workspace.IfThenPart.Transparency = 0.5
end
- テスト実行してみます。パーツが半透明になったら成功です。
トラブルシューティング
パーツが半透明にならなかった場合は、次の項目を確認してください。
- if、then、およびendのキーワードが半角の小文字になっていますか?
- 「=」ではなく、「==」になっていますか?
偽の状態をチェックする
条件が一致しない、つまり「偽/間違い」にした場合はどうなるのかを確認してみましょう。
- if ステートメントで、「3+3==10」などと、条件が不一致(偽)するような式を入れてみましょう。
-- ある条件が成立した場合に、その部分を変更する
if 3 + 3 == 10 then
game.Workspace.IfThenPart.Transparency = 0.5
end
- テスト実行してみましょう。今度は半透明にならないはずです。
条件式が「偽」になる場合「 game.Workspace.IfThenPart.Transparency = 0.5」が実行されないからです。
その他の比較
すべての if ステートメントの条件が単純な加算になるわけではありません。2つの数値が等しいかどうかを確認する代わりに、乗算、加算、減算、またはその他の比較を行うこともできます。
以下は、可能な数学および比較演算子のいくつかの例です。これらは、次のオプションの課題に使用できます。
数学演算子
記号 | 意味 |
---|---|
+ | 加算 |
– | 減算 |
* | 乗算 |
/ | 除算 |
% | 除算の余り |
比較演算子
記号 | 意味 |
---|---|
== | 等しい |
~= | 等しくない |
< | それより小さい |
> | それより大きい |
<= | それ以下 |
>= | それ以上 |
条件式の例
次のような文章を条件式で記述するとこのようになります。
- 数値が 10より小さい場合
myNumber < 10 - 数値が 200 より大きいか同じの場合
myNumber >= 200 - 数値が10 でない場合
myNumber ~= 10
変数とプロパティ
条件文は、プロパティと変数のステータスを評価するためにも使用されます。次の手順では、変数に値が正常に割り当てられたかどうかを確認します。
- コードをすべて削除し、次のスニペットをスクリプトにコピーします。テストすると、出力に新しいエラーが表示されます。
local mysteryPart = workspace.MysteryPart
-- MysteryPart に何か入っていた場合、真になる
if mysteryPart then
workspace.LieDetector.Color = Color3.fromRGB(0, 255, 0)
end
- MysteryPart という名前のワークスペースに新しいパーツを挿入します。もう一度テストすると、LieDetector が緑色に変わるはずです。
- 条件を使用してプロパティを評価する方法を調べます。MysteryPart はそのままにしておきますが、もう一度コードを削除し、下のコード ボックスをコピーします。
local mysteryPart = workspace.MysteryPart
-- MysteryPartが完全な不透明の場合、真になる
if mysteryPart.Transparency == 0 then
workspace.LieDetector.Color = Color3.fromRGB(0, 255, 0)
mysteryPart.Transparency = 0.2
end
- コードをテストすると、MysteryPart のデフォルトの透明度が 0 の場合、LieDetector が緑色に変わると同時に幽霊のようになります。
まとめ
条件文は、あるステートメントが正確かどうかをチェックし、正確であればコードを実行しまう。If文は、条件文の非常に一般的なタイプです。条件文は、”もしこれが真なら、それを実行する “という処理を行います。
条件文を使ったコードは制御構造と呼ばれます。制御構造は複数の条件文を保持することができます。
単純な計算文が事実かどうかを評価するだけでなく、条件文は変数やプロパティの状態をチェックするためにも使われます。
[ 2-4 複数のパラメータと引数 ]
2 thoughts on “3-1 if ステートメントの概要”
コメントを残す コメントをキャンセル
コメントを投稿するにはログインしてください。
こんにちは
お世話になっております。
順調に動画撮影を進めています。
さて、LieDetectorですが、パーツとして追加するのでしょうか?
書いてあるように実行すると「LieDetectorが見つからない」とエラーになりました。
はい。パーツです。
Workspace に パーツを1つ追加し、名前を「LieDetector」にします。