存储字符串,然后使用标签框显示它

时间:2018-10-28 18:18:25

标签: vb.net replace

我正在尝试从输入框中存储字符串,然后在lblbox中用短划线显示该类的for子手游戏。

这些是我正在努力的任务:

  • 编辑程序以允许使用任何长度的秘密单词。

  • 该程序将允许“猜测者”猜测单词长度的2倍。举例来说,“代码”一词将允许总共进行8次猜测。

  • 当用户猜测单词中包含的字母时,程序将:
    计算用户已完成的尝试次数。
    如果猜出了正确的字母,请用正确的字母替换适当的破折号(-)。

  • 正确猜出所有字母后,所有破折号(-)应替换为适当的字母,并出现一个消息框,指出“打Great子手的工作很棒!!”

  • 如果用户无法以允许的猜测量猜测正确的单词;破折号(-)应该用GAME OVER代替!然后会出现一个消息框,提示“抱歉,正确的单词是________”

  • 在第3个标签控件中显示所有不正确的字母猜测将获得2个奖励积分。

  • 由于不允许或计数两次猜测相同错误字母的用户,将额外获得4个额外奖励积分。

这是我的代码:

Dim strSecretWord As String
Dim strLetterGuessed As String
Dim blnDashReplaced As Boolean
Dim intNumberOfRemainingGuesses As Integer = 10
Dim intNumofGuesses As Integer = 0

lblSecretWord.Text = ""
lblNumberOfAttempts.Text = ""

'start game and have 1st user input a 5 letter word that 2nd player needs to guess
strSecretWord = InputBox("Please input a 5 letter word for user to guess:", "Please input secret word.").ToUpper


'displays five dashes for the secret word
lblSecretWord.Text = lblSecretWord.Text & "-----"


'guessing player recieves inputbox to make letter guesses 
MessageBox.Show("The length of the word is 5 letters, you will be given 10 guesses", "10 guesses", MessageBoxButtons.OK)
MessageBox.Show("Player who gets to guess, BE READY!", "Good Luck Guessing", MessageBoxButtons.OK)

'Counts number of attempts player gets (10) and replaces dashes with guessed letter if correct
'If guessed letter was incorrect, user loses a turn
For intNumberofGuesses = 1 To 10
    strLetterGuessed = InputBox("Please guess a letter:", "Letter Guess").ToUpper


    'Uses an IntIndex counter of 0 to 4 to execute 5 times (5 dashes)
    'Also uses the value of intIndex to check each of the 5 locations of the strSecretWord
    For intIndex As Integer = 0 To 4

        'if the user has guessed a correct letter then remove a dash and insert the correct letter guessed
        If strSecretWord.Substring(intIndex, 1) = strLetterGuessed Then
            lblSecretWord.Text = lblSecretWord.Text.Remove(intIndex, 1)
            lblSecretWord.Text = lblSecretWord.Text.Insert(intIndex, strLetterGuessed)
            blnDashReplaced = True
        End If
    Next intIndex

    'If the user guessed a correct letter on their last guess the blnDashReplaced is set and the true condition of the If statement is executed
    If blnDashReplaced = True Then

        'if there are no more dashes, and the game has been solved.
        If lblSecretWord.Text.Contains("-") = False Then
            MessageBox.Show("Great Job playign Hangman!", "Game Over", MessageBoxButtons.OK)
            lblRemainingNumberOfAttempts.Text = ""
            lblNumberOfAttempts.Text = ""
            Exit Sub
        Else
            blnDashReplaced = False
        End If
    Else

    End If
    lblNumberOfAttempts.Text = intNumberofGuesses
    intNumberOfRemainingGuesses = intNumberOfRemainingGuesses - 1
    lblRemainingNumberOfAttempts.Text = intNumberOfRemainingGuesses

Next
lblSecretWord.Text = "GAME OVER!"
MessageBox.Show("Better luck next time. Sorry the correct word was " & strSecretWord & ".", "You Lost", MessageBoxButtons.OK)
lblRemainingNumberOfAttempts.Text = ""
lblNumberOfAttempts.Text = ""

1 个答案:

答案 0 :(得分:0)

我添加了一个列表框以保留猜中的字母。其他评论和解释也符合要求。

