Link to home
Start Free TrialLog in
Avatar of Kyreece FRANCIS-WHITE
Kyreece FRANCIS-WHITE

asked on

the code doesn't run after after the user input is stored as des

This is the code :

Module Module1

    Dim name As String
    Dim cardn As Integer = 1

    Dim cardNum(3) As String
    Dim cardSuit(3) As String

    Sub Main()
        Dim des As String
        Dim des2 As String


        Console.WriteLine(vbCrLf & "Hello there..." & vbCrLf)

        Console.WriteLine("What is your name ?")
        name = Console.ReadLine()

        Console.WriteLine(vbCrLf & "Hello " & name & ", would you like Today play the card game : Yes/No")
        des = Console.ReadLine()

        If des = "yes" Then
            Do
                Suit()
                cardSuit(0) = Console.ReadLine()
                Number()
                cardNum(0) = Console.ReadLine()

                Suit()
                cardSuit(1) = Console.ReadLine()
                Number()
                cardNum(1) = Console.ReadLine()

                Suit()
                cardSuit(2) = Console.ReadLine()
                Number()
                cardNum(2) = Console.ReadLine()

                Console.WriteLine("Three cards have been generated")


                Console.WriteLine("Okay " & name & ", would you like to compare the cards ? ")
                des2 = Console.ReadLine()

                While des2 = "yes"
                    Comparison()

                    If des2 <> "yes" Then
                        Console.WriteLine("Okay bye " & name)
                        Console.WriteLine("End Program ")
                        Console.ReadLine()
                    End If
                End While
            Loop
        Else
                    Console.WriteLine("Okay bye " & name)
            Console.WriteLine("End Program ")
            Console.ReadLine()

        End If

    End Sub

    Function Suit()



        Dim suitName As String = ""

        Dim suitz As Integer
        Randomize()
        suitz = Int(Rnd() * 4) + 1



        Select Case suitz
            Case 1
                suitName = "Hearts"
            Case 2
                suitName = "Dimonds"
            Case 3
                suitName = "Spades"
            Case 4
                suitName = "Clubs "

        End Select


        Return suitName

    End Function

    Function Number()

        Dim cnum As String

        Dim nums As Integer
        Randomize()
        nums = Int(Rnd() * 13) + 1

        Select Case nums

            Case 1
                cnum = "Ace"
            Case 2
                cnum = "Two "
            Case 3
                cnum = "Three"
            Case 4
                cnum = "Four "
            Case 5
                cnum = "Five "
            Case 6
                cnum = "Six "
            Case 7
                cnum = "Seven "
            Case 8
                cnum = "Eight "
            Case 9
                cnum = "Nine "
            Case 10
                cnum = "Eleven "
            Case 11
                cnum = "Jack "
            Case 12
                cnum = "Queen"
            Case 13
                cnum = "King "


        End Select

        Return cnum

    End Function

    Sub Comparison()

        If cardNum(0) < cardNum(1) & cardNum(2) Then
            Console.WriteLine("The highest avlue card out of the three is : " & cardSuit(0))

        ElseIf cardNum(1) < cardNum(0) & cardNum(2) Then
            Console.WriteLine("The highest avlue card out of the three is : " & cardSuit(1))

        Else
            Console.WriteLine("The highest avlue card out of the three is : " & cardSuit(2))
        End If



    End Sub
End Module


please help
Avatar of Mike Tomlinson
Mike Tomlinson
Flag of United States of America image

We'll, your prompt says "Yes/No", but you're checking against "yes" in the code so it might simply be a case mismatch.

You could change:

    des = Console.ReadLine()

To:

    des = Console.ReadLine()
    des = des.ToLower()

You've got this type of code happening in several places so change accordingly where necessary.
Avatar of Kyreece FRANCIS-WHITE
Kyreece FRANCIS-WHITE

ASKER

Same thing just blank after you input yes. How ever when you type no it does the correct thing outputting the messages that i had set
Module Module1
    Dim name As String
    Dim cardn As Integer = 1
    Dim cardNum(3) As Integer
    Dim Play As Boolean = True
    Dim cardSuit(3) As String

    Sub Main()
        Dim des As String
        Dim des2 As String

        Do While Play = True


            Console.WriteLine(vbCrLf & "Hello there..." & vbCrLf)

            Console.Write("What is your name ?")
            name = Console.ReadLine()

            Console.Write(vbCrLf & "Hello " & name & ", would you like Today play the card game : Yes/No")
            des = Console.ReadLine().ToLower()

            If des = "yes" Then

                Suit()
                cardSuit(0) = Suit()
                Number()


                Suit()
                cardSuit(1) = Suit()
                Number()


                Suit()
                cardSuit(2) = Suit()
                Number()
            End If

            Console.WriteLine("Three cards have been generated")


            Console.WriteLine("Okay " & name & ", would you like to compare the cards ? ")
            des2 = Console.ReadLine().ToLower()

            If des2 = "yes" Then
                Comparison()


            Else
                Console.WriteLine("Okay bye " & name)
                Console.WriteLine("End Program ")
                Console.ReadLine()
                Play = False

            End If
        Loop
    End Sub

    Function Suit()

        Dim suitName As String = ""
        Dim suitz As Integer
        Randomize()
        suitz = Int(Rnd() * 4) + 1
        Select Case suitz
            Case 1
                suitName = "Hearts"
            Case 2
                suitName = "Dimonds"
            Case 3
                suitName = "Spades"
            Case 4
                suitName = "Clubs "

        End Select


        Return suitName

    End Function

    Function Number()

        Dim cnum As String

        Dim nums As Integer
        Randomize()
        nums = Int(Rnd() * 13) + 1


        Return nums

    End Function

    Sub Comparison()

        If cardNum(0) < cardNum(1) & cardNum(2) Then
            Console.WriteLine("The highest value card out of the three is : " & cardSuit(0))

        ElseIf cardNum(1) < cardNum(0) & cardNum(2) Then
            Console.WriteLine("The highest value card out of the three is : " & cardSuit(1))

        ElseIf cardNum(2) < cardNum(1) & cardNum(0) Then
            Console.WriteLine("The highest value card out of the three is : " & cardSuit(2))
        Else
            Console.WriteLine("The Cards are Equal")
        End If

    End Sub
    Sub CardValue(nums)
        Static Dim cnum As String

        Select Case nums
            Case 1
                cnum = "Ace"
            Case 2
                cnum = "Two "
            Case 3
                cnum = "Three"
            Case 4
                cnum = "Four "
            Case 5
                cnum = "Five "
            Case 6
                cnum = "Six "
            Case 7
                cnum = "Seven "
            Case 8
                cnum = "Eight "
            Case 9
                cnum = "Nine "
            Case 10
                cnum = "Eleven "
            Case 11
                cnum = "Jack "
            Case 12
                cnum = "Queen"
            Case 13
                cnum = "King "
        End Select
        Return


    End Sub

End Module

Open in new window


Only use The Suit Name and the String of the Number in the display not in the comparision i.e. is KING > TEN ?? No it's not but 13 is > 10
This question needs an answer!
Become an EE member today
7 DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform.
View membership options
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.