手順 2: Random オブジェクトおよびアイコンのリストの追加
このステップでは、絵合わせゲームに使用する一連のアイコンを作成します。各アイコンは、フォーム上の TableLayoutPanel 内の 2 つのランダムなセルに追加されます。そのために、2 つの new ステートメントを使用して 2 つのオブジェクトを作成します。1 つ目は、計算クイズ ゲームで使用したオブジェクトに似た Random オブジェクトです。このコードでは、TableLayoutPanel 内のセルをランダムに選択するために使用します。2 つ目は、初めての使用になるかもしれませんが、List オブジェクトです。ランダムに選択されたアイコンを格納するために使用します。
Random オブジェクトおよびアイコンのリストを追加するには
ソリューション エクスプローラーで、Visual C# の場合は [Form1.cs]、Visual Basic の場合は [Form1.vb] をダブルクリックします。次に、メニュー バーで [表示]、[コード] の順にクリックします。別の方法として、F7 キーを押すか、ソリューション エクスプローラーで [Form1] をダブルクリックすることもできます。
これにより、Form1 のコード モジュールが表示されます。
既存のコードに次のコードを追加します。
Public Class Form1 ' Use this Random object to choose random icons for the squares Private random As New Random ' Each of these letters is an interesting icon ' in the Webdings font, ' and each icon appears twice in this list Private icons = New List(Of String) From {"!", "!", "N", "N", ",", ",", "k", "k", "b", "b", "v", "v", "w", "w", "z", "z"}
public partial class Form1 : Form { // Use this Random object to choose random icons for the squares Random random = new Random(); // Each of these letters is an interesting icon // in the Webdings font, // and each icon appears twice in this list List<string> icons = new List<string>() { "!", "!", "N", "N", ",", ",", "k", "k", "b", "b", "v", "v", "w", "w", "z", "z" };
Visual C# を使用している場合は、必ずクラス宣言 (public partial class Form1 : Form) のすぐ後の、始め中かっこの後にコードを配置してください。Visual Basic を記述している場合は、クラス宣言 (Public Class Form1) のすぐ後にコードを配置します。
List オブジェクトを追加するときに、表示される IntelliSense ウィンドウに注目します。次に示しているのは Visual C# の例ですが、Visual Basic でリストを追加するときも同様のテキストが表示されます。
IntelliSense ウィンドウ
[!メモ]
[Intellisense] ウィンドウは、手動でコードを入力する場合にのみ表示されます。コードをコピーして貼り付ける場合は表示されません。
小さなセクションのコード (およびコメント) を見ると、より容易に理解できます。プログラムでは、List オブジェクトを使用してさまざまな項目を追跡できます。リストでは、数値、true/false 値、テキスト、またはその他のオブジェクトを保持できます。他の List オブジェクトを保持している List オブジェクトを持つこともできます。リスト内の項目は要素と呼ばれ、各リストで保持される要素は 1 種類のみです。そのため、数値のリストでは数値しか保持できません。数値のリストにテキストを追加することはできません。同様に、true/false 値のリストに数値を追加することもできません。
new ステートメントを使用して List オブジェクトを作成するときは、リストに格納するデータの種類を指定する必要があります。IntelliSense ウィンドウの上部のツールヒントがリスト内の要素の種類を示すのはそのためです。また、List<string> (Visual C# の場合) および List(Of String) (Visual Basic の場合) は、List オブジェクトが string データ型の要素を保持することを意味します。string は、プログラムがテキストの格納に使用するものであり、IntelliSense ウィンドウの右側のツールヒントが示しているものです。
Visual Basic では最初に一時配列を作成する必要があるのに対し、Visual C# では 1 つのステートメントでリストを作成できる理由を考えます。これは、Visual C# 言語にはコレクション初期化子があるためです。この初期化子により値を受け取るリストが作成されます。Visual Basic では、コレクション初期化子を使用できます。ただし、以前のバージョンの Visual Basic との互換性を確保するため、先に示されているコードを使用することをお勧めします。
new ステートメントでコレクション初期化子を使用した場合は、新しい List オブジェクトを作成すると、中かっこ内に指定しているデータがプログラムによってリストに格納されます。ここでは、icons という名前の文字列のリストが生成され、そのリストは、16 の文字列を格納できるように初期化されます。これらの各文字列は、1 つの文字であり、それらすべてがラベルで表示されるアイコンと対応しています。そのためゲームには、感嘆符のペア、大文字の N のペア、コンマのペアなどが存在することになります (これらの文字は Webdings フォントに設定されると、バス、バイク、クモなどのアイコンとして表示されます)。List オブジェクトは、TableLayoutPanel パネルのセルごとに 1 つの、合計 16 の文字列を保持することになります。
[!メモ]
Visual Basic では、結果は同じになりますが、最初に一時配列に文字列が格納されてから、この一時配列が List オブジェクトに変換されます。配列はリストと似ていますが、配列は固定サイズで作成されるなどの例外があります。リストは、必要に応じて縮小および拡大できます。このプログラムではこの点が重要になります。
続行または確認するには
チュートリアルの次の手順に進むには、「手順 3: 各ラベルへのランダムなアイコンの割り当て」を参照してください。
チュートリアルの前の手順に戻るには、「手順 1: プロジェクトの作成とフォームへのテーブルの追加」を参照してください。