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
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
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
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 TRIALMembers 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.
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.