目次
概要
配列やリストに要素を代入したり追加する方法を学んできました。ここでは、要素を順番に処理していく繰り返しの方法について学習します。
まずは、for 文を使う方法について紹介します。for 文の基本的な使い方はこちらで解説しています。リストの要素を繰り返し処理する場合、次のように使用します。
List<string> hiragana = new List<string>() { "あ", "い", "う", "え", "お" };
for (int i = 0; i < hiragana.Count; i++)
{
Console.WriteLine(hiragana[i]);
}
結果は以下のように表示されたでしょうか。hiragana.Count や、hiragana[i] の値について、デバッグ実行を使って確かめてみてください。
次は、foreach 文を使う方法について紹介します。この構文は初めての登場です。以下のような構文をとります。
foreach(型名 変数名 in 配列 or リスト)
{
// 処理 A
}
実際のプログラムは、以下のようになります。
int[] numbers = { 1, 2, 3, 4 };
foreach (int n in numbers)
{
Console.WriteLine(n);
}
実行結果は以下のようになると思います。
for 文と foreach 文の使い分けですが、すべての要素に対して処理を行う場合は foreach 文を使うほうが簡単です。奇数や偶数の要素のみ繰り返し処理をするような場合は、for 文を使うとよいでしょう。for 文の後処理(インクリメントなど)で奇数のみ、偶数のみとなるように調整します。
手順:リスト内の要素を並び替える
STEP1:C# プログラム(ファイル)を追加する
こちらの記事を参考にして、コンソールアプリ(プロジェクト名:Lesson6)に C# プログラム(ファイル名:Lesson6_4)を追加します。
STEP2:プログラムを記述する
Lesson6_4.cs のプログラムを下記のように変更します。
namespace Lesson6
{
public static class Lesson6_4
{
/// <summary>
/// 要素を昇順に並び替える
/// </summary>
public static void Text1()
{
Console.WriteLine("*** 並び替え前 ***");
List<int> scores = new List<int>();
scores.Add(2);
scores.Add(4);
scores.Add(1);
scores.Add(3);
scores.Add(5);
for (int i = 0; i < scores.Count; i++)
{
Console.WriteLine(scores[i]);
}
Console.WriteLine("*** 並び替え後 ***");
scores.Sort();
foreach (int score in scores)
{
Console.WriteLine(score);
}
}
}
}
STEP3:結果を確認する
Sort メソッドを使用すると、リスト内の要素を並び替えることができます。次のような結果が得られたでしょうか。
課題
課題① – 1:宝石を取ったときに得点を獲得する
チュートリアル用のゲームには、コース上に宝石がちりばめられています。この宝石を取ったときに、得点が入るようにプログラミングしてみましょう。下図のように、ヒエラルキーから「Tokens」⇒「Token」を選択します。そして、インスペクターに表示される「TokenInstance」をダブルクリックします。
「TokenInstance.cs」ファイルが開くので、17 行目付近に右下のプログラムを記入します。
private System.Random rnd = new System.Random();
public static List<int> scores = new List<int>();
変数 rnd は、乱数を生成するために使用します
リストに static とついていますが、次のレッスンで説明します
(ここではあまり気にしないでください)
敵を倒したら、1~10 の得点が入ることにします。得点は、リスト(scores)で管理します。「TokenInstance.cs」ファイルの 58行 目付近を、下記のようにプログラミングします。
if (controller != null)
{
collected = true;
Debug.Log("*** スコア ***");
scores.Add(rnd.Next(10) + 1);
int scoreTotal = 0;
foreach (int score in scores)
{
scoreTotal += score;
Debug.Log(score);
}
Debug.Log("スコア合計:" + scoreTotal);
}
正しくプログラミングされているか、ゲームをプレイしながら Unity のコンソールで確認してみてください。
次に進む
次は、オブジェクト指向について学びます。