2015-10-08 1 views
1

Je fais un jeu en VB qui permet à l'utilisateur d'essayer de deviner un nombre. L'utilisateur doit deviner le nombre et si elles sont trop élevées ou faibles, l'ordinateur leur dira. Une fois que l'utilisateur a bien compris, l'ordinateur lui indiquera le nombre de passages. J'ai regardé sur ce site Web et beaucoup d'autres pour savoir comment faire fonctionner ma boucle de temps, mais cela m'a rendu confus parce que j'avais plus d'une déclaration. Actuellement, je ne peux pas obtenir l'ordinateur pour dire à l'utilisateur combien de fois ils ont fait et quand ils essaient de deviner le nombre chaque fois qu'il dit trop haut et boucle jusqu'à ce que je mette fin au programme.Randomizing While Loop Game VB

Voici le programme et merci pour toute aide à l'avance.

Sub Main() 

    Dim usersguess, guesstime As Integer 

    Randomize() 

    Dim value As Integer = CInt(Int((20 * Rnd()) + 1)) 

    Console.WriteLine("You have to guess this number.") 

    usersguess = Console.ReadLine() 

    While usersguess < value Then 
     Console.WriteLine("You are wrong. You're to low. Go higher ") 
    End While 
    While usersguess > value 
     Console.WriteLine("Your too high. Go Lower.") 
    End While 

    While usersguess = value 
     Console.WriteLine("Your correct. Well Done") 
    End While 

    Console.WriteLine("You took,{0}", guesstime) 


End Sub 
+2

Y a-t-il vraiment une instruction 'While-Then' dans VB.Net? oo –

Répondre

4

Tout d'abord, vous ne demandez à l'utilisateur une fois entrée - les besoins ReadLine aussi être dans une boucle pour demander des suppositions multiples. En utilisant cette seule boucle, vous pouvez alors utiliser If déclarations pour vérifier la réponse:

usersguess = Console.ReadLine() 
'keep looping until they get the right value 
While userguess <> value 
    'now check how it compares to the random value 
    If usersguess < value Then 
     Console.WriteLine("You are wrong. You're too low. Go higher ") 
    ElseIf usersguess > value Then 
     Console.WriteLine("You're too high. Go Lower.") 
    End If 

    'read another guess 
    usersguess = Console.ReadLine() 
End While 

Console.WriteLine("You're correct. Well Done") 

Je vous recommande également d'allumer Option Strict et Option Explicit pour aider à éliminer toute erreur qui peuvent se glisser, dans ce cas cela signifie que vous devrez convertir explicitement du texte de lecture à un entier:

usersguess = Convert.ToInt32(Console.ReadLine()) 

Notez que cette même échouera si vous ne saisissez pas de numéro ... Je vais laisser comment faire face à cette correctement comme un exercice, mais vous pointera vers Int32.TryParse.

+0

Merci pour cela, mais je dois aussi dire à l'utilisateur combien de fois il a fallu pour trouver la bonne réponse et c'est la partie principale sur ce que je suis coincé – user5423489

0

Vous auriez juste besoin d'un compteur pour le faire.

Sub Main() 
    Dim intAssignedcounter As Int32 = 0 
    Dim usersguess 

    Randomize() 

    Dim value As Integer = 8 'CInt(Int((20 * Rnd()) + 1)) 

    Console.WriteLine("You have to guess this number.") 

    usersguess = Console.ReadLine() 
    'keep looping until they get the right value 
    While usersguess <> value 
     'now check how it compares to the random value 
     If usersguess < value Then 
      intAssignedcounter += 1 
      Console.WriteLine("You are wrong. You're too low. Go higher ") 
     ElseIf usersguess > value Then 
      Console.WriteLine("You're too high. Go Lower.") 
     End If 

     'read another guess 
     usersguess = Console.ReadLine() 


    End While 
    '  Console.WriteLine("You're correct. Well Done") 
    If usersguess = value Then 
     Console.WriteLine("You took,{0}", intAssignedcounter) 
    End If 


    Console.ReadLine() 
+0

Je ne peux pas deviner cela aussi travail que j'ai essayé ce compteur que vous avez mis dans et un compteur normal mais il dit toujours "vous avez pris 1" au lieu de combien ils ont réellement essayé. – user5423489