1

私は、VB コードを使用してビジュアル ベーシックで簡単なゲーム、ラッキー 7 を作成しました。スコア カウンターが正しく機能しません。たとえば、ゲームに 1 回勝つと (3 つのスロットのいずれかで 7 を獲得)、10 ポイントを獲得し、スコア ラベルが 10 に変わります。スピン ボタンを押し続けて勝つと、ここでも、スコア ラベルは 10 のままで、20 には変わりません。

私が書いたスピンボタンのコードは次のとおりです。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    Dim rand = New Random
    Dim slots = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    Dim score = 0
    For i = 0 To 2
        slots(i) = rand.Next(10)
    Next

    Label1.Text = (slots(0).ToString)
    Label2.Text = (slots(1).ToString)
    Label3.Text = (slots(2).ToString)

    If slots(0) = 7 Or slots(1) = 7 Or slots(2) = 7 Then
        score = score + 10  
        Label4.Text = (score.ToString)
        PictureBox1.Visible = True 
    Else
        PictureBox1.Visible = False
    End If

End Sub

ゲームに勝った回数だけスコアを変更するには、while ループなどを追加する必要がありますか?

4

1 に答える 1

5

変数宣言をクラス レベルで移動する必要があります。

現時点では、ボタンをクリックすると作成されます。したがって、クリックするたびにscore変数が削除され、再度作成されます。

移動

Dim score = 0

次のように行:

'Assuming your Form is called Form1
Public Class Form1 Inherits Form

Dim score = 0

     Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
     'Your current code
     End Sub

 End Class

そして、あなたの問題は解決されました。

おそらく、スコープに関するドキュメントを読む必要があります。

あなたの小さな間違いについての抜粋:

プロシージャ内で変数を宣言するが、If ステートメントの外にある場合、スコープは End Sub または End Function までです。変数の存続期間は、プロシージャーが終了するまでです。

于 2013-04-18T15:28:36.107 に答える