2015-10-07 2 views
-3

Je crée un simple jeu d'application de console C# qui crée un nombre aléatoire, puis affiche soit "trop ​​haut", "trop ​​bas" ou "correct", il est alors supposé demander à l'utilisateur d'entrer un autre numéro puis de lui dire que ce nombre soit "trop ​​élevé", "trop ​​bas" ou "correct", une fois le bon nombre deviné, il devrait dire "correct" et ensuite afficher le nombre de suppositions qu'il a fallu pour obtenir le bon nombre (cette partie I ' je ne sais pas comment faire). En plus de cela j'ai créé le code & il vous dira si votre estimation est trop haute ou trop basse, et une fois que vous essayez d'entrer une seconde estimation, il dit automatiquement qu'il est correct. Comment puis-je obtenir le programme de lire plus de suppositions, et comment puis-je afficher le nombre de suppositions?Pourquoi ce programme arrête-t-il de fonctionner après deux suppositions?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace _5.Number_Game 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      double response, guess; 
      Random random = new Random(); 
      int randomNumber = random.Next(1, 101); 
     do 
     { 
      Console.WriteLine("Enter your guess for a random number between 1 & 100"); 
      guess = double.Parse(Console.ReadLine()); 
      if (guess > randomNumber) 
       Console.WriteLine("Too high"); 

      if (guess < randomNumber) 
       Console.WriteLine("Too low"); 

      if (guess == randomNumber) 
       Console.WriteLine("Correct!"); 

      Console.WriteLine("Enter another number"); 

      response = double.Parse(Console.ReadLine()); 
     } 
     while (response <= 1 && response >=100); 
     Console.WriteLine("Correct, Goodbye!"); 
     Console.ReadLine(); 
     } 
    } 
} 
+2

@Spencerstead, apprendre à utiliser le débogueur pour parcourir votre code .. – MethodMan

+0

vous devriez utiliser int au lieu de double. – kame

Répondre

0

Votre « tout en » état est pas juste, il vérifie actuellement si le nombre est dans la plage 1-100 alors qu'il doit vérifier si elle était le bon numéro.

je changerais à:

while(guess != randomNumber); 

ou casser quand il est sur la valeur correcte:

if (guess == randomNumber) 
{ 
    Console.WriteLine("Correct!"); 
    break; 
} 

Je note également que votre valeur « réponse » est actuellement inutile une fois que vous fixer votre algorithme.

0

Vous n'aviez pas besoin de deviner un double car le nombre aléatoire ne génère qu'un nombre entier. Aussi la variable responce est également pas nécessaire, comme la boucle peut être juste en boucle jusqu'à ce que:

while(guess != randomNumber); 

Comme la réponse ci-dessus dit. Si vous souhaitez ajouter un nombre de conjectures que l'utilisateur prend pour deviner le nombre, ajoutez une variable count avant la boucle d'ouverture «do».

int count = 0; 
do 
{ 

Et dans chaque deviner où l'utilisateur ne le devine pas correctement incrémenter le compteur par un, comme ceci:

if (guess > randomNumber) 
{ 
Console.WriteLine("Too high"); 
count += 1; 
} 

if (guess < randomNumber) 
{ 
Console.WriteLine("Too low"); 
count += 1; 
} 

Puis à la fin lorsque l'utilisateur devinera

if (guess == randomNumber) 
{ 
Console.WriteLine("Correct!"); 
Console.WriteLine("You took " + count + "guesses, to guess that number."); 
}