繰り返し
決まられた回数を繰り返す命令「for」
練習課題
C#を読みましょう
以下の表は、C#で書いた命令とその日本語の意味が書いてある。空枠を完成してください。
|
C# |
日本語 |
|
「i」という変数は 0から9までの値を変えながら、10回繰り返す |
|
答え
|
|
答え「i」という変数は 10から1までの値を変えながら、10回繰り返す |
|
答え「i」という変数は 0, 2, 4, 6, 8, 10, 12, 14 の値を変えながら、8回繰り返す |
Unityで練習
1〜100の整数を繰り返し、表示してください。ただし…
「3」で割れる整数の代わりに「ho」を表示
「5」で割れる整数の代わりに「ge」を表示
「3」と「5」両方で割れる整数の代わりに「hoge」を表示
例:
1, 2, ho, 4, ge, ho, 7, 8, ho, ge, 11, ho, 13, 14, hoge, 16, 17, ho …
ヒント
「余り」演算子(モジュロ、剰余演算子)を使ってください。余りの演算子は整数の割り算の余りを返す:
int a = 4 % 3; // a は 1 になる
int b = 6 % 3; // b は 0 になる
int c = 12 % 5; // c は 2 になる
答え
// 1~100繰り返す
for(int i = 1; i <= 100; i++)
{
// 3 と 5 のあまりを計算し、0 である場合は、
// その数値で割れることである。
bool div3 = i % 3 == 0;
bool div5 = i % 5 == 0;
// 両方で割れる?
if (div3 && div5)
{
Debug.Log("hoge");
}
// 3で割れる?
else if (div3)
{
Debug.Log("ho");
}
// 5で割れる?
else if (div5)
{
Debug.Log("ge");
}
// その他
else
{
Debug.Log($"{i}");
}
}
回数が決まっていない繰り返す命令「while」
for文は決まった回数(例:0~10)を繰り返す命令であるが、場合により、回数が決まっていなく、何かの条件を満たしている間には繰り返す場合もある:
例:体力残っていたら→遊び続ける
例:時間切れになっていなければ→遊び続ける
例:敵がプレーヤーを捕まっていなければ→追いかける
書式:
while(繰り返し条件)
{
繰り返したい処理
}
例えば、サイコロは「6」になるまで繰り返すを書くとしたら:
int dice = 0;
while (dice != 6)
{
// Random.RangeはUnityの機能であり、乱数を生成する
dice = Random.Range(1, 7); // 1〜6の間の乱数を生成(7未満)
Debug.Log($"サイコロの値:{dice}");
}
Debug.Log("終了");
上記の例で、回数が決まっていなくて、サイコロは6以外だったら繰り返す処理である。
練習課題
以下のスクリプトでwhileを使い、完成してください(UnityでもOK)
// 体力
int playerHP = 100;
// プレーヤーが生きていたら、繰り返す
________________________
{
Debug.Log($"現在の体力 {playerHP}");
int damage = 30;
playerHP -= damage; // 体力を減らす
}
Debug.Log("ゲームオーバー");
答え
// 体力
int playerHP = 100;
// プレーヤーが生きていたら、繰り返す
while(playerHP > 0)
{
Debug.Log($"現在の体力 {playerHP}");
int damage = 30;
playerHP -= damage; // 体力を減らす
}
Debug.Log("ゲームオーバー");
このプログラムはコンソールで何を表示するか?その出力を書いてください:
答え
現在の体力 70 現在の体力 40 現在の体力 10
|