共用方式為


步驟 7:讓配對保持可見

只要玩家僅按一下不相符的圖示配對,遊戲都可以運作良好。但是,請考慮當玩家按一下相符的配對時所應發生的情況。遊戲不用藉由啟動計時器使圖示消失 (使用 Start() 方法),而是應該本身進行重設,如此它就不會再使用 firstClicked 和 secondClicked 參考變數來追蹤任何標籤,但不需要重設已按下之兩個標籤的色彩。

若要讓配對保持可見

  1. 將下列 if 陳述式加入至 label_Click() 事件處理常式方法,位置靠近您啟動計時器之陳述式正上方的那一端。將程式碼加入至程式時,請仔細觀察該程式碼。請考慮程式碼的運作方式。

            ' If the player gets this far, the timer isn't 
            ' running and firstClicked isn't Nothing, 
            ' so this must be the second icon the player clicked
            ' Set its color to black
            secondClicked = clickedLabel
            secondClicked.ForeColor = Color.Black
    
            ' If the player clicked two matching icons, keep them 
            ' black and reset firstClicked and secondClicked 
            ' so the player can click another icon
            If (firstClicked.Text = secondClicked.Text) Then
                firstClicked = Nothing
                secondClicked = Nothing
                Return
            End If
    
            ' If the player gets this far, the player 
            ' clicked two different icons, so start the 
            ' timer (which will wait three quarters of 
            ' a second, and then hide the icons)
            Timer1.Start()
        End If
    End Sub
    
            // If the player gets this far, the timer isn't
            // running and firstClicked isn't null,
            // so this must be the second icon the player clicked
            // Set its color to black
            secondClicked = clickedLabel;
            secondClicked.ForeColor = Color.Black;
    
            // If the player clicked two matching icons, keep them 
            // black and reset firstClicked and secondClicked 
            // so the player can click another icon
            if (firstClicked.Text == secondClicked.Text)
            {
                firstClicked = null;
                secondClicked = null;
                return;
            }
    
            // If the player gets this far, the player 
            // clicked two different icons, so start the 
            // timer (which will wait three quarters of 
            // a second, and then hide the icons)
            timer1.Start();
        }
    }
    

    您剛才加入的 if 陳述式的第一行會檢查玩家所按下的第一個標籤中的圖示是否與第二個標籤中的圖示相同。如果圖示相同,程式即執行在 C# 中大括號之間或 Visual Basic 中 if 陳述式內的三個陳述式。前兩個陳述式會重設 firstClicked 和 secondClicked 參考變數,如此他們便不會追蹤任何的標籤 (您可以辨識來自計時器的 Tick 事件處理常式中的那兩個陳述式)。第三個陳述式是 return 陳述式,該陳述式會告訴程式略過方法中其餘的陳述式,而不要執行它們。

    如果在 Visual C# 中設計程式,您可能已注意到有些程式碼會使用單一等號 (=),而其他陳述式則使用兩個等號 (==)。請考慮為何某些地方使用 =,而其他地方使用 ==。

    這是一個顯示差異的好範例。請仔細觀察 if 陳述式中括號之間的程式碼。

    firstClicked.Text = secondClicked.Text
    
    firstClicked.Text == secondClicked.Text
    

    然後,再仔細查看 if 陳述式之後程式碼區塊中的第一個陳述式。

    firstClicked = Nothing
    
    firstClicked = null;
    

    這兩個陳述式中的第一個會檢查兩個圖示是否相同。因為有兩個值在進行比較,所以 Visual C# 程式會使用 == 等號比較運算子。第二個陳述式會實際變更值 (稱為「指派」(Assignment)),將 firstClicked 參考變數設為等於 null,加以重設。這就是它為何改用 = 指派運算子的緣故。Visual C# 會使用 = 來設定值,而使用 == 比較它們。Visual Basic 則使用 = 來進行指派和比較。

  2. 儲存並執行程式,並開始在表單中按一下。如果您按一下不相符的配對,則計時器的 Tick 事件觸發器和這兩個圖示都會消失。如果按一下相符的配對,則會執行新的 if 陳述式,而 return 陳述式會導致方法略過用於啟動計時器的程式碼,如此圖示才能保持可見,如下列圖片所示。

    含有可見圖示配對的配對遊戲

    您在本教學課程中建立的遊戲

若要繼續或檢視