2016-10-29 8 views
0

これは基本的に私の最初の小さなC#プログラムです。私は "ルール"を構築​​したので、正しい数を推測するのに20回の試行しかありません。私は、この "ルール"を実装するより美しい方法があるのだろうかと思っていました。C#推測ゲームのみのX試行

これは私のコードです:私はいくつかのバグフィックスが行われ、一般的に、コードを少し改善しようとした

 bool run = true; 


     while (run == true) // Main While Schleife 
     { 

      Random rndnr = new Random(); 
      int rnd; 
      rnd = rndnr.Next(1, 100); 
      int guess; 
      int trys; 
      trys = 0; 
      guess = 0; 



      Console.WriteLine("Can you guess my number? I am thinking about a number between 1 and 100!"); 
      guess = Convert.ToInt32(Console.ReadLine()); 
      Console.WriteLine(rnd); 

      while (guess != rnd) 
      { 


       if (trys > 20) 
       { 
        Console.Clear(); 
        Console.WriteLine("You only have 20 trys. You failed! \n"); 
        run = false; 
        Console.WriteLine("Do you wann play again? Press R + Enter to play again!"); 
        string rerun = Console.ReadLine().ToUpper(); 
        if (rerun == "R") 
        { 
         run = true; 
         trys = 0; 
         Console.Clear(); 
         break; 
        } 
        else 
        { 
         run = false; 
         break; 

        } 


       } 





      if (guess > rnd) 
      { 
       Console.WriteLine("My number is lower than" + guess + "\n guess again >>"); 
       guess = Convert.ToInt32(Console.ReadLine()); 

      } 

      if (guess < rnd) 
      { 
       Console.WriteLine("My number is higher than" + guess + "\n guess again >>"); 
       guess = Convert.ToInt32(Console.ReadLine()); 

      } 

      if (guess == rnd) 
      { 

       Console.Write("You guessed right my number is" + rnd + "and you needed " + trys + "trys"); 
       run = false; 
       Console.WriteLine("Do you wann play again? Press R + Enter to play again!"); 
       string rerun = Console.ReadLine().ToUpper(); 

       if (rerun == "R") 
       { 
        run = true; 
        trys = 0; 
        Console.Clear(); 
       } 

       else 
       { 
        run = false; 
        break; 
       } 
      } 


      trys++; 
      } 




     } 
     Console.Clear(); 
     Console.WriteLine("Thanks for palying see you next time!"); 
     Console.ReadLine(); 
    } 
} 
+10

作業コードがあり、改善方法を知りたいのであれば、代わりに[codereview.se]に投稿する必要があります。 – JJJ

+2

20の推測値は1から100の間ではあまりにも多いです。可能な数字のスペースを2で割っているので、 '1 +(log(100)/ log(2) ..単に礼状 – Benj

+0

'rndnr.Next(1、100)'を呼び出す場合は、1と99の間の数字を取得します.1と100ではなく、 'Random'をインスタンス化しないでください。タイトなループで繰り返される数字につながる可能性があります。そのために入るのは良い習慣です。 – Enigmativity

答えて

0

bool run = true; 
    int maxTrys=20; 
    Random random = new Random(); 

    while (run) 
    { 
     int rnd=random.Next(1, 101); 

     Console.WriteLine("Can you guess my number? I am thinking about a number between 1 and 100!"); 
     int trys=0; 
     bool solved=false; 
     while (!solved && trys<maxTrys) 
     { 
      trys++; 
      int guess; 
      bool numericGuess; 
      do { 
       numericGuess=int.TryParse(Console.ReadLine(), out guess); 
       if (!numericGuess) { 
        Console.WriteLine("Please enter a number"); 
       } 
      } while (!numericGuess); 

      if (guess > rnd) 
      { 
       Console.WriteLine(string.Format("My number is lower than {0}\n guess again >>", guess)); 
      } 
      else if (guess < rnd) 
      { 
       Console.WriteLine(string.Format("My number is higher than {0}\n guess again >>", guess)); 
      } 
      else if (guess == rnd) 
      { 
       solved=true; 
       Console.WriteLine(string.Format("You guessed right my number is {0} and you needed {1} trys", rnd, trys)); 
      } 
     } 
     if (!solved) { 
      Console.Clear(); 
      Console.WriteLine(string.Format("You only have {0} trys. You failed! \n", maxTrys)); 
     } 

     Console.WriteLine("Do you wanna play again? Press R + Enter to play again!"); 
     string rerun = Console.ReadLine().ToUpper(); 

     if (!rerun.Equals("R")) 
     { 
      run = false; 
     } 
    } 
    Console.Clear(); 
    Console.WriteLine("Thanks for playing see you next time!"); 
    Console.ReadLine();  
-2
Random r = new Random(); 

      int secretNumber = r.Next(1, 11); 
      int i = 0; 
      int chance = 5; 

      Console.WriteLine("Game: guess number"); 

      while (i < chance) 
      { 
       Console.WriteLine("Your turn"); 

       if (secretNumber == int.Parse(Console.ReadLine())) 
       { 
        Console.WriteLine("You won!"); 
        break; 
       } 

       i++; 
      } 

      if (i == chance) 
      { 
       Console.WriteLine("You lost!"); 
       Console.WriteLine("The secret number is " + secretNumber); 
      } 

簡単な方法