Our VB Hangman game is originated from the paper and pencil guessing game for two or more players. The game starts with one player thinks of a word and the other player tries to guess it by suggesting letters within a certain number of guesses.
The hidden word is represented by a row of dashes, representing each letter of the word. If the player correctly guesses a letter in the word, the other player writes it down in all its correct positions. If the suggested letter does not occur in the word, the other player draws one element of a hanged man figure as a tally mark, starting with the head, following by the body then the arm and so forth.
In addition, the guesser has the option of guessing the whole word when he thinks he has enough clues. If the word is correct, the game is over and the guesser wins. Otherwise, the other player penalizes the guesser by adding an element to the diagram. On the other hand, if the guesser commits enough number of incorrect guesses that allows the opponent to complete the hangman diagram, the game is also over, and the guesser loses. However, the guesser can also win by guessing all the letters or numbers that appear in the word, before the diagram is completed.
In our program, we need to draw a hangman diagram. I suggest you use the Line control to draw the diagram. It is also advisable to convert the Line control into a control array so that we can program it easily using a Loop or the If...Then...Else statement. In addition, we also need to place several Label controls onto the form for the purpose of displaying the letters. These Label controls also need to be converted into a control array and also make invisible at startup or replaying the game. Besides that, we also need to place several Line control below the Label control and make them as a control array and invisible at startup. Last but not least, we also need to design a keyboard by placing 26 command buttons onto the form for the user to choose the alphabet. We follow the design of the standard computer keyboard. The buttons must also be converted to a control array.
Private Sub CmdKey_Click(Index As Integer) Dim myletter, myword As String Dim word(5) As String Dim hit, count As Integer hit = Val(Text1.Text) + 1 count = Val(Text2.Text) + 1 Text1.Text = hit word(0) = "CAT" word(1) = "DESK" word(2) = "WATER" word(3) = "FIRE" word(4) = "ZEBRA" word(5) = "EERIE" myword = alphabet(0).Caption & alphabet(1).Caption & alphabet(2).Caption & alphabet(3).Caption & alphabet(4).Caption & alphabet(5).Caption Select Case Index Case Is = 0 myletter = "A" Case Is = 1 myletter = "B" Case Is = 2 myletter = "C" Case Is = 3 myletter = "D" Case Is = 4 myletter = "E" Case Is = 5 myletter = "F" Case Is = 6 myletter = "G" Case Is = 7 myletter = "H" Case Is = 8 myletter = "I" Case Is = 9 myletter = "J" Case Is = 10 myletter = "K" Case Is = 11 myletter = "L" Case Is = 12 myletter = "M" Case Is = 13 myletter = "N" Case Is = 14 myletter = "O" Case Is = 15 myletter = "P" Case Is = 16 myletter = "Q" Case Is = 17 myletter = "R" Case Is = 18 myletter = "S" Case Is = 19 myletter = "T" Case Is = 20 myletter = "U" Case Is = 21 myletter = "V" Case Is = 22 myletter = "W" Case Is = 23 myletter = "X" Case Is = 24 myletter = "Y" Case Is = 25 myletter = "Z" End Select On Error GoTo error_handler If myletter <> alphabet(0) And myletter <> alphabet(1) And myletter <> alphabet(2) And myletter <> alphabet(3) And myletter <> alphabet(4) And myletter <> alphabet(5) Then count = Val(Text2.Text) + 1 Line1(count).Visible = True Text2.Text = count End If If myletter = alphabet(0) Then alphabet(0).Visible = True End If If myletter = alphabet(1) Then alphabet(1).Visible = True End If If myletter = alphabet(2) Then alphabet(2).Visible = True End If If myletter = alphabet(3) Then alphabet(3).Visible = True End If If myletter = alphabet(4) Then alphabet(4).Visible = True End If If myletter = alphabet(5) Then alphabet(5).Visible = True End If If count > 4 Then MsgBox ("You lost!") If myword = word(0) Then alphabet(0).Visible = True alphabet(1).Visible = True alphabet(2).Visible = True End If If myword = word(1) Then alphabet(0).Visible = True alphabet(1).Visible = True alphabet(2).Visible = True alphabet(3).Visible = True End If If myword = word(2) Then alphabet(0).Visible = True alphabet(1).Visible = True alphabet(2).Visible = True alphabet(3).Visible = True alphabet(4).Visible = True End If If myword = word(3) Then alphabet(0).Visible = True alphabet(1).Visible = True alphabet(2).Visible = True alphabet(3).Visible = True End If If myword = word(4) Then alphabet(0).Visible = True alphabet(1).Visible = True alphabet(2).Visible = True alphabet(3).Visible = True alphabet(4).Visible = True End If If myword = word(5) Then alphabet(0).Visible = True alphabet(1).Visible = True alphabet(2).Visible = True alphabet(3).Visible = True alphabet(4).Visible = True End If End If If count <= 4 Then If myword = word(0) And alphabet(0).Visible = True And alphabet(1).Visible = True And alphabet(2).Visible = True Then MsgBox ("You win!") End If If myword = word(1) And alphabet(0).Visible = True And alphabet(1).Visible = True And alphabet(2).Visible = True And alphabet(3).Visible = True Then MsgBox ("You win!") End If If myword = word(2) And alphabet(0).Visible = True And alphabet(1).Visible = True And alphabet(2).Visible = True And alphabet(3).Visible = True And alphabet(4).Visible = True Then MsgBox ("You win!") End If If myword = word(3) And alphabet(0).Visible = True And alphabet(1).Visible = True And alphabet(2).Visible = True And alphabet(3).Visible = True Then MsgBox ("You win!") End If If myword = word(4) And alphabet(0).Visible = True And alphabet(1).Visible = True And alphabet(2).Visible = True And alphabet(3).Visible = True And alphabet(4).Visible = True Then MsgBox ("You win!") End If If myword = word(5) And alphabet(0).Visible = True And alphabet(1).Visible = True And alphabet(2).Visible = True And alphabet(3).Visible = True And alphabet(4).Visible = True Then MsgBox ("You win!") End If End If error_handler: End Sub Public Sub CmdStart_Click() generate End Sub Sub generate() Dim num, i As Integer Dim myChr(), myword As String Dim word(5) As String Text1.Text = -1 Text2.Text = -1 For i = 0 To 5 Letter(i).Visible = False Next word(0) = "CAT" word(1) = "DESK" word(2) = "WATER" word(3) = "FIRE" word(4) = "ZEBRA" word(5) = "EERIE" For i = 0 To 5 Line1(i).Visible = False Next For i = 0 To 5 alphabet(i).Visible = False alphabet(i).Caption = "" Next Randomize Timer num = Int(Rnd() * 6) myword = word(num) If Len(myword) = 3 Then Letter(0).Visible = True Letter(1).Visible = True Letter(2).Visible = True ElseIf Len(myword) = 4 Then Letter(0).Visible = True Letter(1).Visible = True Letter(2).Visible = True Letter(3).Visible = True ElseIf Len(myword) = 5 Then Letter(0).Visible = True Letter(1).Visible = True Letter(2).Visible = True Letter(3).Visible = True Letter(4).Visible = True End If For i = 0 To Len(myword) - 1 ReDim myChr(i) myChr(i) = Mid(myword, i + 1, 1) alphabet(i) = myChr(i) Next End Sub Public Sub Form_Load() Dim word(4) As String Text1.Text = -1 End Sub Private Sub MenuExit_Click() Unload Me End Sub
Copyright©2008 Dr.Liew Voon Kiong. All rights reserved |Contact|Privacy Policy