コンテンツへスキップ

【C# の基本】レッスン4:② switch 文と多分岐


概要

ここでは、switch 文について学習します。switch 文は以下のような構文をとります。

switch( 変数 )
{
    case 値1:
        // 処理1
        break;
    case 値2:
        // 処理2
        break;
    case 値3:
        // 処理3
        break;
    default:
        // 処理4
        break;
}

switch 文の処理の流れは下図のようになります。②で、どのプログラムが実行されるか振り分けられます。変数の値を満たす case が実行されます。いずれの条件も満たさなかった場合、default の中のプログラムが実行されます。またいずれの場合も、break 文を末尾に書く必要があります。

lesson4-2-1

STEP1:C# プログラム(ファイル)を追加する

こちらの記事を参考にして、コンソールアプリ(プロジェクト名:Lesson4)に C# プログラム(ファイル名:Lesson4_2)を追加します。

STEP2:プログラムを記述する

Lesson4_2.cs のプログラムを下記のように変更します。

namespace Lesson4
{
    public static class Lesson4_2
    {
        public static void Text1()
        {
            int saikoro = 3;
            switch(saikoro)
            {
                case 1:
                    Console.WriteLine("サイコロの目は 1 です。");
                    break;
                case 2:
                    Console.WriteLine("サイコロの目は 2 です。");
                    break;
                case 3:
                    Console.WriteLine("サイコロの目は 3 です。");
                    break;
                default:
                    Console.WriteLine("サイコロの目は 1, 2, 3 以外です。");
                    break;
            }
        }
    }
}

Program.cs のファイルの中身を下記に置き換えます。

namespace Lesson4
{
    public class Program
    {
        public static void Main(string[] args)
        {
            /*
            Lesson4_1.Text1();
            Lesson4_1.Text2();
            */

            Lesson4_2.Text1();
        }
    }
}

STEP3:動作を確認する

switch 文の動作を確認できたでしょうか。分岐が3つ以上の場合(上記のサイコロの目のプログラムの分岐は4)は、switch 文の方が実行速度が速い可能性が高く、またプログラムも見やすいと思います。if 文と switch 文を上手に使い分けてみてください。

課題① – 1:数字を押すとプレイヤーの色が変わる

「PlayerController.cs」ファイルの 59行目付近の「Update」メソッドを編集します。赤枠のプログラムをコーディングしてください。キーボードの「1」が入力されたら「緑色」、「2」が入力されたら「赤色」、「3」が入力されたら「黒色」に、プレイヤーの色を変えたいと思います。

lesson4-2-2
if (Input.anyKeyDown)
{
    string keyStr = Input.inputString; // 入力されたキーの名前を取得
    switch(keyStr)
    {
        case "1":
            spriteRenderer.material.color = Color.green;
            break;
        case "2":
            spriteRenderer.material.color = Color.red;
            break;
        case "3":
            spriteRenderer.material.color = Color.black;
            break;
    }
}

コーディングができたら、Unity でゲームを実行してみてください。キーボードの数字 1~3 を押すとプレイヤーの色が変わりましたか?

4

このように switch 文では文字を比較して処理を振り分けることができます。とても便利ですよね。

次に進む

次は、else if 文を使った多分岐について学びます。