Public Class Form3
    'Move this to a class level variable so it can be seen by
    'all the methods in the class
    Private strSecretWord As String

    Private Sub btnStartGame_Click(sender As Object, e As EventArgs) Handles btnStartGame.Click
        Dim strLetterGuessed As String
        Dim blnDashReplaced As Boolean
        Dim intNumberOfRemainingGuesses As Integer
        Dim intNumofGuesses As Integer = 0

        'Display correct number of dashes
        Dim numberOfDashes As Integer = strSecretWord.Length
        'Create a string with correct number of dashes
        'This uses and overload of the String constructor that takes a Char and an integer
        'as arguments and returns a string with that character repeated that number
        'of times. The lower case c following "-" indicates that - is a Char.
        Dim TotalNumofGuesses = numberOfDashes * 2
        lblRemainingNumberOfAttempts.Text = TotalNumofGuesses.ToString
        intNumberOfRemainingGuesses = TotalNumofGuesses
        Dim dashString As String = New String("-"c, numberOfDashes)
        'displays the dashes
        lblSecretWord.Text = dashString

        'guessing player recieves inputbox to make letter guesses 
        'You can use an Interpolated string to display variables in line surrounded by { }.
        'In older versions of VB String.Format() will yield the same result.
        MessageBox.Show($"The length of the word is {numberOfDashes} letters, you will be given {TotalNumofGuesses} guesses", $"{TotalNumofGuesses} guesses", MessageBoxButtons.OK)
        MessageBox.Show("Player who gets to guess, BE READY!", "Good Luck Guessing", MessageBoxButtons.OK)

        'Counts number of attempts player gets and replaces dashes with guessed letter if correct
        'If guessed letter was incorrect, user loses a turn
        For counter = 1 To TotalNumofGuesses
            strLetterGuessed = InputBox("Please guess a letter:", "Letter Guess").ToUpper
            'If lstLettersGuessed.Contains(strLetterGuessed) Then
            If lbxLettersGuessed.Items.Contains(strLetterGuessed) Then
                MessageBox.Show($"{strLetterGuessed} has already been guessed.", "Try Again")
                'need to do this so they are not cheated out of a guess
                TotalNumofGuesses += 1
                Continue For 'Moves to the next iteration of the For
            End If
            lbxLettersGuessed.Items.Add(strLetterGuessed)
            'lstLettersGuessed.Add(strLetterGuessed)
            'Uses an IntIndex counter of 0 to 4 to execute 5 times (5 dashes)
            'Also uses the value of intIndex to check each of the 5 locations of the strSecretWord
            For intIndex As Integer = 0 To numberOfDashes - 1
                'if the user has guessed a correct letter then remove a dash and insert the correct letter guessed
                If strSecretWord.Substring(intIndex, 1) = strLetterGuessed Then
                    lblSecretWord.Text = lblSecretWord.Text.Remove(intIndex, 1)
                    lblSecretWord.Text = lblSecretWord.Text.Insert(intIndex, strLetterGuessed)
                    blnDashReplaced = True
                End If
            Next intIndex

            'If the user guessed a correct letter on their last guess the blnDashReplaced is set and the true condition of the If statement is executed
            If blnDashReplaced = True Then
                'if there are no more dashes, and the game has been solved.
                If lblSecretWord.Text.Contains("-") = False Then
                    MessageBox.Show("Great Job playing Hangman!", "Game Over", MessageBoxButtons.OK)
                    'Do this at start of game, player wants to see final score
                    'lblRemainingNumberOfAttempts.Text = ""
                    'lblNumberOfAttempts.Text = ""
                    Exit Sub
                Else
                    blnDashReplaced = False
                End If
            End If
            'This is a shorter way of incrementing a variable
            intNumofGuesses += 1
            'Can't put an integer into a Text property, it needs a string
            lblNumberOfAttempts.Text = intNumofGuesses.ToString
            'This is a shorter way of decrementing a variable
            intNumberOfRemainingGuesses -= 1
            'Can't put an integer into a Text property, it needs a string
            lblRemainingNumberOfAttempts.Text = intNumberOfRemainingGuesses.ToString

        Next
        lblSecretWord.Text = "GAME OVER!"
        MessageBox.Show("Better luck next time. Sorry the correct word was " & strSecretWord & ".", "You Lost", MessageBoxButtons.OK)
        'Do this at start of game
        'lblRemainingNumberOfAttempts.Text = ""
        'lblNumberOfAttempts.Text = ""
    End Sub

    Private Sub btnSetUp_Click(sender As Object, e As EventArgs) Handles btnSetUp.Click
        lblSecretWord.Text = ""
        lblNumberOfAttempts.Text = "0"
        lblRemainingNumberOfAttempts.Text = "0"
        lbxLettersGuessed.Items.Clear()
        'start game and have 1st user input a 5 letter word that 2nd player needs to guess
        strSecretWord = InputBox("Please input a word for user to guess:", "Please input secret word.").ToUpper
    End Sub
End Class