講義メモ 後半

補足:後判定繰返し文

・繰返し内容を1度行ってから繰返すかどうか判断する場合に用いる繰返し構文
・書式: do { 繰返し内容 } while(継続条件);
・例:do { 100円で遊ぶ } while(まだ金がある);
・主に、入力や受信などで得たものをチェックし、正しいものが得られるまで先に進まない場合に用いることが多い
・例:do { 画面などからyかnを入力 } while(yでもnでもない?);
・例:do { データを受信 } while(正しくない?);

ミニ演習 mini103b

・chap3_2_1を後判定繰返しにしてみよう
①パブリック変数でint zandaka = 30000 を受け取る
②5080円払う
③残高を表示する
④残高がある間、②③を繰り返す
※ 最初の残高が5080円未満でも(赤字になっても)払うことになる

作成例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class mini103b : MonoBehaviour {
    public int zandaka = 30000;
    void Start() {
        do {
            zandaka -= 5080; //5080円払う(たとえ赤字でも!)
            Debug.Log(zandaka);
        } while (zandaka > 0); //残高がある間繰返す
    }
    void Update() {

    }
}

補足:2重繰返し

・p.099の図の通り「繰返しの中で繰返し」を行うことが可能
・この場合、繰返しに関わる変数やカウンタの変数の変化に注意
例:2×3回繰り返す場合①
int a = 2;
while (a > 0) {
 a -= 1;
 int b = 3;
 while (b > 0) 
  b -= 1;
  ここに処理を書くと2×3回繰返される
 }
}
例:2×3回繰り返す場合②
int a = 1;
while (a <= 2) {
 int b = 1;
 while (b <= 3) 
  ここに処理を書くと2×3回繰返される
  b += 1;
 }
 a += 1;
}

ミニ演習 平面ダンジョンへのモンスターの配置作り mini099

・縦3×横2の6部屋のダンジョンがある
・乱数を用いて、1部屋に0~9匹のモンスターを配置したい
下記のように表示しよう
 1階1号室は9匹
 1階2号室は2匹
 2階1号室は9匹
 2階2号室は3匹
 3階1号室は0匹
 3階2号室は1匹

作成例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class mini099 : MonoBehaviour {
    void Start() {
        System.Random r = new System.Random(); //乱数クラスのオブジェクトを生成
        int a = 1; //1階から
        while (a <= 3) { //3階まで繰返す
            int b = 1; //1号室から
            while (b <= 2) { //2号室まで繰返す
                int n = r.Next(10); //0~9の乱数を得る
                Debug.Log(a + "階" + b + "号室は" + n + "匹");
                b = b + 1; //次の部屋へ
            }
            a = a + 1; //次の階へ
        }
    }
    void Update() {

    }
}

ミニ演習 直列ダンジョンへのモンスターの配置作り mini099b

・6部屋のダンジョンがある
・乱数を用いて、1部屋に0~9匹のモンスターを配置したい
・モンスターの数を●の数で示そう
下記のように表示しよう
 1号室:●●●●●●●●●
 2号室:●●
 3号室:●●●
 4号室:
 5号室:●●●●●
 6号室:●●●●
・ヒント:内側の繰返しは"●"の連結をモンスターの数だけ行う処理になる
①a=1号室から
②a=6号室まで③から⑩を繰り返す
 ③文字列sを a + "号室:" にする
 ④モンスター数nを乱数rで決める
 ⑤カウンタbを0にする
 ⑥カウンタbがモンスター数n以下である間、⑦から⑧を繰り返す
  ⑦文字列sを s + "●" にする(つまり後ろに"●"を連結する)
  ⑧カウンタbを b + 1 にする(つまり次のモンスターへ)
 ⑨文字列sを表示
 ⑩カウンタaを a + 1 にする(つまり次の部屋へ)

作成例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class mini099b : MonoBehaviour {
    void Start() {
        System.Random r = new System.Random(); //乱数クラスのオブジェクトを生成
        int a = 1; //1号室から
        while (a <= 6) { //6号室まで繰返す
            string s = a + "号室:"; //「■号室:」を用意
            int n = r.Next(10); //モンスター数を0~9にする
            int b = 0; //カウンタを0にする
            while (b < n) { //カウンタがモンスター数未満の間
                s += "●"; //文字列に"●"を連結             
                b = b + 1; //次のモンスターへ
            }
            Debug.Log(s); //できた文字列を表示
            a = a + 1; //次の部屋へ
        }
    }
    void Update() {

    }
}

提出:アレンジ演習:直列ダンジョンへのモンスターの配置作り mini099b

・9匹満室の部屋には「満室」と表示しよう
例:
 1号室:●●●●●●●●●満室
 2号室:●●
 3号室:●●●
 4号室:
 5号室:●●●●●●●●●満室
 6号室:●●●●
ヒント:
・Debug.Logする直前に「nが9なら、sに"満室"を連結する」処理を挿入すれば良い

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です