匹配游戏的运行原理如下所示:
当玩家单击其中一个带有隐藏图标的方块时,程序通过将图标颜色更改为黑色来向玩家显示该图标。
然后玩家单击另一个隐藏的图标。
如果图标互相匹配,则它们保持可见。如果不匹配,则两个图标都会再次隐藏。
为了使程序按此方式运行,您需要添加一个 Click 事件处理程序以更改所单击的标签的颜色。
向每个标签添加一个 Click 事件处理程序
转到 Windows 窗体设计器,然后单击第一个 Label 控件以将其选中。然后,在单击其他每个标签时按住 Ctrl 键,以将它们选中。确保选中每个标签。
然后,转到**“属性”窗口中的“事件”**页。向下滚动到 Click 事件,在框中键入“label_Click”,如下图所示。
显示 Click 事件的“属性”窗口
按 Enter。IDE 将称为 label_Click() 的 Click 事件处理程序添加到代码中,并将其挂钩到每个标签。
填写其余代码,如下所示:
''' <summary> ''' Every label's Click event is handled by this event handler ''' </summary> ''' <param name="sender">The label that was clicked</param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub label_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label9.Click, Label8.Click, Label7.Click, Label6.Click, Label5.Click, Label4.Click, Label3.Click, Label2.Click, Label16.Click, Label15.Click, Label14.Click, Label13.Click, Label12.Click, Label11.Click, Label10.Click, Label1.Click Dim clickedLabel As Label = TryCast(sender, Label) If clickedLabel IsNot Nothing Then ' If the clicked label is black, the player clicked ' an icon that's already been revealed -- ' ignore the click If (clickedLabel.ForeColor = Color.Black) Then Return End If clickedLabel.ForeColor = Color.Black End If End Sub
/// <summary> /// Every label's Click event is handled by this event handler /// </summary> /// <param name="sender">The label that was clicked</param> /// <param name="e"></param> private void label_Click(object sender, EventArgs e) { Label clickedLabel = sender as Label; if (clickedLabel != null) { // If the clicked label is black, the player clicked // an icon that's already been revealed -- // ignore the click if (clickedLabel.ForeColor == Color.Black) return; clickedLabel.ForeColor = Color.Black; } }
说明
您可以从“创建数学测验”教程识别事件处理程序顶部的 object sender。您将不同的 Label 控件 Click 事件与单个事件处理程序方法挂钩,因此无论用户单击哪个标签,都调用同一方法。该方法需要知道单击了哪个标签,因此它使用该 Label 控件的名称“发送方”。该方法的第一行告诉程序,它并不只是一个对象,而是专门的 Label 控件,它使用名称“clickedLabel”访问其属性和方法。
该方法首先检查是否已将**“clickedLabel”成功从对象转换(强制转换)为 Label 控件。如果不成功,它具有一个 null 值 (C#) 或 Nothing 值 (Visual Basic),您不需要执行该方法中的其余代码。接下来,该方法使用“ForeColor”**属性检查被单击的标签的文本颜色。如果已经为黑色,则该图标已被单击,因此该方法完成。(这就是返回语句的作用:它告诉程序停止执行该方法。)如果该图标尚未被单击,它会将其文本颜色更改为黑色。
保存并运行程序。您应该看到一个背景为蓝色的空窗体。在窗体中单击,其中一个图标应变为可见。继续在窗体中的不同位置单击。当单击图标时,它们应显示。
继续或查看
若要转到下一个教程步骤,请参见步骤 5:添加标签引用。
若要返回上一个教程步骤,请参见步骤 3:向每个标签分配一个随机图标。