Create an application that generates a random number in the range of 1 through 1
ID: 3548089 • Letter: C
Question
Create an application that generates a random number in the range of 1 through 100 and asks the user to guess what the number is. If the user's guess is higher than the random number, the program should display " Too high, try again." If the user's guess is lower than the random number, the program should display "Too low, try again." If the user guesses the number, the application should congratulate the user and then generate a new random number so the game can start over.
Optional Enhancement: Enhance the game so it keeps count of the number of guesses that user makes. When the user correctly guesses the random number, the program should display the number of guesses.
- Have title in the form.
- Have Try.. Catch block in your program.
- Have Accept and Cancel Buttons.
- Assign Keyboard Access keys to Buttons.
Explanation / Answer
Public Class Form1
Dim strNumberGuess As String
Dim intNumberGuess As Integer
Dim number As New Random
Dim intNumber As Integer
Dim intCounter As Integer = 1
Dim strGuessNumber As String = "Please enter a number between 0 and 100"
Dim strGuessTitle As String = "Enter Guess Number"
Dim strRangeMessage As String = "Number must be between 0 and 100"
Dim strRangeTitle As String = "Out of Range Number Error"
Dim strNonNumeric As String = "Must enter numeric value between 0 and 100"
Dim strNonNumericTitle As String = "Non Numeric Entry Error"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
intNumber = number.Next(101) 'generate random on application load
txtNumberGuess.Focus()
End Sub
Private Sub cmdExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExit.Click
Me.Close()
End Sub
Private Sub cmdInputBoxLoopGuess_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdInputBoxLoopGuess.Click
[omitted code]
Private Sub cmdTextLoopGuess_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTextLoopGuess.Click
' intNumber = 50 'test if loop for true condition
strNumberGuess = txtNumberGuess.Text
lblNumber.Text = intNumber.ToString("n0")
If Integer.TryParse(strNumberGuess, intNumberGuess) Then
If intNumberGuess >= 0 And intNumberGuess <= 100 Then
lblUserGuess.Text = intNumberGuess.ToString()
'========================================================
'compare user guess to random number
'========================================================
Do Until intNumberGuess = intNumber Or intCounter = 3 ' 3 limit to prevent an endless loop
If intNumberGuess < intNumber Then
lblAnswer.Text = "too low, try again"
txtNumberGuess.Clear()
txtNumberGuess.Focus()
strNumberGuess = txtNumberGuess.Text
ElseIf intNumberGuess > intNumber Then
lblAnswer.Text = "too high, try again"
txtNumberGuess.Clear()
txtNumberGuess.Focus()
strNumberGuess = txtNumberGuess.Text
End If
intCounter += 1
Loop
lblAnswer.Text = "correct"
lblGuessNumber.Text = intCounter.ToString("n0")
Else
MessageBox.Show(strRangeMessage, strRangeTitle)
txtNumberGuess.Clear()
txtNumberGuess.Focus()
End If
Else
MessageBox.Show(strNonNumeric, strNonNumericTitle)
txtNumberGuess.Clear()
txtNumberGuess.Focus()
End If
End Sub
Private Sub cmdInputBoxIfGuess_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdInputBoxIfGuess.Click
[omitted code]
Private Sub cmdReset_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdReset.Click
txtNumberGuess.Clear()
lblAnswer.Text = String.Empty
lblGuessNumber.Text = String.Empty
lblNumber.Text = String.Empty
lblUserGuess.Text = String.Empty
intCounter = 0
intNumber = number.Next(101)
End Sub
Private Sub cmdTextIfGuess_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTextIfGuess.Click
[omitted code]
End Class
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.