【ゲーム開発のためのC#入門講座・基礎学習編】条件分岐と比較演算子を覚えよう【#5】

2022-01-061.0_C#基礎学習編

条件分岐って?

条件分岐とは、特定の条件を満たす場合のみ指定の処理を実行する命令です。

例えば選択肢を表示してプレイヤーが「はい」を選んだ時だけ指定の処理を実行したい、というような場合に使います。

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 == 1true
!=AがBとイコールじゃないかどうか判定1 != 1false
<AがB未満か判定1 < 1false
<=AがB以下か判定1 <= 1true
>AがBより大きいか判定1 > 1false
>=AがB以上か判定1 >= 1true
比較演算子一覧

大なり・小なりなどは数学的で非常にわかりやすいかと思います。

イコールかどうかの判定も「=」という記号を使っているのでわかりやすい方かなとは思いますが、「==」と二個繋げる必要があるので、そこだけ注意してください。

結果に「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型として返す演算子

それでは、今回もお疲れ様でした!

また次の記事でお会いしましょう!

Posted by yuumekou