0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unity学習記録 #008 繰り返し(do while文)

Posted at

繰り返しに使用される制御構文

繰り返しに使用される構文は4つです。
・for文(繰り返す回数が事前に分かっているとき)
・foreach文(配列やリストの要素を順番に処理していくとき)
・while文(繰り返す回数が分からないので、条件がtrueの間は繰り返す)
・do while(条件の判定がループ処理の最後なので、falseでもその回の処理は実行される)

繰り返し処理の中で、よく使われる予約語2つ
・continue(特定の条件を満たした時のループ処理をスキップ)
・break(特定の条件を満たした時にループ処理を終了)

今回はdo while文を学習していきます。

do while文

まずは構文の書き方です。

do
{
    //処理内容;
}
while (条件);

特徴は、処理を実行した後に条件の判定を行うことです。
実行できるサンプルコードを書いてみます。

int number = 10;
do
{
    Debug.Log(number);
    number--;
}
while (number > 0);

カウントダウン処理を実行しましたが、初期値を次のように設定して、ループ処理の1回目から判定結果がfalseになるように書き換えてみます。

//1ループ目から判定がfalse
int number = 0;

do
{
    Debug.Log(number);
    number--;
}
while (number > 0);

1回目のループでの判定からfalseが返ってきます。for文を使っていた場合は何の応答もなくループ処理は終了です。もしくはelse文を別途記述してfalseだった場合の条件処理を記述します。
do while文で記述していた場合は1回目のループがfalseであったとしても、1回目で判定された値をコンソールに出力することができています。

少しゲームをイメージしたサンプルコードを見てみます。

bool isPlaying = true;
int i = 0;  //試行回数カウンター

do
{
    Debug.Log("正解の番号を選択してください");

    //1から5のランダムな整数を生成
    System.Random random = new System.Random();
    int randomNumber = random.Next(1, 6);

    Debug.Log("選択された番号は:" + randomNumber);
    i++;
    
    //3が選択されたらループ処理を終了させる
    if (randomNumber == 3)
    {
        isPlaying = false;
    }
}
while (isPlaying);

Debug.Log(i + "回でクリアしました");

プレイヤーが正解の番号を当てるとゲームクリアになるシステムです。サンプルコードでは条件がtrueの間、何度でも回答できるようになっています。今回は回答の数値をランダムに出力させていますが、実際のゲームではプレイヤーに回答させます。
何回目でプレイヤーが正解を出すのかわからない場合の繰り返し制御ではdo while文は適しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?