2016-09-20 15 views
0

キーボード入力を使用する単純なロックペーパーはさみゲームを作っています。私は、がんやはさみを書くよりもはさみなどのためにロック2をタイプ1にする方が良いことを認識しましたが、コンソールに1つではなく各プレイヤーが選んだものを最後に書き留めておきます、2,3。現在のコンテキストに名前が存在しません同じクラスでエラーが発生しました

番号を持っている文字列が正しいユーザー入力を取得するときに私は私だけでは取得するには、1つのクラスを使用して、しばらくの初めにRealChoice1RealChoice2を初期化していますが、だから、別の文字列 は、岩の紙やscissors.Howeverなりあなたは彼らがあなたのコードの範囲でどこでも利用できるようにしたい場合はwhileループの外で、あなたの変数を宣言する必要があり、それらの両方

while (true) 
{ 
    string RealChoice2; 
    string RealChoice1; 

    while (true) 
    { 
     var key1 = System.Console.ReadKey(true); 

     if (key1.Key == ConsoleKey.Enter) 
      break; 

     Choice1 += key1.KeyChar; 
    } 


    if (Choice1 == "exit") 
     return (int)ExitCode.UserInputExit; 
    else if (Choice1 != "1" && Choice1 != "2" && Choice1 != "3") 
      { 
       Choice1 = null; 
       Console.WriteLine(""); 
       Console.WriteLine("Please write 1, 2 or 3"); 
      } 
      else if (Choice1 == "1" || Choice1 == "2" || Choice1 == "3") 
       { 
        switch (Convert.ToInt32(Choice1)) 
        { 
         case 1: 
          RealChoice1 = "Rock"; 
          break; 

         case 2: 
          RealChoice1 = "Scissors"; 
          break; 

         case 3: 
          RealChoice1 = "Paper"; 
          break; 
        } 
        break; 
       } 
} //End of player 1 input 


string Choice2 = null; 
Console.WriteLine(""); 
Console.WriteLine("Player2, please type what you choose"); 
//Player2Input: 

while (true) 
{ 
    while (true) 
    { 
     var key2 = System.Console.ReadKey(true); 
     if (key2.Key == ConsoleKey.Enter) 
      break; 

     Choice2 += key2.KeyChar; 
    } 

    if (Choice2 == "exit") 
     return (int)ExitCode.UserInputExit; 
    else if (Choice2 != "1" && Choice2 != "2" && Choice2 != "3") 
     { 
      Choice2 = null; 
      Console.WriteLine(""); 
      Console.WriteLine("Please write 1, 2 or 3"); 
     } 
     else if (Choice2 == "1" || Choice2 == "2" || Choice2 == "3") 
     { 
      switch (Convert.ToInt32(Choice2)) 
      { 
       case 1: 
        RealChoice2 = "Rock"; 
        break; 

       case 2: 
        RealChoice2 = "Scissors"; 
        break; 

       case 3: 
        RealChoice2 = "Paper"; 
        break; 
      } 
      break; 
     } 
} 
+1

関数を小さなものに分割し、異なるスコープの変数を再利用しません。 1つの長い関数で何が間違っているかを見つけることは非常に難しいです。 –

答えて

0

のエラー「の名前は、現在のコンテキスト内に存在しません」。現在、最初のwhileループ内に宣言しているため、2番目のwhileループの内部では使用できません。

+2

これはすぐに問題を解決しますが、OPはコードとグローバル変数を分割する必要があります。それ以外の場合は、予期しない変数値 –

関連する問題