All pastes #1981626 Raw Edit

Stuff

public text v1 · immutable
#1981626 ·published 2010-11-04 12:50 UTC
rendered paste body
Module Module1

    Dim NewPhrase As String
    Dim PhraseHasBeenSet As Boolean, PhraseGuessed As Boolean
    Dim Choice As Integer, Index As Integer
    Dim IndividualLettersArray(20) As Char, GuessStatusArray(20) As Char, LettersGuessedArray(26) As Char
    Dim NextGuessedLetter As Char
   
    Sub DisplayMenu()
        Console.WriteLine("__________________________________")
        Console.WriteLine("")
        Console.WriteLine("1. SETTER - Makes new word/phrase")
        Console.WriteLine("")
        Console.WriteLine("2. USER - Next letter guess")
        Console.WriteLine("")
        Console.WriteLine("5. End")
        Console.WriteLine("")
    End Sub


    Sub Main()
        PhraseHasBeenSet = False
        Do
            Call DisplayMenu()
            Console.Write("Choice? ")
            Choice = Console.ReadLine

            If Choice = 1 Then
                NewPhrase = GetNewPhrase()
                SetUpGuessStatusArray(NewPhrase, IndividualLettersArray, GuessStatusArray)
                PhraseHasBeenSet = True
            End If


            If Choice = 2 Then
                If PhraseHasBeenSet = True Then
                    DisplayCurrentStatus(Len(NewPhrase), GuessStatusArray)
                    NextGuessedLetter = GetNextLetterGuess()
                    ' is this letter present ?
                    For Index = 1 To Len(NewPhrase)
                        If NextGuessedLetter = IndividualLettersArray(Index) Then
                            GuessStatusArray(Index) = NextGuessedLetter
                        End If
                    Next

                    DisplayCurrentStatus(Len(NewPhrase), GuessStatusArray)
                    PhraseGuessed = AllLettersGuessedCorrectly(GuessStatusArray, NewPhrase, _
                                                                      IndividualLettersArray)
                    If PhraseGuessed = True Then
                        Console.WriteLine("You have guessed correctly")
                    End If
                Else
                    Console.WriteLine("The setter has not specified the word/phrase ..")
                End If
            End If

            If Choice = 5 And PhraseGuessed = False Then
                Console.WriteLine("You have not completed this word/phrase...Press return to exit")
                Console.ReadLine()
            End If

        Loop Until Choice = 5
    End Sub

    Function GetNewPhrase() As String
        Dim PhraseOK As Boolean
        Dim ThisNewPhrase As String

        Do
            Console.Write("Key in the new phrase .. (letters and any Spaces ") : ThisNewPhrase = Console.ReadLine()
            If Len(ThisNewPhrase) < 10 Then
                PhraseOK = False
                Console.WriteLine("Not enough letters ... ")
                GetNewPhrase = ""
                ' possible futher validation check(s)
            Else
                PhraseOK = True
                GetNewPhrase = ThisNewPhrase
            End If
        Loop Until PhraseOK = True

    End Function



    Sub SetUpGuessStatusArray(ByVal NewPhrase As String, ByVal IndividualLettersArray() As Char, _
                                                                  ByVal GuessStatusArray() As Char)
        Dim Position As Integer

        For Position = 1 To Len(NewPhrase)
            IndividualLettersArray(Position) = Mid(NewPhrase, Position, 1)
            If IndividualLettersArray(Position) = " " Then
                GuessStatusArray(Position) = " "
            Else
                GuessStatusArray(Position) = "*"
            End If
        Next
    End Sub

    Sub DisplayCurrentStatus(ByVal PhraseLength As Byte, ByVal GuessStatusArray() As Char)
        Dim Position As Integer

        For Position = 1 To PhraseLength
            Console.Write(GuessStatusArray(Position))
        Next
        Console.WriteLine()
    End Sub


    Function GetNextLetterGuess() As Char
        Dim GuessedLetter As Char

        Console.WriteLine()
        Console.Write("Next guess ? ") : GuessedLetter = Console.ReadLine()
        GetNextLetterGuess = GuessedLetter
    End Function


    Function AllLettersGuessedCorrectly(ByVal GuessStatusArray() As Char, _
                   ByVal NewPhrase As String, ByVal IndividualLettersArray() As Char) As Boolean
        Dim Position As Integer
        Dim MissingLetter As Boolean

        MissingLetter = False
        Position = 1
        Do
            If GuessStatusArray(Position) <> IndividualLettersArray(Position) Then
                MissingLetter = True
            Else
                Position = Position + 1
            End If
        Loop Until MissingLetter = True Or Position = Len(NewPhrase) + 1

        If MissingLetter = False Then
            AllLettersGuessedCorrectly = True
        Else
            AllLettersGuessedCorrectly = False
        End If
    End Function

End Module