2017-10-04 102 views
0

我在Visual Studio中構建了一個「猜詞」遊戲。我不確定如何計算某些條件滿足的次數

發生什麼是我的數組產生一個Word,並出現一個輸入框。用戶必須通過在輸入框中輸入文本來猜測該單詞,如果該單詞正確,則會顯示一個消息框,如果沒有,則會出現消息框,再次嘗試。

我需要一個函數來計算用戶猜測的詞數。我有這個,但如果這個單詞與用戶輸入相同,那麼1會出現在我設置它出現的標籤中,如果它不等於它,則會出現0。當我計算某個按鈕被點擊的次數時,此代碼可以工作(使用不同的變量等),所以我很困惑它爲什麼現在不工作。

Dim guess As String 
guess = (LCase(InputBox("What is the word", "Guess the word")))  
Static hits As Integer 
hits = 0 
If word = guess Then hits += 1 
Label8.Text = hits 

其中word是我的數組生成的詞。

爲什麼上面的代碼不會增加正確的猜測數?

+3

'命中= 0'似乎運行每次顯示輸入框剛過時間。所以每次猜測它重置爲0。只需聲明該變量並在用戶啓動遊戲時將其設置爲0,並且僅在開始新遊戲時將其重置爲0。 – ADyson

+0

你可能在一些按鈕/元素事件子裏面運行了這個,你每次都重置hits變量。所以它應該被聲明爲全球之外的子。 –

回答

1

,因爲你有

Static hits As Integer 
hits = 0 

這意味着hits在每次執行行hits = 0時間設置爲0,它出錯。

相反,如果你使用

Static hits As Integer = 0 

然後將它初始化爲0,它會做的只有一次。

+0

這是原始問題的確切答案,也是您答案的擴展......但是,讓我們再給OP一個! –

0

正如其他人則建議,在聲明的時候初始化hits變量,擺脫分配線:

Static hits As Integer = 0 ' Modify the declaration like this line 
' hits = 0 - remove this line 

另一種解決方案是在module level宣佈hits變量,在這種情況下, Static關鍵字是沒有必要的:

Private hits As Integer = 0 

無論你在你的代碼喜歡的放心,它的值調用你的方法之間保存然後訪問它。 在任何情況下,你需要確保,這條線走了:

hits = 0 
相關問題