【ゲーム開発のためのC#入門講座・基礎学習編】条件分岐と比較演算子を覚えよう【#5】
条件分岐って?
条件分岐とは、特定の条件を満たす場合のみ指定の処理を実行する命令です。
例えば選択肢を表示してプレイヤーが「はい」を選んだ時だけ指定の処理を実行したい、というような場合に使います。
if (choosedOption == "はい")
{
System.Console.WriteLine("「はい」が選択されたよ!");
}
if
から始まるこの命令のことを俗にif文と呼びます。
英文として考えても、直感的で理解しやすいんじゃないかなと思います。
<構文>
if (条件)
{
……条件を満たす場合のみ実行する処理……
}
C#では特定の範囲を示す場合、{
と}
の記号が使われます。if文で条件を満たす場合のみ実行する処理を定義する範囲も{}
で囲みます。
ちなみに、プレイヤーが「はい」を選ばなかった時の処理も設定しておきたい場面は多いですよね。if文ではこれらをまとめて記述することができます。
if (choosedOption == "はい")
{
System.Console.WriteLine("「はい」が選択されたよ!");
}
else
{
System.Console.WriteLine("「はい」が選択されなかったよ!");
}
<構文>
if (条件)
{
……条件を満たす場合のみ実行する処理……
}
else
{
……条件を満たさない場合のみ実行する処理……
}
else
というキーワードのあとに{}
で囲んだ命令を記述すると、条件を満たさなかった場合のみ実行する処理もセットで設定することができます。
そして重要なポイントとして、条件にはbool型を使います。
bool型って何?
bool
型は真偽を表すデータ種類です。
int
型は扱うデータが整数なので、整数であれば色んな値がありえますよね。
// ↓int型は色んな値を格納できる
int number = 14;
number = 353;
number = 124876;
一方bool
型は、「true」か「false」という二種類の特殊な値しか存在しないという特徴があります。
// ↓変数に格納できる値も「true」か「false」のどちらかだけ
bool isSelected = true;
isSelected = false;
真偽を表すというと堅苦しいですが、条件でいえば「true=条件を満たしている」「false=条件を満たしていない」の2パターンを表すことができるということです。
実際に先程の選択肢にあてはめてみましょう。
public class Hello{
public static void Main(){
// ↓条件の部分にtrueを設定すると……
if (true)
{
System.Console.WriteLine("「はい」が選択されたよ!");
}
else
{
System.Console.WriteLine("「はい」が選択されなかったよ!");
}
}
}
実行結果は下記の通りです。
出力エリア「はい」が選択されたよ!
条件がtrue
の場合は、きちんと「条件を満たす場合のみ実行する処理」が実行されていますね。
今度はfalse
を設定してみましょう。
public class Hello{
public static void Main(){
// ↓条件の部分にfalseを設定すると……
if (false)
{
System.Console.WriteLine("「はい」が選択されたよ!");
}
else
{
System.Console.WriteLine("「はい」が選択されなかったよ!");
}
}
}
出力エリア「はい」が選択されなかったよ!
今度は条件がfalse
であるため、きちんと「条件を満たさない場合のみ実行する処理」が実行されていますね。
このように、「~~かどうか」という二者択一なもの(true or false)を表したい場合はbool型を使います。
そしてそんなbool
型を結果として返す演算子が比較演算子です。
比較演算子って?
例の如く実際の演算子を見ると「なんだ、それか」となるものが多いので、ご安心を。
それでは実際に一覧をみてみましょう。
演算子 | 命令 | 使用例 | 結果 |
---|---|---|---|
== | AがBとイコールかどうか判定 | 1 == 1 | true |
!= | AがBとイコールじゃないかどうか判定 | 1 != 1 | false |
< | AがB未満か判定 | 1 < 1 | false |
<= | AがB以下か判定 | 1 <= 1 | true |
> | AがBより大きいか判定 | 1 > 1 | false |
>= | AがB以上か判定 | 1 >= 1 | true |
大なり・小なりなどは数学的で非常にわかりやすいかと思います。
イコールかどうかの判定も=
という記号を使っているのでわかりやすい方かなとは思いますが、C#では二個繋げる必要があるので、そこだけ注意してください。
結果にtrue
やfalse
と書いてある通り、比較演算子は判定した結果をbool型で返す演算子です。
改めて、条件分岐を見てみよう
理解するための情報が揃ったところで、先程の条件分岐をもう一度見てみましょう。
if (choosedOption == "はい")
{
System.Console.WriteLine("「はい」が選択されたよ!");
}
else
{
System.Console.WriteLine("「はい」が選択されなかったよ!");
}
条件のところで演算子==
が使われていますね。
==
という演算子は、イコールかどうかを判定するもの。つまり比較しているものが同じであればtrue
、違っていればfalse
を結果として返します。
ということは、変数「choosedOption」に格納されている文字列が、
- “はい”だったら条件が
true
になるため「条件を満たす場合のみ実行する処理」が実行される - “はい”以外だったら条件が
false
になるため「条件を満たさない場合のみ実行する処理」が実行される
ということです。
実際に変数choosedOption
に文字列を設定して確認してみましょう。
choosedOptionが”はい”の場合public class Hello{ public static void Main(){ string choosedOption = "はい"; if (choosedOption == "はい") { System.Console.WriteLine("「はい」が選択されたよ!"); } else { System.Console.WriteLine("「はい」が選択されなかったよ!"); } } }
出力エリア「はい」が選択されたよ!
choosedOptionが”はい”以外の場合public class Hello{ public static void Main(){ string choosedOption = "いいえ"; if (choosedOption == "はい") { System.Console.WriteLine("「はい」が選択されたよ!"); } else { System.Console.WriteLine("「はい」が選択されなかったよ!"); } } }
出力エリア「はい」が選択されなかったよ!
きちんと条件がイコールかどうか判定された上で、判定結果に従い処理が分岐していますね!
Unityでの活躍ポイント
今回は解説の時点で活躍ポイントが想像できる内容になっているかと思いますので、割愛させていただきます。
今回例として挙げた選択肢のほか、難易度毎に設定を変えたい時や行動の成否でその後の動きを変更したい時など、利用用途は非常に幅広いです。変数同様、よく使う命令になることでしょう。
実践演習
それでは学習した条件分岐と比較演算子を使ってみましょう。
演習①if文を使ってみよう!
仕様変数「playerHP」が0以下だったら出力エリアに「ゲームオーバー」と表示させてください。
テンプレートpublic class Hello{ public static void Main(){ int playerHP = -1; // ↓ここに条件分岐を記述しよう! // ↑ここまで } }
演習②elseも使ってみよう!
仕様
- 変数
totalAmount
が変数money
を上回る場合、出力エリアに「お金たんないよ!」と表示する- 変数
totalAmount
が変数money
以下の場合、出力エリアに「まいど!」と表示する
テンプレートpublic class Hello{ public static void Main(){ int totalAmount = 300; int money = 300; // ↓ここに条件分岐を記述しよう! // ↑ここまで } }
答え合わせ
演習①の答え
public class Hello{
public static void Main(){
int playerHP = -1;
// ↓ここに条件分岐を実装しよう!
if (playerHP <= 0) {
System.Console.WriteLine("ゲームオーバー");
}
// ↑ここまで
}
}
出力エリアゲームオーバー
演習②の答え
public class Hello{
public static void Main(){
int totalAmount = 300;
int money = 300;
// ↓ここに条件分岐を実装しよう!
if (totalAmount > money) {
System.Console.WriteLine("お金たんないよ!");
}
else
{
System.Console.WriteLine("まいど!");
}
// ↑ここまで
}
}
出力エリアまいど!
まとめ
- 条件分岐とは、特定の条件を満たす場合のみ指定の処理を実行する命令のこと
if
で特定の条件を満たす場合のみ実行する処理を、else
で特定の条件を満たさない場合のみ実行する処理をそれぞれ記述することができるbool
型は真偽を表すデータ種類。値はtrue
かfalse
の二種類しかない- 比較演算子はイコールかどうかや大なり小なりの判定結果を
bool
型として返す演算子
それでは、今回もお疲れ様でした!
また次の記事でお会いしましょう!