开发者

Random Generator in Loop

开发者 https://www.devze.com 2023-02-26 20:21 出处:网络
I am having some problems with an assignment.The case project is: Create an application that allows the user to guess a random number generated by the computer.When the user makes an incorrect guess

I am having some problems with an assignment. The case project is:

Create an application that allows the user to guess a random number generated by the computer. When the user makes an incorrect guess, the application should move an image either upr or down, depending on how the guess compares to the random number. If the random number is greater than the user's guess, the application should move the image up to indicate that the user needs to guess a higher number. If the random number is less than the user's guess, the application should move the image down to indicate that the user needs to guess a lower number. The game ends when the user guesses the random number. However, the application should allow the user to stop the game prematurely. When that happens the application should siplay the random number.

I have tried every which way I can think of including using a textbox instead of an inputbox and playing around with the syntax - but just can't seem to get it right. Advice would be much appreciated. Thanks.

My code:

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 >开发者_StackOverflow社区 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


Your code actually almost worked. A few things though:

  • The only thing that really didn't work was the picture moving up and down. All you have to do for that is to increment/decrement the .Top property.
  • Because you converted your input to a number at the beginning of the loop and not evaluating till the end, you were looping through an extra time after you got the right answer.
  • The number comparison after the conversion was redundant, since you know they got the number if they exit the loop.

If you're new to Visual Studio and don't know about breakpoints and other debugging, it is worth it to look into those. With these tools you can pause your code at given points in your program, look at the values variables hold, and step through your code line-by-line.

Here's the working code:

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)
0

精彩评论

暂无评论...
验证码 换一张
取 消