2011-04-19 97 views
2

我在賦值時遇到了一些問題。該案例項目爲:循環中的隨機生成器

創建一個允許用戶猜測計算機生成的隨機數的應用程序。當用戶做出不正確的猜測時,應用程序應該將圖像向上或向下移動,這取決於猜測與隨機數的比較方式。如果隨機數大於用戶的猜測,則應用程序應該向上移動圖像以指示用戶需要猜測更高的數字。如果隨機數小於用戶的猜測,則應用程序應該向下移動圖像以指示用戶需要猜測較低的數字。當用戶猜測隨機數時遊戲結束。但是,應用程序應該允許用戶提前停止遊戲。當發生這種情況時,應用程序應該丟棄隨機數。

我已經嘗試了所有我能想到的方法,包括使用文本框而不是輸入框並使用語法 - 但似乎無法正確使用它。建議將不勝感激。謝謝。

我的代碼:

Public Class Form1 

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 
     Me.Close() 
    End Sub 

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

     Dim Number As Integer 
     Dim inputNumber As Integer 
     Dim answer As Integer 
     Dim isconverted As Boolean 

     Dim computerchoice As New Random 
     answer = computerchoice.Next(1, 20) 

     inputNumber = InputBox("Please guess number", "Random Number Game") 


     Do 
      isconverted = Integer.TryParse(inputNumber, Number) 
      If isconverted = True Then 

       If answer = Number Then 
        MessageBox.Show("You Win") 

       ElseIf answer > Number Then 
        PictureBox1.SetBounds(0, 90, 0, 0, BoundsSpecified.Y) 

       ElseIf answer < Number Then 
        PictureBox1.SetBounds(0, 220, 0, 0, BoundsSpecified.Y) 

       End If 
      Else 
       MessageBox.Show("Please enter a valid number between 1 - 20 only") 
      End If 

      inputNumber = InputBox("Please guess number", "Random Number Game") 

     Loop While answer <> Number 

     MessageBox.Show("Answer:" & answer.ToString) 

    End Sub 

End Class 
+0

你面臨這個問題http://stackoverflow.com/questions/1757654/assignment-operator-in-vb-net-1-1 – zod 2011-04-19 18:56:06

+0

哪一部分ISN」工作? – 2011-04-19 18:56:16

+1

它是否必須在循環中?難道你沒有在表單加載或「新遊戲」按鈕點擊事件上生成的隨機數?然後你可以有一個文本框和按鈕。單擊按鈕時,將文本框的值與您的隨機數進行比較。 – Jack 2011-04-19 18:56:31

回答

2

你的代碼實際上幾乎工作。一些事情,但:

  • 唯一真的沒有工作是圖片上下移動。你所要做的就是增加/減少.Top屬性。
  • 因爲您在循環的開始處將輸入轉換爲數字,而不是評估直到結束,所以您在獲得正確答案後循環使用額外的時間。
  • 轉換後的數字比較是多餘的,因爲您知道如果他們退出循環,他們會得到該數字。

如果你是新來的Visual Studio,不知道breakpoints和其他調試,這是值得的,看看這些。使用這些工具,您可以在程序的給定點處暫停代碼,查看值變量hold,並逐行執行代碼。

這裏的工作代碼:

Do 

    If isconverted = True And Number >= 1 And Number <= 20 Then 
     If answer > Number Then 
      PictureBox1.Top -= 10 
     ElseIf answer < Number Then 
      PictureBox1.Top += 10 
     End If 
    Else 
     MessageBox.Show("Please enter a valid number between 1 - 20 only") 
    End If 

    inputNumber = InputBox("Please guess number", "Random Number Game") 

    isconverted = Integer.TryParse(inputNumber, Number) 

Loop While (answer <> Number) 

MessageBox.Show("You Win! The answer is " & answer.ToString)