Step 2: Add a Random Object and a List of Icons

在本步骤中,你要为游戏创建一组匹配的符号。每个符号将添加到窗体上 TableLayoutPanel 中的两个随机单元格。为此,请使用两个 new 语句创建两个对象。第一个是 Random 对象,类似于数学测验游戏中使用的对象。此代码中使用它来随机选择 TableLayoutPanel 中的单元格。第二个对象是用于存储随机选择的符号的 List 对象,你可能没有见过。

添加随机对象和图标列表

  1. 在**“解决方案资源管理器”中,选择“Form1.cs”(如果使用 Visual C#)或“Form1.vb”(如果使用 Visual Basic),然后在菜单栏上选择“查看”->“代码”。你也可以按 F7 或在“解决方案资源管理器”中双击“Form1”**。

    这会显示 Form1 的后台代码模块。

  2. 在现有代码中,添加以下代码。

    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) 之后。

  3. 添加 List 对象时,请注意打开的**“IntelliSense”**窗口。下面是一个 Visual C# 示例,但在 Visual Basic 中添加列表时会显示类似文本。

    “IntelliSense”窗口

    显示 Click 事件的“属性”窗口

    说明说明

    “IntelliSense”窗口仅在你手动输入代码时显示。如果你复制和粘贴代码,则不显示。

    如果你分小段查看代码(和备注),理解起来会更容易。你的程序可以使用 List 对象跟踪多个不同类型的项目。列表可以包含数字、true/false 值、文本或其他对象。你甚至可以有一个包含其他 List 对象的 List 对象。列表中的项目称为“元素”,每个列表只包含一种类型的元素。所以数字列表只包含数字,你不能向该列表中添加文本。同样,你也不能向 true/false 值列表中添加数字。

    当使用 new 语句创建 List 对象时,你需要指定要在其中存储的数据类型。因此,**“IntelliSense”窗口顶部的工具提示会显示列表中的元素类型。List<string>(Visual C# 中)和 List(Of String)(Visual Basic 中)的含义也在于此:这是存储 string 数据类型的元素的 List 对象。“IntelliSense”**窗口右侧的工具提示将告诉你,你的程序使用字符串来存储文本。

  4. 请考虑为什么在 Visual Basic 中必须首先创建临时数组,但在 Visual C# 中可以使用一条语句创建列表。这是因为 Visual C# 语言具有“集合初始值设定项”,从而准备了可以接受值的列表。在 Visual Basic 中,你可以使用集合初始值设定项。但是,为了与以前版本的 Visual Basic 兼容,我们建议你使用上面的代码。

    当你将集合初始值设定项与 new 语句一同使用时,在创建新的 List 对象后,程序将使用你在大括号内提供的数据填充它。在本例中,你将获得名为**“图标”**的字符串列表,该列表将初始化以包含十六个字符串。其中每个字符串都是单个字母,它们都对应于将在标签中出现的图标。因此,该游戏将包含一对感叹号、一对大写的 N 字母、一对逗号等。(这些字符设置为 Webdings 字体时,将显示为符号,例如公交车、自行车、蜘蛛等。)List 对象将总共包含十六个字符串,每个字符串对应于 TableLayoutPanel 面板中的一个单元格。

    说明说明

    在 Visual Basic 中,可以获得相同的结果,但是字符串首先放入临时数组中,该数组然后转换为 List 对象。数组类似于列表,但也有不同之处,例如数组在创建时具有固定大小。列表可以根据需要收缩或增长,这在此程序中非常重要。

继续或查看