手順 2: Random オブジェクトおよびアイコンのリストの追加Step 2: Add a Random object and a list of icons

このステップでは、絵合わせゲームに使用する一連のアイコンを作成します。In this step, you create a set of matching symbols for the game. 各アイコンは、フォーム上の TableLayoutPanel 内の 2 つのランダムなセルに追加されます。Each symbol is added to two random cells in the TableLayoutPanel on the form. そのために、2 つの new ステートメントを使用して 2 つのオブジェクトを作成します。To do this, you use two new statements to create two objects. 1 つ目は、計算クイズ ゲームで使用したオブジェクトに似た Random オブジェクトです。The first is a Random object, like the one you used in the math quiz game. このコードでは、TableLayoutPanel 内のセルをランダムに選択するために使用します。It is used in this code to randomly choose cells in the TableLayoutPanel. 2 つ目は、初めての使用になるかもしれませんが、List<T> オブジェクトです。ランダムに選択されたアイコンを格納するために使用します。The second object, which may be new to you, is a List<T> object which is used to store the randomly-chosen symbols.

Random オブジェクトおよびアイコンのリストを追加するにはTo add a random object and a list of icons

  1. ソリューション エクスプローラーで、Visual C# の場合は Form1.cs、Visual Basic の場合は Form1.vb を選択し、メニュー バーの [表示] > [コード] の順に選択します。In Solution Explorer, choose Form1.cs if you're using Visual C#, or Form1.vb if you're using Visual Basic, and then on the menu bar, choose View > Code. 別の方法として、F7 キーを押すか、ソリューション エクスプローラー[Form1] をダブルクリックすることもできます。As an alternative, you can choose the F7 key or double-click Form1 in Solution Explorer.

    これにより、Form1 のコード モジュールが表示されます。This displays the code module behind Form1.

  2. 既存のコードに次のコードを追加します。In the existing code, add the following code.

    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"
    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"}

    Visual C# を使用している場合は、必ずクラス宣言 (public partial class Form1 : Form) のすぐ後の、始め中かっこの後にコードを配置してください。If you're using Visual C#, be sure you put the code after the opening curly brace and just after the class declaration (public partial class Form1 : Form). Visual Basic を記述している場合は、クラス宣言 (Public Class Form1) のすぐ後にコードを配置します。If you're using Visual Basic, put the code right after the class declaration (Public Class Form1).

  3. List オブジェクトを追加するときに、表示される IntelliSense ウィンドウに注目します。When adding the List object, notice the IntelliSense window that opens. 次に示しているのは Visual C# の例ですが、Visual Basic でリストを追加するときも同様のテキストが表示されます。The following is a Visual C# example, but similar text appears when you add a list in Visual Basic.

    Click イベントが表示されたプロパティ ウィンドウ IntelliSense ウィンドウProperties window showing Click event IntelliSense window


    [IntelliSense] ウィンドウは、手動でコードを入力する場合にのみ表示されます。The IntelliSense window appears only when you enter code manually. コードをコピーして貼り付ける場合は表示されません。If you copy and paste the code, it doesn't appear.

    小さなセクションのコード (およびコメント) を見ると、より容易に理解できます。If you look at the code (and remarks) in small sections, it's easier to understand. プログラムでは、list オブジェクトを使用してさまざまな項目を追跡できます。Your programs can use list objects to keep track of many different types of items. リストでは、数値、true/false 値、テキスト、またはその他のオブジェクトを保持できます。A list can hold numbers, true/false values, text, or other objects. 他の list オブジェクトを保持している list オブジェクトを持つこともできます。You can even have a list object that holds other list objects. リスト内の項目は要素と呼ばれ、各リストで保持される要素は 1 種類のみです。The items in a list are called elements, and each list only holds one type of element. そのため、数値のリストでは数値しか保持できません。数値のリストにテキストを追加することはできません。So, a list of numbers can only hold numbers—you can't add text to that list. 同様に、true/false 値のリストに数値を追加することもできません。Similarly, you can't add numbers to a list of true/false values.

    List ステートメントを使用して new オブジェクトを作成するときは、リストに格納するデータの種類を指定する必要があります。When you create a List object using a new statement, you need to specify the kind of data you want to store in it. IntelliSense ウィンドウの上部のツールヒントがリスト内の要素の種類を示すのはそのためです。That's why the tooltip at the top of the IntelliSense window shows the types of elements in the list. また、List<string> (Visual C# の場合) および List(Of String) (Visual Basic の場合) は、List オブジェクトが string データ型の要素を保持することを意味します。Also, that's what List<string> (in Visual C#) and List(Of String) (in Visual Basic) means: It's a List object that holds elements of string data type. string は、プログラムがテキストの格納に使用するものであり、IntelliSense ウィンドウの右側のツールヒントが示しているものです。A string is what your program uses to store text, which is what the tooltip to the right of the IntelliSense window is telling you.

  4. Visual Basic では最初に一時配列を作成する必要があるのに対し、Visual C# では 1 つのステートメントでリストを作成できる理由を考えます。Consider why in Visual Basic a temporary array must be created first, but in Visual C#, the list can be created with one statement. これは、Visual C# 言語にはコレクション初期化子があるためです。この初期化子により値を受け取るリストが作成されます。This is because the Visual C# language has collection initializers, which prepare the list to accept values. Visual Basic では、コレクション初期化子を使用できます。In Visual Basic, you can use a collection initializer. ただし、以前のバージョンの Visual Basic との互換性を確保するため、先に示されているコードを使用することをお勧めします。However, for compatibility with the previous version of Visual Basic, we recommend using the preceding code.

    new ステートメントでコレクション初期化子を使用した場合は、新しい List オブジェクトを作成すると、中かっこ内に指定しているデータがプログラムによってリストに格納されます。When you use a collection initializer with a new statement, after the new List object is created, the program fills it with the data you provided inside the curly braces. ここでは、icons という名前の文字列のリストが生成され、そのリストは、16 の文字列を格納できるように初期化されます。In this case, you get a list of strings named icons, and that list will be initialized so that it contains sixteen strings. これらの各文字列は、1 つの文字であり、それらすべてがラベルで表示されるアイコンと対応しています。Each of those strings is a single letter, and they all correspond to the icons that will be in the labels. そのためゲームには、感嘆符のペア、大文字の N のペア、コンマのペアなどが存在することになります So, the game will have a pair of exclamation points, a pair of uppercase N letters, a pair of commas, and so on. (これらの文字は Webdings フォントに設定されると、バス、バイク、クモなどのアイコンとして表示されます)。list オブジェクトは、TableLayoutPanel パネルのセルごとに 1 つの、合計 16 の文字列を保持することになります。(When these characters are set to the Webdings font, they will appear as symbols, such as a bus, a bike, a spider, and so forth.) Your list object will have sixteen strings in all, one for each cell in the TableLayoutPanel panel.


    Visual Basic では、結果は同じになりますが、最初に一時配列に文字列が格納されてから、この一時配列が list オブジェクトに変換されます。In Visual Basic, you get the same result, but first the strings are put into a temporary array, which is then converted into a list object. 配列はリストと似ていますが、配列は固定サイズで作成されるなどの例外があります。An array is similar to a list, except, for example, arrays are created with a fixed size. リストは、必要に応じて縮小および拡大できます。このプログラムではこの点が重要になります。Lists can shrink and grow as needed, which is important in this program.

続行または確認するにはTo continue or review