2016-09-30 3 views
0

現在、私は学校で乱数推測ゲームを行っています。これは私の2週間目のプログラミングなので、この課題は私が一番言っても挑戦的でした。私はすべての推測が間違っていると言うだけで、正しい答えを決して特定しないので、私のループがどこかで壊されなければならない(私はそれを見つけることができない!私が何をした??私はあなたが私を助けることを望んでいます:)多くの感謝!Cで番号ゲームを推測する際の問題#

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

namespace Assn3_2 
{ 
class Program 
{ 
    public static int SelectedNumber = 0; 
    public static Random ran = new Random(); 
    public static bool GameOver = false; 
    public static int UserMaxValue = 0; 



    static void Main(string[] args) 
    { 
     int UserNumber; 
     SelectedNumber = ran.Next(0, UserMaxValue); 

     do 
     { 
      Console.WriteLine("What is the maximum number you want to guess from?"); 
      UserMaxValue = Convert.ToInt32(Console.ReadLine()); 

      do 
      { 

       Console.WriteLine("Please make a guess between 1 and {0}", UserMaxValue); 
       UserNumber = Convert.ToInt32(Console.ReadLine()); 
       GuessNumber(UserNumber); 

      } while (GameOver == false); 
     } while (GameOver == false); 
    } 

    public static void GuessNumber(int UserNumber) 

    { 
     int playagain = 0; 

     if (UserNumber < SelectedNumber) 
      Console.WriteLine("Wrong. Please try again."); 
     else if (UserNumber > SelectedNumber) 
      Console.WriteLine("Wrong.Please try again."); 
     else 
     { 
      Console.WriteLine("Correct! The number is {0}. Again? (1 or 2)"); 
      playagain = Convert.ToInt32(Console.ReadLine());; 

      while (playagain != 1 && playagain !=2) 
      { 
       Console.WriteLine("Invalid answer. Again? Y or N"); 
       playagain = Convert.ToInt32(Console.ReadLine()); 
      } 

      if (playagain.Equals(2)) 
       GameOver = true; 

      else 
       SelectedNumber = ran.Next(0, UserMaxValue); 
     } 


    } 
} 


} 
+3

あなたはコードを書きました。今、それをデバッグする時間です。ブレークポイントを設定し、変数を調べ、コードを1行ずつ実行します。 – Plutonix

+0

私はそれが間違って動作している必要がありますね。 –

答えて

1

この:

SelectedNumber = ran.Next(0, UserMaxValue); 

あなたはとても効果的にあなたが非常にランダムではない

SelectNumber = ran.Next(0, 0); 

をやっている、あなたがユーザーにプロンプ​​トを表示前に、これはUserMaxValueの値を記入するために実行、選択肢が1つしかない場合は、0 ...特に1とtの間の推測を許可すると彼は後で提供される最大値。

+0

ありがとうございますMarc B !!私はその変更を行い、 "0"以外の乱数を作成しました! 私の唯一の他の問題は、最初の 'do'ステートメント(最大値を設定)にループする代わりに、同じ値の範囲内でユーザーに推測するように求めることです。誰もそれを変更する方法に関する提案やヒントはありますか? –

+0

@VictoriaNすべてのバグを修正するまでこのQ&Aを繰り返しますか?一度に1つの質問をしてください.... –

+0

これはデバッグサービスではありません。 ** MOST **コード作成の方法を学ぶ上で重要な部分は、デバッグ方法を学ぶことです。自分で自分のことを理解しようとしなくても、何も学ばない。 –